Buscar

Slides: Herança e Polimorfismo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 33 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 33 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 33 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Presbiteriana Mackenzie 
Polimorfismo (Herança) 
Profa. Ana Cristina dos Santos 
Faculdade de Computação e Informática 
Linguagem de Programação I 
Conteúdo 
• Orientação a Objetos: 
– Herança 
– Sobrecarga (Overloading ou Overload) 
– Sobrescrita (Overrinding ou Override) 
• Polimorfismo 
• Conversão de tipos de instância (type casting) 
Polimorfismo 2 
Herança 
• Herança é o mecanismo da Programação 
Orientada à Objetos (POO) que permite a 
definição de novas classes a partir de uma já 
existente 
– Entre suas características, podemos destacar: 
• A generalização de características e comportamentos 
de classes irmãs 
• Reutilização de atributos e métodos 
• Isso é possível mesmo quando não se tem acesso ao 
código-fonte da superclasse 
Polimorfismo 3 
Herança 
• O mecanismo de herança sempre envolve dois 
elementos: 
– Superclasse 
• Aquela que representa as características genéricas de 
um conjunto de objetos 
– Subclasse 
• Aquela que estende a superclasse para incluir a 
representação de características específicas de um 
subconjunto desses objetos 
Polimorfismo 4 
Herança 
• Características de herança na linguagem Java: 
– O termo extends é utilizado na declaração de uma 
subclasse para especificar quem é sua superclasse 
• Caso ele seja omitido, a classe Object será assumida 
como a superclasse da nova classe 
– A referência this é utilizada para referir-se ao 
objeto corrente de uma classe 
– A referência super possibilita que atributos e 
métodos da superclasse sejam referenciados pelos 
métodos da subclasse 
Polimorfismo 5 
Herança 
Polimorfismo 6 
Sobrecarga 
– A sobrecarga (overload) é a implementação, em 
uma mesma classe ou em classes ligadas pelo 
mecanismo de herança 
– Suas características são as seguintes: 
• Duas ou mais versões distintas para um mesmo 
método ou construtor 
• Cada versão manifesta comportamentos distintos 
• O que distinguirá cada versão é sua assinatura do 
método, ou seja, seu conjunto de parâmetros 
Polimorfismo 7 
Sobrecarga (Exemplo 01) 
Polimorfismo 8 
Sobrecarga (Exemplo 02) 
Polimorfismo 9 
Sobrescrita 
– A sobrescrita (override) é a implementação de 
métodos em subclasses que possuem o mesmo 
nome e assinatura de métodos de sua superclasse 
– Suas características são as seguintes: 
• Anular o comportamento que o método apresentava 
na superclasse ou acrescentar novas instruções 
• O novo método deve ter: 
– exatamente o mesmo nome daquele que queremos 
sobrescrever 
– a mesma lista de parâmetros (assinatura) 
– o mesmo tipo de retorno 
Polimorfismo 10 
Sobrescrita (Exemplo 03) 
 
