Entender o princípio do Polimorfismo; Conhecer Polimorfismo de Sobreposição e de Inclusão;

Documentos relacionados
Programação Orientada a Objetos JAVA - NETBEANS

POLIMORFISMO. Entender o princípio do Polimorfismo; Saber quais são os tipos existentes de Polimorfismo; Conhecer Polimorfismo de Sobrecarga.

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Linguagem de Programação III

Linguagem de Programação I Apresentação da Disciplina

Programação Java (nível intermediário) 4. Polimorfismo

Introdução ao Java. Prof. Herbert Rausch Fernandes

Sobrecarga, Sobreposição e Polimorfismo

Programação Orientada a Objetos JAVA - NETBEANS

Laboratório de programação II

Programação de Computadores - I. Profª Beatriz Profº Israel

Vamos imaginar que fabricamos softwares para serem implantados em brinquedos como: Robôs, Carrinhos e Aviões

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Programação Orientada a Objetos

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Linguagens de Programação Aula 12

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

Conceitos de Programação Orientada a Objetos

Linguagem de Programação III

C com introdução a OO

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Avançando em Java com

Classes e Objetos. Sintaxe de classe em Java

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

O PARADIGMA ORIENTADO POR OBJETOS

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Fundamentos de Orientação à objetos

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Orientação a Objetos AULA 06

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Notas de Aula 04: Herança e polimorfismo.

COMPORTAMENTOS - Observações

Sobreposição de Métodos

Java - Herança e Interface

LINGUAGEM DE PROGRAMAÇÃO

POO e C++: Herança e Polimorfismo

Linguagem de Programação II Herança

Polimorfismo. O que é polimorfismo?

Programação Orientada a Objeto (POO)

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

Aula 9 Herança. Prof. Jefersson Alex dos Santos

Linguagem de Programação III

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Prof: Ricardo Quintão Site:

Programação Orientada a Objetos

Interfaces e Classes Abstratas

ACH2002. Orientação a Objetos

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

1 Introdução e Conceitos básicos

Repetindo mais código?

ORIENTAÇÃO A OBJETOS Histórico:

Computação II Orientação a Objetos

Desenvolvimento Web II

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

Java First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação por Objectos. Java

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

POO29004 Programação Orientada a Objetos

Curso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Visibilidade e Encapsulamento

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Python Orientação a Objetos. Introdução à Programação SI2

Herança Tiago Eugenio de Melo

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Disciplina: Programação Orientada a Objetos

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Programação Orientada a Objetos Introdução a POO

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Programação Orientada a Objeto (POO)

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo

Introdução a orientação a objetos

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

Laboratório de programação II

Computação II (MAB 225)

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

C O N S T R U T O R E S E S O B R E C A R G A P R O F. M E. H É L I O E S P E R I D I Ã O

Programação Orientada a Objetos

Conceitos. Conceitos Básicos do Paradigma de Orientação a Objetos. Conceitos: Objeto. duas pessoas (objetos) o comportamento desta pessoa

Apresentação da Disciplina e Revisão dos Conceitos de Orientação a Objetos

PROGRAMAÇÃO I INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

Programação Orientada a Objetos JAVA - NETBEANS

Aula 15 Modelagem de Classes de Análise. Análise de Sistemas Prof. Filipe Arantes Fernandes

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Notas de Aula 09: Tratamento de exceções

Programação Orientada a Objetos

Transcrição:

POLIMORFISMO

POLIMORFISMO É o último princípio que serve de base para a Programação Orientada a Objeto. Esse princípio também aposta na ideia da reutilização para facilitar o dia a dia da programação. Ele é também bastante importante tanto para o entendimento de programas OO em Java e outras linguagens, como também é um mecanismo bastante sofisticado para permitir a reutilização e flexibilidade durante o desenvolvimento.

POLIMORFISMO Entender o princípio do Polimorfismo; Conhecer Polimorfismo de Sobreposição e de Inclusão;

Qu4m 4 4554? 5er@ m4u cl0ne? 5le é 1gu@l @ m1n, mas sua F05M@ de f@l@r é d1f5r5nt5. POLIMORFISMO Quem é esse? Será meu clone? Ele é igual a min, mas sua FORMA de falar é diferente. Isso é POLIMORFISMO!

POLIMORFISMO o O polimorfismo deriva da palavra polimorfo, que significa multiforme, ou que pode variar a forma. o Para a OO, polimorfismo é a habilidade de objetos de classes diferentes responderem a mesma mensagem de diferentes maneiras. o Ou seja, várias formas de responder à mesma mensagem.

TIPOS DE POLIMORFISMO Polimorfismo de Sobrecarga; Polimorfismo de Sobreposição; Polimorfismo de Inclusão.

POLIMORFISMO DE SOBREPOSIÇÃO Polimorfismo de sobreposição é a redefinição de métodos em classes descendentes. Ou seja, um método de uma classe filha com o mesmo nome de um método de uma classe mãe irá sobrepor esse último. Vejamos o exemplo no slide a seguir.

POLIMORFISMO DE SOBREPOSIÇÃO

POLIMORFISMO DE SOBREPOSIÇÃO Como pode ser observado na hierarquia de classes apresentada, existe: 1. Uma classe A, que implementa um metodox (); 2. Uma classe B, que implementa um método com o mesmo nome; 3. Uma classe C, que implementa um métodoy ().

POLIMORFISMO DE SOBREPOSIÇÃO O que aconteceria se fosse solicitado ao Objeto1 da classe C a execução do metodox()? Conforme você viu nas aulas anteriores sobre Herança, esse método será procurado na hierarquia da classe instanciada pelo Objeto1; Devemos observar que, nesse caso, o métodox () que também é implementado na Classe B, foi encontrado primeiro que o metodox () da Classe A; Nesse caso, o método que de fato será executado será o da Classe B. E nesse caso, o metodox () da Classe A jamais será alcançado, a menos que seja criado um objeto da Classe A. Dizemos então que ocorreu uma SOBREPOSIÇÃO DE MÉTODO ou um POLIMORFISMO DE SOBREPOSIÇÃO; O método X da classe B sobrepôs (ou redefiniu) o método de sua classe mãe.

POLIMORFISMO DE SOBREPOSIÇÃO em java Considere que a classe Brinquedo (usada no exercício anterior) possui como descendentes as classes: Carro; Avião; Barco. Conforme ilustra o slide a seguir.

POLIMORFISMO DE SOBREPOSIÇÃO

POLIMORFISMO DE SOBREPOSIÇÃO Observe que as classes filhas sobrepõem o método mover() da classe Brinquedo. Vejamos então como ficam essas classes codificadas em Java:

POLIMORFISMO DE SOBREPOSIÇÃO

POLIMORFISMO DE SOBREPOSIÇÃO Considerando o método mover() de cada classe filha, como poderíamos chamar o método mover() do brinquedo (classe) correto? Ou seja, como o Controle Remoto saberá que método mover ele deve chamar se ele tem disponível três tipos de mover diferentes (um para cada brinquedo)? Vamos ver inicialmente como fica a implementação do Controle Remoto:

POLIMORFISMO DE SOBREPOSIÇÃO

POLIMORFISMO DE SOBREPOSIÇÃO o Você lembra que na primeira vez que apresentamos esse exemplo dissemos que a única restrição para um controle remoto tão versátil seria que quando criado o controle remoto, ele receberia o tipo de brinquedo que iria acionar em um dado instante? o Pois é, é aí que está o segredo para o controle remoto saber qual deve ser o método mover() que ele deve chamar (CORRER, NAVEGAR ou VOAR); o O método construtor da classe ControleRemoto exige que o controle para ser inicializado receba um parâmetro do tipo Brinquedo;

