Sobre herança na orientação a objetos, é correto afirmar:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: Letra C
Para resolver essa questão, é importante compreender o conceito de herança na programação orientada a objetos. Herança é um mecanismo pelo qual uma classe, chamada de subclasse, pode herdar atributos e métodos de outra classe, conhecida como superclasse. A relação de herança tem como objetivo principal a reutilização de código e a criação de uma estrutura hierárquica de classes.
Com relação à alternativa correta:
Letra C - Um problema com herança é que uma subclasse pode herdar métodos que ela não necessita ou que não deveria ter.
Esta afirmação está correta porque, ao se utilizar a herança em uma hierarquia de classes, a subclasse herda todos os métodos e atributos da superclasse, mesmo aqueles que podem não ser relevantes ou apropriados para ela. Isso pode levar a situações onde a subclasse possui funcionalidades que não irá utilizar, ou pior, que poderiam afetar negativamente seu comportamento ou integridade. Este é um fenômeno conhecido como inchaço de classe ou herança imprópria, e pode dificultar a manutenção e evolução do sistema de software, além de aumentar a possibilidade de erros.
Esta compreensão fundamenta o princípio de design de software conhecido como princípio da substituição de Liskov, que estabelece condições para a criação de hierarquias de herança saudáveis e robustas, evitando-se heranças que violem a semântica dos objetos.
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
B) INCORRETA - Uma subclasse pode ter métodos e tipos de dados próprios
C) CORRETA.
D) INCORRETA - Existem outros tipos de relacionamentos ente classes, por exemplo, associação, agregação, compositção etc.
E) INCORRETA - Não necessariamente, pois, podem haver dados próprios para cada tipo de classe.
a) ERRADA. Não podemos afirmar que em geral acontece o que o item fala.
b) ERRADA. Podemos ter um objeto na subclasse que não é da subclasse e sim da superclasse por herança.
c) ERRADA TAMBÉM. A função primordial da OO é herdar os atributos e métodos das superclasses. Se uma classe filha não necessita de atributos ou métodos da classe pai a modelagem não está feita da melhor maneira, ou seja, ou a classe filha não deveria ser herdada da pai ou os métodos não necessários (como o item fala) não deveria estar implementados na superclasses, pois não são comuns todas as especializações. Agora, dizer que herdar métodos "desnecessários" é um problema da herança e não da modelagem foi demais hein FCC.
d) ERRADA. Há outros tipos de relacionamentos como associações, implementações, agregações, etc.
e) CERTA (ou menos errada). Certa ou menos errada, porque usou o verbo "podem", alguns objetos publics ou protecteds podem ser tratados como das suas subclasses.
A letra A está errada, pois uma classe representa um conjunto de objetos e é composta de um conjunto de métodos e atributos que, em geral, maior que o conjunto de métodos e atributos da Superclasse.
A letra B está incorreta, pois a afirmação correta seria: "Cada objeto de subclasse é um objeto de sua superclasse."
A letra D está incorreta, pois relacionamentos entre classes não são apenas de herança, como o outro colega afirmou acima.
A letra E está incorreta, pois a definição está invertida. O cerro seria: Os objetos da Subclasse podem ser tratados como objetos da Superclasse.
1) Cada PJurídica é uma Pessoa;
2) Cada PFísica é uma Pessoa;
3) Se ocorrer um objeto de cada subclasse teremos 2 objetos Pessoa.
c-
É necessario uso de metricas para verificar o uso de orientação de objetos para rever uso de herança. Para metricas de projeto, DIT (depth of inheritance tree) pode indicar se o uso de herança esta adequado. DIT > 2 indica pouca exploração de orientação a objetos, enquanto que DIT > 5 demonstra projeto muito complexo.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo