Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour ▐ Polimorfismo ▐ Exemplo ▐ Classes Abstratas.

Slides:



Advertisements
Apresentações semelhantes
Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Advertisements

Herança, Polimorfismo e Classes Abstratas em Java
Java – Classes Abstratas
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Generalização, Especialização e Conceitos
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Iniciação ao Java – Márcio F. Campos
Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.
Polimorfismo e Classes Abstratas Profa
Expressões, controle de fluxo, wrappers e strings Profa
Vector e Estruturas Encadeadas Profa
Herança Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel e Júlio Machado) Packages (bibliotecas de classes) Atributos.
Linguagem de Programação II
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Herança e Polimorfismo
Orientação a Objetos Curso de Férias 2011
Polimorfismo em C#.
Programação Orientada a Objetos com Java
JAVA Orientação a Objetos
Programação orientada a objetos: Polimorfismo
Sobrecarga e Encapsulamento
Interfaces.
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Classes, Objetos, Atributos e Métodos JAVA
Professora Lucélia Oliveira
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 12 – Overloading X Overriding Prof.a.
Programação Orientada à Objetos
Aula prática 14 Orientação a Objetos – C++ Parte 2
Implementação Orientada a Objetos – Aula 03
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Orientação a Objetos usando Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Polimorfismo.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Interfaces POO Avançado.
Classes Abstratas e Interface
Prof.: Bruno Rafael de Oliveira Rodrigues.  Existe para poder servir de molde para outras classes.  Deve ser declarada tal usando-se a palavra chave.
Aula Prática 1 Monitoria IP/CC (~if669). Roteiro 1.Polimorfismo 2.Superclasses Abstratas 3.Dúvidas 4.Exercício.
Herança e Polimorfismos
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Herança Modelagem e Programação Orientada a Objetos
Construtores e Destrutores
Paradigmas da Programação – Semestre 1 – Aula 8 Professor: Eduardo Mantovani )
Bruno Inojosa MCP .NET Framework
Atributos e Métodos Estáticos
Modificadores Programação II.
Herança.
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Prof.: Bruno Rafael de Oliveira Rodrigues. Herança Possibilita a uma classe usar campos ou métodos definidos em outra classe. Assim a classe pai possui.
Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin/ Marcia Bissaco Universidade de Mogi das Cruzes
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
1 Programação – JAVA Unidade - 4 Arrays e Strings Prof. Aparecido V. de Freitas Mestre e Doutorando em Engenharia da Computação pela EPUSP.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Linguagem Java Programação II.
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
1. 2 Programação Orientada a Objetos II Prof. Maurício Rodrigues de Morais
1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais
Classes Abstratas e Interface. 2 Classe Abstrata  Uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos);
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour ▐ Polimorfismo ▐ Exemplo ▐ Classes Abstratas ▐ Exemplo ▐ Exercício Polimorfismo e Classes Abstratas

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Polimorfismo “Polimorfismo é a característica única de linguagens orientadas a objetos que permite que diferentes objetos respondam a mesma mensagem cada um a sua maneira.”

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Polimorfismo ▐ Capacidade de assumir formas diferentes. ▐ Em termos de programação, polimorfismo representa a capacidade de uma única variável chamar métodos diferentes, dependendo do que a variável contém. ▐ Polimorfismo libera o programador de ter que saber a classe específica do objeto que recebe uma mensagem ▐ Forma de escrever programas de forma genérica que permite a manipulação de uma grande variedade de classes.

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Polimorfismo Veiculo Moto som( ) Carro som( ) v.som( ) Chama um dos métodos acima, dependendo do tipo do objeto Veiculo v = new *****(); // Cria objeto v, do tipo Veiculo ▐ Exemplo 1:

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Polimorfismo ▐ Exemplo 2: ■Em uma aplicação temos uma classe Conta, a qual pode ser de três tipos diferentes (subclasses)  ContaCorrente  ContaPoupança  ContaSuper ■Cada tipo de conta possui um método calculaJuros() implementado de formas diferentes. ■Em Java, podemos chamar o método calculaJuros() sobre uma variável conta que será selecionado automaticamente o método correto das subclasses!  double juros = umaconta.calculaJuros();

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Polimorfismo ▐ Aspectos importantes: ■Usa-se uma variável de um tipo único (normalmente do tipo da superclasse) para armazenar objetos variados do tipo das subclasses. ■Envolve o uso automático do objeto armazenado na super-classe para selecionar um método de uma das sub-classes. O tipo do objeto armazenado não é conhecido até a execução do programa. A escolha do método a ser executado é feita dinamicamente.

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Polimorfismo ▐ Polimorfismo é uma das ferramentas mais poderosas da programação orientada a objetos. Mais do que isso, é fundamental para o paradigma de OO. ▐ Exemplo: Animal bicho;// Declara uma variável animal bicho = new Cachorro(“Lessie”); ou Animal bicho = new Cachorro(“Lessie”);

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo public class Animal { private String tipo; public Animal(String tipo1) { tipo = new String(tipo1); } public void show() { System.out.println(“Eu sou um ” + tipo); } // Método a ser implementado nas sub-classes // Cada subclasse irá sobrescrever o método public void sound() { }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo public class Animal { private String tipo; public Animal(String tipo1) { tipo = new String(tipo1); } public void show() { System.out.println( “Eu sou um ” + tipo); } // Método a ser implementado nas sub-classes public void sound() { } public class Cachorro extends Animal { private String nome; // Nome do cachorro private String raça; // Raça do cachorro public Cachorro(String nome1) { // Chama o construtor da classe base super(“Cachorro”’); nome = nome1; // Nome fornecido raça = “Desconhecida”; // Raça default } public Cachorro(String nome1, String raça1) { // Chama o construtor da classe base super(“Cachorro”’); nome = nome1; // Nome fornecido raça =raça1; // Raça fornecida } public void sound() { System.out.println(“Au, au”); }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo public class Animal { private String tipo; public Animal(String tipo1) { tipo = new String(tipo1); } public void show() { System.out.println(“Eu sou um ” + tipo); } // Método a ser implementado nas sub- classes public void sound() { } public class Gato extends Animal { private String nome; // Nome do gato private String raça; // Raça do gato public Gato(String nome1) { // Chama o construtor da classe base super(“Gato”’); nome = nome1; // Nome fornecido raça = “Desconhecida”; // Raça default } public Gato(String nome1, String raça1) { // Chama o construtor da classe base super(“Gato”’); nome = nome1; // Nome fornecido raça =raça1; // Raça fornecida } public void sound() { System.out.println(“Miau”); }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo public class Animal { private String tipo; public Animal(String tipo1) { tipo = new String(tipo1); } public void show() { System.out.println(“Eu sou um ” + tipo); } // Método a ser implementado nas sub- classes public void sound() { } public class Gato extends Animal { private String nome; // Nome do gato private String raça; // Raça do gato public Gato(String nome1) { // Chama o construtor da classe base super(“Gato”’); nome = nome1; // Nome fornecido raça = “Desconhecida”; // Raça default } public Gato(String nome1, String raça1) { // Chama o construtor da classe base super(“Gato”’); nome = nome1; // Nome fornecido raça =raça1; // Raça fornecida } public void sound() { System.out.println(“Miau”); } public class Cachorro extends Animal { private String nome; // Nome do cachorro private String raça; // Raça do cachorro public Cachorro(String nome1) { // Chama o construtor da classe base super(“Cachorro”’); nome = nome1; // Nome fornecido raça = “Desconhecida”; // Raça default } public Cachorro(String nome1, String raça1) { // Chama o construtor da classe base super(“Cachorro”’); nome = nome1; // Nome fornecido raça =raça1; // Raça fornecida } public void sound() { System.out.println(“Au, au”); }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo public class TestaPolimorfismo { public static void main(String[] args) { // Cria um array de animais Animal[] bichos = { new Cachorro(“Rintintin”, “Pastor Alemão”), new Gato(“Garfield”, “Gato Amarelo”)}; Animal mascote; // Escolhe 5 mascotes (sorteados) for (int i = 0; i < 5; i++) { // Cria um índice randômico de 0 a bichos.length - 1 int indice = (int)(bichos.length * Math.random() ); mascote = bichos[indice]; // Escolhe um bicho do array System.out.println(“\nSua escolha:”); mascote.show(); mascote.sound(); }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Classes Abstratas “ Uma classe abstrata é uma classe incompleta onde alguns ou todos os seus métodos não possuem implementação,servindo apenas para definir uma interface.”

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Classes Abstratas ▐ Classes abstratas são classes que não podem ser instanciadas, mas é possível declarar uma variável (referência) deste tipo. ▐ São utilizadas apenas para permitir a derivação de novas classes

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Classes Abstratas ▐ Identificamos uma classe como abstrata pelo modificador abstract ■Um método definido como abstract indica que a classe não implementa aquele método e que ele deve obrigatoriamente ser implementado nas classes derivadas ■Todos os métodos não definidos de uma classe abstrata deverão ser definidos nas derivadas ou estas continuarão a ser consideradas abstratas e não poderão ser implementadas. ■Em uma classe abstrata um ou mais métodos são declarados, mas não implementados.

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Classes Abstratas ▐ Exemplo: public abstract class Animal { private String tipo; public abstract void sound(); // Método abstrato public Animal (String tipo) { tipo = new String(tipo); }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Classes Abstratas ▐ Como o método sound( ) desenvolvido na classe Animal não possui nenhuma instrução, deve ser declarado como abstract (para que não fique sem sentido). ▐ Este tipo de situação (criar uma superclasse a partir da qual subclasses serão derivadas) acontece muito freqüentemente em programação orientada a objetos, quando o objetivo é apenas tirar vantagem do polimorfismo. ▐ A característica do polimorfismo é garantir que o objeto sabe como deve reagir a uma dada mensagem, independente do tipo de referência usada para acessá-lo.

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo ▐ Classe Animal

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo public class Animal{ private String nome; public Animal(String n) { nome = n; } public void imp() { System.out.println("Nome: "+nome); } public String getName() { return(nome); } public void talk() { System.out.println("Eu nao falo"); }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo ▐ Classe Animal ■Na prática, nunca iremos instanciar um Animal. A classe serve apenas para a definição de mamíferos e pássaros. ■Da mesma forma, não instanciamos Mamifero nem Passaro. ■Somente instanciamos objetos BemTevi, Papagaio, Cachorro e Vaca. ■Logo, Animal, Mamifero e Passaro são classes abstratas

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo public abstract class Animal{ private String nome; public Animal(String n) { nome = n; } public String getName() { return(nome); } public abstract void talk(); // talk não foi implementado nesta classe }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exemplo public abstract class Passaro extends Animal{ public Passaro(String n) { super(n); } public void talk() { System.out.println("Piu piu"); } public abstract class Mamifero extends Animal{ public Mamifero(String n) { super(n); } public abstract void talk(); //talk não foi implementado }

Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Exercício ▐ Refaça a modelagem da hierarquia Animal utilizando o conceito de classe abstrata.