LÓGICA DE PROGRAMAÇÃO (JAVA) POLIMORFISMO. Professor Carlos Muniz

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

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Java para Desktop. Programação Orientada à Objetos 2 JSE

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

Polimorfismo. O que é polimorfismo?

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

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

Linguagem de programação Programação Orientada a objetos

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

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

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Unidade: sobrecarga, construtores e herança

POO29004 Programação Orientada a Objetos

Programação Orientada a Objetos (DPADF 0063)

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

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

[Desenvolvimento OO com Java] Classes abstratas e interfaces

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

Linguagem de Programação III

1 Introdução e Conceitos básicos

Linguagem de Programação. Diagrama de classes

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

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

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

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

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

Herança e Propriedades

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

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

POO29004 Programação Orientada a Objetos

Herança e Polimorfismo

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

Linguagem de Programação IV Introdução

Classe Abstrata e Interface

Desenvolvimento OO com Java Classes abstratas e interfaces

Interfaces POO. Prof. Marcio Delamaro

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

Conceitos de Programação Orientada a Objetos

AULA 16 HERANÇA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Unidade 3: Classes em Java Para Programadores C Classes, Objetos e Tratamento de Erros Prof. Daniel Caetano

JAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 28 de setembro de 12

Classes e Objetos. Sintaxe de classe em Java

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

extendsé usado para indicar herança em JAVA

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

PROGRAMAÇÃO I HERANÇA E POLIMORFISMO

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

POO29004 Programação Orientada a Objetos

Declaração de Construtores em Java

Aula 9 POO 1 Polimorfismo. Profa. Elaine Faria UFU

Lição 11 Herança, polimorfismo e interfaces

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

9 Classes Abstractas e Interfaces

