Download - POO - Aula 10 - Polimorfismo
![Page 1: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/1.jpg)
Polimorfismo
Universidade Federal de SergipeDepartamento de ComputaçãoProgramação Orientada a Objetos
Última Atualização em Novembro de 2011
Felipe J. R. Vieira
![Page 2: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/2.jpg)
2
Recapitulando
103403 – Programação Orientada a Objetos
![Page 3: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/3.jpg)
3103403 – Programação Orientada a Objetos
Sumário
➢ Polimorfismo.
![Page 4: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/4.jpg)
4
Polimorfismo
103403 – Programação Orientada a Objetos
➢ Na herança, vimos que todo Gerente é um Funcionario, pois é uma extensão deste.
➢ Podemos nos referir a um Gerente como sendo um Funcionario.
➢ Pois Gerente é um Funcionario. Essa é a semântica da herança.
![Page 5: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/5.jpg)
5
Polimorfismo
103403 – Programação Orientada a Objetos
➢ Na herança, vimos que todo Gerente é um Funcionario, pois é uma extensão deste.
➢ Podemos nos referir a um Gerente como sendo um Funcionario.
➢ Pois Gerente é um Funcionario. Essa é a semântica da herança.
![Page 6: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/6.jpg)
6
Polimorfismo
103403 – Programação Orientada a Objetos
➢ Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas;
➢ O polimorfismo permite programar no geral em vez de programar no específico.
![Page 7: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/7.jpg)
7
Polimorfismo
103403 – Programação Orientada a Objetos
➢ É a capacidade de tipos mais abstratos representarem comportamentos de tipos mais específicos;
➢ Com polimorfismo, podemos projetar e implementar sistemas que são facilmente extensíveis – novas classes podem ser adicionadas a partes gerais do programa com pouca ou nenhuma modificação, contanto que as novas classes façam parte da hierarquia de herança que o programa processa genericamente.
![Page 8: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/8.jpg)
8
Polimorfismo
103403 – Programação Orientada a Objetos
➢ A ideia de polimorfismo só tem sentindo com a existência do paradigma de herança;
➢ Consiste na possibilidade de que uma referência a objetos de uma classe possa se conectar também com objetos descendentes desta.
![Page 9: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/9.jpg)
9
Polimorfismo
103403 – Programação Orientada a Objetos
Funcionário Gerente
![Page 10: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/10.jpg)
10
Polimorfismo
103403 – Programação Orientada a Objetos
➢ Deve-se deixar claro que podemos acessar apenas as operações pertencentes a classe associada a referência. O resto das operações do objeto não são acessíveis através desta referência.
![Page 11: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/11.jpg)
11
Outros Tipos de Polimorfismo
● Tipo Genérico - ao definir um elemento(que pode ser uma classe, um método ou alguma outra estrutura da linguagem), a definição do tipo sozinha ela é incompleta, ela precisa parametrizar este tipo, ou seja, teoricamente não existiria o tipo sozinho, o que sim existe e o tipo de alguma coisa de alguma coisa;
Polimorfismo
public class Agenda {
public static void main(String[] args){ArrayList<Pessoa> objetos = new ArrayList<Pessoa>();Objetos.add(new Empregado());Objetos.add(new Pessoa());
}}
![Page 12: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/12.jpg)
12
Tipos de Polimorfismo Estáticos
● Polimorfismo estático normalmente é entendido como uma característica da linguagem e não como uma forma de polimorfismo.
● Sobrecarga - é a capacidade de poder definir dois, ou mais métodos, numa mesma classe com o mesmo nome;
Polimorfismo
public class Agenda {
public int calculaIdade (int ano , int mes, int dia);public int calculaIdade ( Date data ) ;public int calculaIdade ( Calendar data ) ;
}
![Page 13: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/13.jpg)
13
Tipos de Polimorfismo Estáticos
● Sobrescrita - é a capacidade de poder redefinir a implementação de um método que já foi definido e implementado em uma classe superior na hierarquia de herança.
Polimorfismo
public class Somador { public int calculaSoma ( int inicio, int fim ){
int soma = 0 ;for ( int i = inicio ; i <= fim ; i++ ){
soma += i;} return soma;
}}public class SomadorInteligente extends Somador {
public int calculaSoma ( int inicio, int fim ){int umAteInicio = inicio ( inicio+ 1 ) / 2 ;int umAteFim = fim ( fim+ 1 ) / 2 ;return umAteFim – umAteInicio;
}}
![Page 14: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/14.jpg)
14
Tipos de Polimorfismo Estáticos
● Sombreamento - é a capacidade de poder definir duas, ou mais, variáveis com o mesmo nome em escopos diferentes;
Polimorfismo
public class Teste {String nome; // variável no escopo “classe”public void setName ( String nome ){ // variável no escopo “método”
this .nome = nome;}
}
● Auto-boxing e Auto-unboxing - Em algumas situações é necessário converter valores primitivos para objetos. Isso é conhecido como boxing (colocar em caixas). O processo inverso é chamado unboxing (retirar das caixas). Auto-boxing e Auto-umboxing acontece quando próprio compilador faz essa operação.
![Page 15: POO - Aula 10 - Polimorfismo](https://reader036.vdocuments.net/reader036/viewer/2022080212/5595a1aa1a28ab19448b4794/html5/thumbnails/15.jpg)
15
Referências
103403 – Programação Orientada a Objetos
➢ Java: Como Programar 6ª Edição.
➢ Material da Caelum.