POLIMORFISMO DE SOBREPOSIÇÃO E isso acontece quando o atributo brinquedo do ControleRemoto recebe b (um objeto do tipo Brinquedo); Então, quando o método mover() da classe ControleRemoto for acionado (isso significa dizer que o botão mover foi apertado), esse faz com que seu atributo brinquedo chame o método mover() correto, dependendo do tipo de Brinquedo que recebeu quando foi instanciado; O próximo exemplo mostra como fica a classe Principal que instancia um objeto controleremoto e um objeto carro para ser controlado automaticamente.

POLIMORFISMO DE SOBREPOSIÇÃO

POLIMORFISMO DE SOBREPOSIÇÃO Observe que criamos um brinquedo do tipo Carro, e quando criamos o ControleRemoto, enviamos esse objeto carro para o objeto controleremoto através da chamada ao seu construtor. Assim, quando acionado o comando controleremoto.mover(), será chamado o método mover() do carro. O resultado será a impressão da palavra: CORRER

POLIMORFISMO DE SOBREPOSIÇÃO - ATIVIDADE Implemente as classes da hierarquia da classe FiguraGeometrica mostrada no próximo slide em Java, aplicando o polimorfismo de sobreposição para o métododesenha(). Em seguida, crie uma classe Principal com um método main que cria um objeto de cada uma das classes e chama seus respectivos métodosdesenha().

POLIMORFISMO DE SOBREPOSIÇÃO - ATIVIDADE

TIPOS DE POLIMORFISMO Polimorfismo de Sobrecarga; Polimorfismo de Sobreposição; Polimorfismo de Inclusão.

POLIMORFISMO DE INCLUSÃO Polimorfismo de inclusão usa a capacidade de substituição da Herança, de uma classe mãe por qualquer classe descendente, para permitir um comportamento polimórfico nos métodos que usam a classe mãe. No exemplo visto na seção anterior, onde criamos um objeto do tipo Carro e outro do tipo ControleRemoto, nós utilizamos o comportamento polimórfico do polimorfismo de inclusão. Fizemos isso quando substituímos a classe Brinquedo (mãe) pela classe Carro (filha) dentro da classe ControleRemoto. Assim, o atributo interno do tipo Brinquedo da classe ControleRemoto pode receber qualquer objeto que seja de uma classe filha de Brinquedo, vejamos o exemplo:

POLIMORFISMO DE INCLUSÃO

POLIMORFISMO DE INCLUSÃO o Observe que a classe ControleRemoto está relacionada com a classe Brinquedo, pois possui um atributo do tipo Brinquedo. o Mas, como as classes Carro, Avião e Barco são descendentes de Brinquedo, elas podem substituir a classe Brinquedo em qualquer método que a utilize. o Nesse caso, isso foi feito explicitamente, através da passagem de um objeto da classe Carro para o método construtor de ControleRemoto. o Caso o programador deseje mudar o controle remoto para interagir com algum outro tipo de brinquedo, bastaria passar um objeto da classe Avião ou Barco na chamada ao construtor da classe ControleRemoto. o A capacidade do objeto (brinq) do tipo Brinquedo da classe ControleRemoto de receber qualquer um objeto de subclasses da classe Brinquedo é que caracteriza o polimorfismo de inclusão.

POLIMORFISMO LEITURA COMPLEMENTAR http://pt.wikipedia.org/wiki/polimorfismo http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/o_que_e_polimorfismo.htm http://www.caelum.com.br/apostila-java-orientacao-objetos/heranca-reescrita-epolimorfismo/

POLIMORFISMO - RESUMO Você aprendeu que, com o polimorfismo, objetos de tipos diferentes podem responder à mesma mensagem (solicitação de método com o mesmo nome) de maneiras diferentes. Você estudou quais são e como funcionam os tipos de polimorfismo desde seus conceitos até sua codificação na linguagem Java. Você viu também diferentes exemplos para ilustrar as diferentes situações na qual o polimorfismo pode ser usado. Fontes: http://www.metropoledigital.ufrn.br/ http://docs.oracle.com/javase/tutorial/

That's all Folks