ID 119233 Banca FCC Órgão TRF - 4ª REGIÃO Ano 2010 Provas FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário - Tecnologia da Informação Disciplina Engenharia de Software Assuntos Orientação a Objetos Sobre herança na orientação a objetos, é correto afirmar: Alternativas O conjunto de objetos representado por uma subclasse é, em geral, maior que o conjunto de objetos representado por sua superclasse. Cada objeto de subclasse é um objeto de sua subclasse. Um problema com herança é que uma subclasse pode herdar métodos que ela não necessita ou que não deveria ter. Todo relacionamento de classe é um relacionamento de herança. Os objetos de superclasse podem ser tratados como objetos de suas subclasses. Responder Comentários 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ópriosC) 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. Questão muito doida inclusive a assertiva correta (c). Não vejo o problema como de responsabilidade da herança propriamente dito e sim da implementação sendo que as linguagens disponiblizam os modificadores de acesso justamente para isso.