Sobre herança na orientação a objetos, é correto afirmar:

Próximas questões
Com base no mesmo assunto
Q39742 Engenharia de Software
Sobre herança na orientação a objetos, é correto afirmar:
Alternativas

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

A) INCORRETA - A assertiva correta diria que o conjunto de objetos representado por uma subclasse é, em geral, MENOR que o conjunto de objetos representado por sua superclasse.

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.
Para mim o gabarito está errado, pois:
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.
Acho que a menos errada é a Letra C, pois como o colega falou, é um problema de projeto e não de herança.
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.
A herança é um tipo de relacionamento "é um" logo, considerando o exemplo clássico de hierarquia de Pessoa e PJurídica e PFísica, temos que:
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