Na programação orientada a objetos existem quatro tipos de p...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a alternativa C. Vamos entender por quê:
Na programação orientada a objetos (POO), o conceito de polimorfismo é fundamental. Polimorfismo permite que uma operação tenha comportamentos diferentes em diferentes contextos. Existem quatro tipos principais de polimorfismo aplicáveis em classes na POO:
- Polimorfismo por Inclusão: Também conhecido como polimorfismo de subtipo ou polimorfismo de herança, ocorre quando um objeto de uma classe derivada pode ser tratado como um objeto de uma classe base.
- Polimorfismo Paramétrico: Utilizado em linguagens que suportam generics ou templates, permite que funções e classes operem com tipos genéricos.
- Polimorfismo por Sobrecarga: Permite que múltiplos métodos com o mesmo nome coexistam, desde que tenham diferentes assinaturas (número ou tipo de parâmetros).
- Polimorfismo por Coerção: Refere-se à conversão automática de tipos de dados em runtime.
Vamos analisar cada alternativa para verificar o motivo da alternativa C ser a correta e as demais serem incorretas:
Alternativa A: Esta alternativa menciona Hierárquico e Procedural, que não são tipos de polimorfismo em POO. O termo "Procedural" é utilizado em outro paradigma de programação e "Hierárquico" não é reconhecido como tipo de polimorfismo.
Alternativa B: Termos como Incursivo e Exclusivo não são reconhecidos como tipos de polimorfismo. Além disso, "Herdado" e "Implementado" não são termos adequados no contexto de polimorfismo.
Alternativa C: Está correta, pois lista os tipos de polimorfismo válidos em POO: Inclusão, Paramétrico, Sobrecarga e Coerção.
Alternativa D: Menciona "Procedural" e "Hierárquico", que não são tipos de polimorfismo em POO. "Implementado" também não se encaixa no contexto correto de polimorfismo.
Alternativa E: Embora mencione "Sobrecarga" e "Coerção" corretamente, inclui "Herdado" e "Implementado", que não são tipos de polimorfismo.
Portanto, a alternativa correta é a alternativa C, que lista corretamente os tipos de polimorfismo reconhecidos na POO.
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
Polimorfismo Paramétrico
No polimorfismo paramétrico, um mesmo objeto pode ser utilizado uniformemente como parâmetro em diferentes contextos sem necessidade de alterações. Um método que exibe polimorfismo paramétrico (também chamada de método genérico) permite que o tipo do seu argumento seja determinado por um parâmetro de tipo implícito ou explícito, executando uma mesma operação, independente do tipo do argumento. O PHP não requer (ou suporta) a definição de tipo explícita na declaração de variáveis: o tipo de uma variável é determinado pelo * contexto em que a variável é utilizada. Isto significa que, se você atribuir um valor string para a variável $var , $var se torna uma string. * Se você então atribuir um valor inteiro para $var , ela se torna um inteiro. Por isso o PHP não adota este tipo de polimorfismo, pois não possui parâmetros genéricos.
[editar] Polimorfismo por Inclusão
No polimosfismo por inclusão um objeto pode ser visto como pertencendo a diferentes classes que não precisam ser disjuntas. O PHP adota esse tipo de polimorfismo, pois é uma linguagem orientada a objeto que permite recursos de herança.
O polimorfismo por sobrecarga, no qual mais de um método tem o mesmo nome, mas assinaturas diferentes, não é suportado pelo PHP. (Ver exemplo contextualizado em anexo.)
[editar] Polimorfismo por Coerção
O PHP também suporta o polimorfismo por coerção, no qual a linguagem dispõe de uma operação semântica para converter um argumento para um tipo esperado por uma função, em uma situação que de outra forma resultaria em um erro de tipo.
Fonte:
http://pt.wikipedia.org/wiki/PHP#Polimorfismo_Param.C3.A9trico
https://pt.wikipedia.org/wiki/Polimorfismo#Tipos_de_polimorfismo
Tipos de polimorfismo
Existem quatro tipos de polimorfismo que a linguagem pode ter (atente para o fato de que nem toda linguagem orientada a objeto tem implementado todos os tipos de polimorfismo):
Universal
Inclusão - um ponteiro para classe mãe pode apontar para uma instância de uma classe filha (exemplo em Java: List lista = new LinkedList(); (tipo de polimorfismo mais básico que existe)
Paramétrico - se restringe ao uso de templates (C++, por exemplo) e generics (C#/Java)
Ad-Hoc
Sobrecarga - duas funções/métodos com o mesmo nome mas assinaturas diferentes
Coerção - conversão implícita de tipos sobre os parâmetros de uma função
https://en.wikipedia.org/wiki/Polymorphism_(computer_science)
Polymorphism (computer science)
In programming languages and type theory, polymorphism (from Greek πολύς, polys, "many, much" and μορφή, morphē, "form, shape") is the provision of a singleinterface to entities of different types. A polymorphic type is one whose operations can also be applied to values of some other type, or types. There are several fundamentally different kinds of polymorphism:
Ad hoc polymorphism: when a function denotes different and potentially heterogeneous implementations depending on a limited range of individually specified types and combinations. Ad hoc polymorphism is supported in many languages using function overloading.
Parametric polymorphism: when code is written without mention of any specific type and thus can be used transparently with any number of new types. In theobject-oriented programming community, this is often known as generics or generic programming. In the functional programming community, this is often shortened to polymorphism.
Subtyping (also called subtype polymorphism or inclusion polymorphism): when a name denotes instances of many different classes related by some common superclass. In the object-oriented programming community, this is often simply referred to as polymorphism.
Gabarito C
O stipo de polimorfismo:
Inclusão - facilidade de adicionar novas operações às classes
Paramétrico - uso de generics para personalizar tipos consonate demanda da classe
Sobrecarga - overloading é um mesmo metodo poder desempenhar diferentes operações.
Coerção. - overriding é sobrescrita do metodo herdado
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo