[Questão inédita] Um programador está trabalhando em um pro...

Próximas questões
Com base no mesmo assunto
Q2486319 Programação
[Questão inédita] Um programador está trabalhando em um projeto de controle e transporte de cargas. No contexto inicial, a aplicação trata apenas transportes do modal rodoviário. À medida que o sistema cresce, observa-se a necessidade de incluir mais modais de transporte, como hidroviário e aéreo. Apenas uma classe, “Automóvel”, havia sido implementada para lidar com os transportes necessários.
Considerando a necessidade de adicionar mais meios de transporte ao sistema e o conhecimento sobre padrões de projeto, o mais adequado para o programador seria:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Existem três tipos de padrões de projeto: criacionais, estruturais e comportamentais. Os padrões criacionais fornecem mecanismos para abstrair classes, ou seja, generalizar suas funcionalidades e reutilizar seu código. Os padrões estruturais estabelecem estruturas e composições dentro de objetos, criando partes menores dentro de partes maiores de outras classes. Já os padrões comportamentais definem a responsabilidade de cada objeto na resolução de problemas, geralmente delegando funções a partes individuais. No caso da questão, trata-se de um padrão criacional, em que a abordagem mais adequada seria utilizar um padrão como o Factory para abstrair a classe Automóvel em uma classe mais geral, como a classe Veículo. Assim, outras classes inseridas no projeto seriam especializações da classe Automóvel. GABARITO: D

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

A "graça" da programação orientada a objetos é a facilidade de reusar código através da herança e sobrescrita de métodos.

por que nao pod ser composite?

Para resolver a necessidade de adicionar mais meios de transporte ao sistema de forma organizada e extensível, a adoção de um padrão de projeto criacional é a abordagem mais adequada. Isso permite abstrair a classe "Automóvel" e criar uma hierarquia de classes que representam diferentes meios de transporte, mantendo a flexibilidade e facilitando a manutenção e a extensão do sistema. Portanto, a resposta correta é:

**D) Empregar um padrão de projeto criacional para abstrair a classe “Automóvel” e possibilitar a criação de outras classes com propriedades semelhantes.**

Utilizando um padrão de projeto criacional como o Factory Method ou Abstract Factory, o programador pode definir uma interface ou classe abstrata para o transporte e, a partir dela, criar subclasses específicas para cada modal (rodoviário, hidroviário, aéreo, etc.). Isso facilita a adição de novos tipos de transporte sem alterar o código existente, respeitando o princípio aberto/fechado (Open/Closed Principle) da programação orientada a objetos.

Explicações adicionais:

- **A) Reescrever a aplicação para abranger mais tipos de meios de transporte.**

- Reescrever a aplicação não é a abordagem mais eficiente ou sustentável, especialmente para grandes sistemas em funcionamento.

- **B) Utilizar-se de um padrão de projeto comportamental. Uma vez que o sistema já se encontra em pleno funcionamento, tratar, na classe “Automóvel”, os diferentes tipos de meios de transporte.**

- Padrões comportamentais não são adequados para esta situação, pois não lidam com a criação de objetos de forma flexível e extensível.

- **C) Adotar um padrão de projeto estrutural para dividir a classe “Automóvel” em componentes menores, de modo a englobar diferentes tipos de meios de transporte.**

- Padrões estruturais são mais adequados para organizar e relacionar classes e objetos existentes de forma mais eficiente, não para criar novos tipos de objetos.

- **E) Nenhuma das alternativas anteriores.**

- A alternativa D é correta, portanto, esta opção é inválida.

Empregar um padrão de projeto criacional é a melhor prática neste caso para assegurar que o sistema seja fácil de manter e expandir conforme novos requisitos surgem.

Clique para visualizar este comentário

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