Polimorfismo 11 
Polimorfismo 
• Palavra de origem grega que significa muitas 
formas 
– É um mecanismo da POO que possibilita: 
• Que um trecho de código assuma comportamentos 
diferenciados de acordo com o estado do objeto 
• Que os objetos possam ser tratados de forma genérica 
• Que métodos sejam sobrecarregados com o mesmo 
nome e assinaturas diferentes 
12 Polimorfismo 
Polimorfismo 
• Existem duas categorias de polimorfismo: 
– Polimorfismo Universal: 
• Inclusão: ocorre quando uma variável da superclasse 
guarda a referência de um objeto da subclasse; 
• Paramétrico: na linguagem Java é representado pelo 
uso de tipos genéricos. 
– Polimorfismo Ad-Hoc: 
• Coerção: a linguagem de programação é a responsável 
pela coerção de tipos (conversão automática de tipos); 
• Sobrecarga: métodos com o mesmo nome na classe. 
13 Polimorfismo 
Polimorfismo 
• Qual o comportamento dos objetos com o 
polimorfismo? 
– Os objetos de subclasses distintas passam a ser 
vistos como objetos de uma mesma superclasse 
– Isso significa que o método apropriado a ser 
executado será escolhido automaticamente 
baseado na subclasse em que o objeto foi criado 
14 Polimorfismo 
Polimorfismo (Exemplo 04) 
15 Polimorfismo 
Polimorfismo (Exemplo 04) 
16 Polimorfismo 
Polimorfismo (Exemplo 04) 
17 Polimorfismo 
Polimorfismo (Exemplo 04) 
18 Polimorfismo 
• O polimorfismo está no método fala() 
– Note que a classe Animal é a generalização das 
classes Cachorro e Gato, logo todo cachorro é um 
Animal e todo Gato também é um Animal 
– Com isto é possível armazenar a instância do 
objeto Cachorro ou Gato em uma variável do tipo 
Animal e com isto podemos realizar o 
polimorfismo através do método fala() 
Polimorfismo (Exemplo 05) 
19 Polimorfismo 
Polimorfismo (Exemplo 05) 
20 Polimorfismo 
• A classe Veiculo é a superclasse das 
subclasses Onibus e Caminhao 
– Esse exemplo mostra tanto a sobrecarga de 
construtores quanto a sobrecarga de métodos 
– E as classes Onibus e Caminhao, por sua vez, 
ilustraram a sobrescrita de métodos da classe 
Veiculo 
Polimorfismo (Exemplo 05) 
21 Polimorfismo 
● Sobrecarga (construtor) 
● Sobrecarga (método) 
● Sobrescrita 
Conversão de Tipo (Type Casting) 
22 Polimorfismo 
• A operação de cast de objetos é semelhante à 
operação de cast de tipos primitivos 
• A diferença é que: 
– na conversão de tipos primitivos, perdemos 
informação e dizemos ao compilador que 
concordamos 
– na conversão de tipos de instância, corremos o 
risco de causar uma exceção e dizemos ao 
compilador que concordamos com correr esse risco 
Conversão de Tipo (Type Casting) 
23 Polimorfismo 
Conversão de Tipo (Type Casting) 
24 Polimorfismo 
• O type casting aplicado em objetos tem as 
seguintes características: 
– É possível fazer cast de classes desde que estejam 
em uma mesma hierarquia 
– Não podemos fazer cast entre classes "irmãs", tal 
como entre Funcionario e Cliente 
– O cast não representa uma mudança estrutural 
do objeto 
Conversão de Tipo (Type Casting) 
25 Polimorfismo 
• Existem dois tipos de type casting, são eles: 
– Cast up: conversão para classes localizadas nos 
níveis acima da hierarquia 
– Cast down: conversão para classes localizadas nos 
níveis inferiores da hierarquia 
Conversão de Tipo (Type Casting) 
26 Polimorfismo 
• Cast up 
– Com base na hierarquia de classes do diagrama 
abaixo, podemos concluir que: 
• Todo Cliente é uma Pessoa e toda Pessoa é um Object 
Conversão de Tipo (Type Casting) 
27 Polimorfismo 
• Cast up 
– Com base na hierarquia de classes do diagrama 
abaixo, podemos concluir que: 
• Todo Cliente é uma Pessoa e toda Pessoa é um Object 
– Portanto, podemos realizar a operação de cast up, 
visualizando um objeto da classe Cliente como 
Pessoa ou Object, mas o objeto não perderá 
definitivamente suas características de Cliente 
– O cast up pode ser explícito ou automático 
Conversão de Tipo (Exemplo 06) 
28 Polimorfismo 
Conversão de Tipo (Type Casting) 
29 Polimorfismo 
• Cast down 
– A operação de cast down é oposta à operação de 
cast up, isto é, ao invés de generalizarmos um 
objeto vamos especializá-lo 
– Se um objeto é criado como Cliente, e sofre um 
cast up para Pessoa, é possível fazer o cast down 
para voltar a visualizá-lo como Cliente 
Conversão de Tipo (Type Casting) 
30 Polimorfismo 
• Cast down 
– Lembrando que: Todo Cliente é uma Pessoa, mas 
nem toda Pessoa é um Cliente 
Conversão de Tipo (Type Casting) 
31 Polimorfismo 
• Cast down 
– Lembrando que: Todo Cliente é uma Pessoa, mas 
nem toda Pessoa é um Cliente 
– Se um objeto é criado e declarado como Pessoa, 
não é possível fazer o cast down para transformá-
lo em Cliente 
– Quando for possível realizar a operação de cast 
down, deverá ser feita sempre de forma explícita 
Conversão de Tipo (Exemplo 07) 
32 Polimorfismo 
ObrigadaProfa. Ana Cristina dos Santos 
anacristina.santos@mackenzie.br 
33

Outros materiais