package heranca; class Mamifero { public int a; protected int b; int c; private int d;

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

Notas de Aula 09: Tratamento de exceções

Sobrecarga, Sobreposição e Polimorfismo

Vejamos o seguinte exemplo public class Exemplo private int testada = 20; public void testapalavra(int testada) JOptionPane.showMessageDialog(null,"Pa

Laboratório de programação II

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

AULA TEÓRICA 9. Tema 8. Herança (continuação) Ø Sobreposição de métodos. Ø Variáveis e métodos estáticos. Ø Hierarquia de classes.

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

Orientação a Objetos Básica

Orientação a Objetos - Herança

Programação Orientada a Objetos II

6 Polimorfismo. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

4 Conceito de Herança

Orientação a Objetos AULA 09

Transcrição:

LÓGICA DE PROGRAMAÇÃO (JAVA)

Definição Agora que aprendemos os conceitos mais importantes e vimos o uso da Herança em Java, vamos estudar outra características marcante da programação Java e, de uma maneira mais geral, da programação orientada a objetos: o polimorfismo. Com o polimorfismo vamos ter um controle maior sobre as subclasses sem ter que nos preocupar especificamente com cada uma delas, pois cada uma terá autonomia para agir de uma meneira diferente. 2

Definição Traduzindo, do grego, ao pé da letra, polimorfismo significa "muitas formas". Essas formas, em nosso contexto de programação, são as subclasses/objetos criados a partir de uma classe maior, mais geral, ou abstrata. Polimorfismo é a capacidade que o Java nos dá de controlar todas as formas de uma maneira mais simples e geral, sem ter que se preocupar com cada objeto especificamente. Mais uma vez, somente pela definição é muito complicado de entender. 3

Situação 1 de Polimorfismo: Aumento no preço dos carros Vamos pra nossa loja de carros, onde você é o programador Java de lá. Criamos, nesse caso, uma superclasse chamada Carro. E depois criamos várias subclasses, de fuscas, ferraris, gols etc. Imagine que, todo ano, todos na empresa tem um aumento. A Ferrari teve aumento de 5%. o fusca terá aumento de 3% e o gol terá de 1%. 4

Situação 1 de Polimorfismo: Aumento no preço dos carros Vamos pra nossa loja de carros, onde você é o programador Java de lá. Criamos, nesse caso, uma superclasse chamada Carro. E depois criamos várias subclasses, de fuscas, ferraris, gols etc. Imagine que, todo ano, todos na empresa tem um aumento. A Ferrari teve aumento de 5%. o fusca terá aumento de 3% e o gol terá de 1%. 5

Situação 1 de Polimorfismo: Aumento no preço dos carros Note que, embora todos sejam "Carro", cada objeto terá que calcular seu aumento de forma diferente, pois terão diferentes valores de aumento. Como criar, então, um método na superclasse que atenda todas essas necessidades diferentes? Não é na superclasse que se resolve, mas nas subclasses, criando o método 'aumento()' em cada uma. Ou seja, vai criar vários métodos, e para fazer o aumento realmente ocorrer de maneira correta, é só invocar o método do objeto específico. Então: objetoferrari.aumento() é diferente de objetofusca.aumento(). 6

Situação 1 de Polimorfismo: Aumento no preço dos carros Note que usamos o mesmo nome do método para todas as subclasses, porém cada método é diferente um do outro. Isso é o polimorfismo em ação: embora todos os objetos sejam "Carro", eles terão uma forma diferente de agir, pois implementamos os métodos de maneira diferente. Apenas invocamos, e todo objeto sabe exatamente o que fazer. Por isso o nome polimorfismo, pois cada objeto terá sua forma própria de como rodar, pois os métodos 'aumento()' dos objetos são diferentes. 7

Situação 1 de Polimorfismo: Aumento no preço dos carros Outra vantagem do polimorfismo: você já viu que, criando o método aumento() em toda as subclasses, ela agirão de maneira independente da superclasse e diferente de outros objetos. Agora, quando chegar outro carro na sua loja você de adicionar o método aumento(), e terá um novo tipo de objeto, sem grandes alterações no código. 8

Situação 2 de Polimorfismo: animais mugindo, latindo, berrando... Imagine que você é o criador do joguinho Colheita feliz ou Fazenda Feliz (sei lá), onde terá vários bichos nesse jogo. Como você é esperto, vai logo abstrair e criar uma classe "Animal" com as características que todos tem: idade, peso, espécie etc. Porém, nesse game, os animais fazem seu som característico: o cachorro late, o gato mia, o pinto pia, a vaca muge etc. E aí? Como criar um método na superclasse que sirva para todos estes animais? Ora, não cria, pois cada animal age diferente nesse aspecto. 9

Situação 2 de Polimorfismo: animais mugindo, latindo, berrando... Veja, polimorfismo é isso: embora objetos sejam da mesma superclasse, vão agir de maneira diferente em algum aspecto. Ou seja, terão várias(poli) formas diferentes (morfismo). A saída é criar um método chamado 'som()' na superclasse (só o cabeçalho, como veremos nos próximos tutoriais) e em cada subclasse criar um método diferente, que caracterize cada bicho. 10

Situação 2 de Polimorfismo: animais mugindo, latindo, berrando... Veja que se não fizéssemos isso e invocássemos os métodos: vaca.som(), cachorro.som(), gato.som(), todos iriam fazer o mesmo barulho. Com o polimorfismo: vaca.som() faria a vaquinha mugir, cachorro.som() faria o cachorro latir e gato.som() faria o objeto miar. Porém, todos continuam sendo, também, objetos da classe "Animal". 11

Situação 2 de Polimorfismo: animais mugindo, latindo, berrando... E quando chegar mais animais na sua fazenda, adicione o método som() nesse animal, de modo que ele poderá agir conforme suas características. Resumindo: polimorfismo permite que uma mesma superclasse possua subclasses com características - ou formas - diferentes. 12

Exemplos práticos de polimorfismo Por exemplo se você tem uma class Animal sabe que todo animal come, sendo que Cães por exemplo comem ração e Tigres carne. Você pode chamar o método comer nessas 2 classes mesmo sabendo que elas se comportam diferentemente. 13

Exemplos práticos de polimorfismo public class Animal { public void comer() { System.out.println( "Animal Comendo..." ); public class Cao extends Animal { public void comer() { System.out.println( "Cão Comendo..." ); public class Tigre extends Animal { public void comer() { System.out.println( "Tirgre Comendo..." ); 14

Exemplos práticos de polimorfismo No caso a sua chamado de método polimorfico ficaria assim public class Test { public void fazeranimalcomer( Animal animal ) { animal.comer(); public static void main( String[] args ) { Test t = new Test(); t.fazeranimalcomer( new Animal() ); t.fazeranimalcomer( new Cao() ); t.fazeranimalcomer( new Trigre() ); você vai notar que cada chamada vai fazer uma coisa diferente, porem como existe herança entre as classes todos os método vao funcionar, porque são do tipo do mais genérico (Animal) ou são filhos do mais genérico. 15