Na Análise Orientada a Objetos, o princípio pelo qual duas o...

Próximas questões
Com base no mesmo assunto
Q57075 Engenharia de Software
Na Análise Orientada a Objetos, o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse é denominado:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é: D - polimorfismo

Vamos começar explicando o conceito de polimorfismo, pois ele é central para entender por que essa é a resposta correta.

Em Análise Orientada a Objetos, o polimorfismo é um princípio que permite que classes derivadas de uma mesma superclasse possam invocar métodos que têm a mesma assinatura, mas comportamentos diferentes. Isso é possível porque, através da herança, cada classe filha pode sobrescrever os métodos da classe pai, adaptando-os às suas necessidades específicas.

O polimorfismo é frequentemente implementado com o uso de referências de objetos do tipo da superclasse, permitindo que o método apropriado seja chamado conforme o tipo real do objeto em tempo de execução. Isso facilita a construção de sistemas mais flexíveis e extensíveis.

Agora, vamos analisar as alternativas incorretas:

A - encapsulamento: Encapsulamento é o princípio de ocultar os detalhes internos de uma classe e expor apenas o que é necessário através de métodos públicos. Ele ajuda a proteger o estado interno do objeto e facilita a manutenção do código, mas não está diretamente relacionado à capacidade de invocar métodos com a mesma assinatura em classes derivadas.

B - independência: Este termo não é comumente usado em Análise Orientada a Objetos como um dos princípios fundamentais. Pode se referir à ideia de modularidade e baixo acoplamento, mas não se relaciona com a invocação de métodos com comportamentos distintos em classes derivadas.

C - modularidade: Modularidade refere-se à divisão de um sistema em partes menores e mais manejáveis. Embora importante, esse conceito está mais ligado à organização e estrutura do código do que à capacidade específica de invocar métodos com a mesma assinatura mas comportamentos diferentes.

E - herança: Herança é o mecanismo pelo qual uma classe pode derivar de outra, herdando seus métodos e atributos. Embora a herança seja um pré-requisito para o polimorfismo, ela própria não garante a invocação de métodos com comportamentos diferentes. O polimorfismo depende da herança, mas é um conceito mais específico.

Portanto, a questão aborda o tema do polimorfismo e exige que o aluno entenda não apenas o conceito de herança, mas também como as classes derivadas podem implementar métodos de maneira personalizada, usando uma referência ao tipo da superclasse para invocar esses métodos.

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

 Trata-se de polimorfismo ou sobreposição. 

Se fosse com assinaturas diferentes, seria sobrecarga

Encapsulamento vem de encapsular, que em programação orientada a objetos significa separar o programa em partes, o mais isoladas possível. A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações.
Uma grande vantagem do encapsulamento é que toda parte encapsulada pode ser modificada sem que os usuários da classe em questão sejam afetados. O encapsulamento protege o acesso direto (referência) aos atributos de uma instância fora da classe onde estes foram declarados. Esta proteção consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe. Depois devem ser criados métodos para manipular de forma indireta os atributos da classe.
Modularidade
Programação modular denota a construção de programas pela composição de partes pequenas para formar partes maiores. As partes são chamadas módulos. A programação com módulos também pode ser chamada `programming in the large', contrastando com `programming in the small'. Esta técnica de programação é baseada no princípio filosófico `Dividir para conquistar', o qual sugere que um problema complexo seja dividido em subproblemas que possam ser resolvidos separadamente.
Polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam. Assim, é possível tratar vários tipos de maneira homogênea (através da interface do tipo mais abstrato). O termo polimorfismo é originário do grego e significa "muitas formas" (poli = muitas, morphos = formas).
O polimorfismo é caracterizado quando duas ou mais classes distintas tem métodos de mesmo nome, de forma que uma função possa utilizar um objeto de qualquer uma das classes polimórficas, sem necessidade de tratar de forma diferenciada conforme a classe do objeto.

Herança (ou generalização)
É o mecanismo pelo qual uma classe (sub-classe) pode estender outra classe (super-classe), aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos). Um exemplo de herança: Mamífero é super-classe de Humano. Ou seja, um Humano é um mamífero. Há herança múltipla quando uma sub-classe possui mais de uma super-classe. Essa relação é normalmente chamada de relação "é um".

Polimorfismo envolve em um mesmo metodo poder assumir comportamentos distintos de acordo com os parametros passados. pode ser overloading e overriding

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo