← Questões de Engenharia de Software

Engenharia de Software · FGV · 2023

Questão comentada de Engenharia de Software

O analista André é o arquiteto da aplicação web TCEDash. O componente Board, da TCEDash, apresenta ao usuário indicadores visuais e manipuláveis, baseados em informações contidas no banco de dados da aplicação. O Board instancia um novo objeto para cada indicador apresentado ao usuário. Sabendo que determinado subconjunto de informações se repete em todos os indicadores, André aplicou no componente Board o padrão de projeto estrutural do Gang Of Four (GoF), que otimiza a alocação de objetos na memória RAM, mediante o compartilhamento de atributos comuns entre os objetos. André aplicou no componente Board o padrão do GoF:

Gabarito: D

Quando voce ve um sistema criando muitos objetos muito parecidos e percebe que parte deles se repete em todos, a ideia do GoF é economizar memória sem perder flexibilidade. Em vez de guardar uma cópia completa de cada objeto, o projeto separa o que é intrínseco, isto é, o que pode ser compartilhado, do que é extrínseco, que varia de instância para instância. Assim, vários objetos podem reaproveitar o mesmo “miolo” comum, mudando apenas o que for necessário. Esse é exatamente o caso descrito no enunciado: o componente Board cria um novo objeto para cada indicador, mas existe um subconjunto de informações repetido em todos eles. O padrão que atende a essa necessidade é o Flyweight, cujo objetivo é reduzir o uso de memória por meio do compartilhamento de estado comum entre objetos de mesma natureza. Na prática, o Flyweight aparece muito em cenários com grande volume de entidades repetidas, como caracteres de um editor de texto, peças em jogos, árvores em interfaces gráficas ou elementos visuais com atributos compartilháveis. A lógica é simples e elegante: se algo é igual para muitos, não faz sentido duplicar isso mil vezes. Por isso o gabarito é a letra D. As demais alternativas representam outros tipos de padrão estrutural, mas nenhuma delas tem como foco principal a economia de RAM pelo compartilhamento de atributos comuns entre objetos.

Continue treinando

Questões relacionadas