Ed
há 2 meses
Vamos analisar o problema passo a passo: - Todos os veículos compartilham atributos e métodos comuns (número de rodas, capacidade de carga, ligar/desligar). - Cada tipo de veículo tem particularidades específicas. - Todos os veículos devem obrigatoriamente implementar o contrato de rastreamento (rastreáveis em tempo real, posição no mapa, histórico de rotas). - O sistema deve permitir que novos tipos de veículos também implementem esse contrato de forma uniforme. - É necessário centralizar os atributos e métodos comuns, garantindo que o contrato de rastreamento seja implementado por todos. Analisando as alternativas: a) Usar apenas uma classe abstrata Veículo que reúna atributos, métodos comuns e o contrato de rastreamento: Problema: Em muitas linguagens, uma classe abstrata não pode garantir a implementação de um contrato (interface) de forma flexível, e pode limitar a herança múltipla. b) Usar apenas uma interface Rastreável que defina atributos e métodos concretos: Problema: Interfaces geralmente não definem atributos nem métodos concretos, apenas assinaturas. c) Combinar uma classe abstrata Veículo para atributos e métodos comuns, com uma interface Rastreável para o contrato de rastreamento: Vantagem: Classe abstrata centraliza atributos e métodos comuns; interface garante que todos os veículos implementem o contrato de rastreamento; permite flexibilidade para novos tipos de veículos. d) Criar múltiplas interfaces para cada tipo de veículo, eliminando a classe abstrata: Problema: Perde-se a centralização dos atributos e métodos comuns. e) Criar hierarquia de classes concretas para cada tipo de veículo, sem interfaces ou classes abstratas: Problema: Não garante uniformidade no contrato de rastreamento e dificulta manutenção e extensibilidade. Portanto, a alternativa que melhor atende aos requisitos é: c) Combinar uma classe abstrata Veículo para atributos e métodos comuns, com uma interface Rastreável para o contrato de rastreamento.
Cadastre-se ou realize login