Um antigo sistema usado pelo Ipea para produzir gráficos soc...

Próximas questões
Com base no mesmo assunto
Q2383092 Engenharia de Software
Um antigo sistema usado pelo Ipea para produzir gráficos socioeconômicos dos estados e municípios brasileiros é composto pelas seguintes classes:

Imagem associada para resolução da questão

Esse design original atendia bem às necessidades de geração de gráficos. Com o passar do tempo, entretanto, surgiram novas demandas sobre dados dos municípios, o que obrigou os desenvolvedores a inserir novas operações na classe Municipio. Essas mudanças produziram as seguintes alterações no design original:

Imagem associada para resolução da questão

Essas alterações trariam alguns efeitos colaterais, pois, como o acesso aos dados de um município é feito por meio de operações definidas na classe Estado, quanto mais solicitações sobre os municípios houver, maior será o número de operações inseridas na classe Estado, com o único intuito de prover dados sobre os municípios localizados nesses estados. Sendo assim, os desenvolvedores do Ipea refatoraram o código existente e produziram o seguinte design:

Imagem associada para resolução da questão

A partir de então, as solicitações de dados sobre os municípios para a geração de gráficos passaram a ser feitas diretamente aos objetos da classe Municipio, sem a intermediação da classe Estado.
Que refatoração foi aplicada?
Alternativas

Comentários

Veja os comentários dos nossos alunos

Remove Middle Man = Remover intermediário

Lembrei daquele ataque de segurança da informação: "Man-In-The-Middle (MITM)", onde o atacante é o "INTERMEDIÁRIO", entre a vítima e o servidor web.

A. Hide Delegate: Quando uma classe chama um método de outra classe, e essa chamada é usada externamente, pode ser útil esconder essa relação delegando a chamada diretamente para a classe chamada. Isso ajuda a simplificar a interface da classe principal e a reduzir o acoplamento entre as classes.

B. Remove Middle Man: Às vezes, uma classe serve apenas como um intermediário para passar chamadas para outra classe. Nesses casos, é mais eficiente e claro chamar diretamente a classe final, eliminando assim o intermediário desnecessário.

C. Replace Data Value with Object: Quando um dado simples precisa ser estendido com comportamento ou outras informações, é útil substituir esse dado por um objeto. Isso permite que você adicione métodos e campos à medida que a complexidade do dado aumenta.

D. Duplicate Observed Data: Esse é um padrão onde os dados são duplicados em várias classes para reduzir a necessidade de comunicação entre elas. Isso pode melhorar o desempenho, mas também pode aumentar a complexidade do código e a necessidade de manter os dados sincronizados.

E. Decomposing Methods: Refere-se a dividir um método grande e complexo em métodos menores e mais simples. Isso torna o código mais legível, fácil de entender e manter. Cada método menor pode se concentrar em uma única tarefa, facilitando a compreensão do funcionamento do método como um todo.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo