poo - aula 10 - polimorfismo

15
Polimorfismo Universidade Federal de Sergipe Departamento de Computação Programação Orientada a Objetos Última Atualização em Novembro de 2011 Felipe J. R. Vieira

Upload: felipe-j-r-vieira

Post on 03-Jul-2015

5.510 views

Category:

Documents


3 download

DESCRIPTION

Aula 10 da disciplina de Programação Orientada a Objetos, ministrada pelo Departamento de Computação da Universidade Federal de Sergipe. Apresenta os conceitos sobre Polimorfismo.

TRANSCRIPT

Page 1: POO - Aula 10 - Polimorfismo

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

2

Recapitulando

103403 – Programação Orientada a Objetos

Page 3: POO - Aula 10 - Polimorfismo

3103403 – Programação Orientada a Objetos

Sumário

➢ Polimorfismo.

Page 4: POO - Aula 10 - Polimorfismo

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

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

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

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

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

9

Polimorfismo

103403 – Programação Orientada a Objetos

Funcionário Gerente

Page 10: POO - Aula 10 - Polimorfismo

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

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

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

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

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

15

Referências

103403 – Programação Orientada a Objetos

➢ Java: Como Programar 6ª Edição.

➢ Material da Caelum.