

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Considere que um sistema projetado para gerenciar diferentes tipos de contas bancárias foi desenvolvido considerando os princípios da programação orientada a objeto, e considerando as características a seguir:
▪ Uma classe abstrata Conta, que declara o método calcularTarifa(), sem implementação.
▪ Uma classe ContaCorrente, que herda de Conta e sobrescreve calcularTarifa().
▪ Uma classe ContaPoupanca, que herda de Conta e não sobrescreve calcularTarifa().
▪ Uma interface Tributavel, que declara o método calcularImposto().
▪ A classe ContaCorrente implementa a interface Tributavel.
▪ O sistema utiliza polimorfismo para manipular objetos do tipo Conta por meio de referências da superclasse.
Com base nos princípios da orientação a objetos, marque a alternativa CORRETA.
O sistema está corretamente modelado, pois uma classe concreta pode herdar métodos abstratos sem implementá-los, desde que esses métodos não sejam utilizados em tempo de execução.
A classe ContaPoupanca viola o princípio do polimorfismo, pois não implementa o método abstrato da superclasse, o que caracteriza erro de lógica, mas não de modelagem, conforme o paradigma da orientação a objetos.
A modelagem apresenta inconsistências conceituais, pois uma classe concreta, que herda de uma classe abstrata, deve implementar todos os métodos abstratos, e a implementação de uma interface estabelece um contrato obrigatório.
O uso de uma referência do tipo Conta para apontar para objetos de ContaCorrente elimina a necessidade de sobrescrita de métodos, uma vez que a vinculação ocorre em tempo de compilação, no instante em que é executado.
A implementação da interface Tributavel pela classe ContaCorrente impede que objetos dessa classe sejam tratados polimorficamente como instâncias de Conta, o que garante um nível primário de encapsulamento do código.