Programação Orientada a Objetos. Polimorfismo

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

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

Polimorfismo. O que é polimorfismo?

9 Classes Abstractas e Interfaces

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

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

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

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

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

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

Linguagem de Programação IV Introdução

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

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

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

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

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

Linguagem de Programação II Implementação

Linguagem de Programação. Diagrama de classes

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

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

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

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Interfaces POO. Prof. Marcio Delamaro

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

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

Herança; Sobrescrita, Sobrecarga e Polimorfismo; Classes abstratas e concretas (finais).

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

Análise de Programação

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

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

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

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

Programação Orientada a Objetos

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

Laboratório de programação II

Vetores Unimensionais

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011

Vetores Unimensionais

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

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

1 Introdução e Conceitos básicos

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

Atributos e Métodos Estáticos

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

Programação Orientada a Objetos II

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

Relacionamentos entre objetos

Paradigmas de Linguagens de Programação. Subprogramas

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

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

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

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

Programação Orientada a Objetos. Encapsulamento

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

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

Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos

Encapsulamento. Alberto Costa Neto DComp - UFS

Herança e Polimorfismo

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

MsC. João Maria MsC. Liviane Melo

4 Conceito de Herança

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

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

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Programação por Objectos. Java

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Conceitos Básicos da Programação OO

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

POO29004 Programação Orientada a Objetos

Transcrição:

Programação Orientada a Objetos Polimorfismo Cristiano Lehrer, M.Sc.

Introdução (1/3) Polimorfismo significa ter muitas formas. Em termos de programação, muitas formas significa que um único nome pode representar um código diferente, selecionado por algum mecanismo automático. Assim, o polimorfismo permite que um único nome expresse muitos comportamentos diferentes. Uma linguagem que suporta polimorfismo é uma linguagem polimórfica. Em contraste, uma linguagem monomórfica não suporta polimorfismo e, em vez disso, restringe tudo a um e apenas um comportamento estático, pois cada nome é estaticamente vinculado ao seu código.

Introdução (2/3) public class PersonalityObject { public String speak() { return "I am an object."; public class PessimisticObject extends PersonalityObject { public String speak() { return "The glass is half empty."; public class OptimisticObject extends PersonalityObject { public String speak() { return "The glass is half full."; public class IntrovertedObject extends PersonalityObject { public String speak() { return "Hi...";

Introdução (3/3) public static void main(string[] args) { PersonalityObject personalities = new PersonalityObject[4]; personalities[0] = new PersonalityObject(); personalities[1] = new PessimisticObject(); personalities[2] = new OptimisticObject(); personalities[3] = new IntrovertedObject(); for(personalityobject personality: personalities) { System.out.println(personality.speak()); I am an object. The glass is half empty. The glass is half full. Hi...

Formas de Polimorfismo Infelizmente, ainda há pouco consenso na comunidade de Orientação a Objetos quando se trata de polimorfismo. Em vez de entrar na controvérsia, consideraremos quatro formas de polimorfismo: Polimorfismo de inclusão Polimorfismo paramétrico Sobreposição Sobrecarga

Polimorfismo de Inclusão (1/2) O polimorfismo de inclusão, às vezes chamado de polimorfismo puro, permite que se trate objetos relacionados genericamente. O exemplo apresentado anteriormente é um polimorfismo de inclusão. O polimorfismo de inclusão é útil porque diminui a quantidade de código que precisa ser escrito. Em vez de ter de escrever um método para cada tipo concreto de PersonalityObject, pode-se simplesmente escrever um método que manipule todos os tipos.

Polimorfismo de Inclusão (2/2) O polimorfismo é o motivo pelo qual não se deve associar automaticamente herança com reutilização de implementação. Em vez disso, deve se usar herança principalmente para permitir um comportamento polimórfico através de relacionamentos com capacidade de substituição. Se definir corretamente os relacionamentos com capacidade de substituição, a reutilização será automática. O polimorfismo de inclusão permite que se reutilize a classe base, qualquer descendente, assim como os métodos que usam a classe base.

Polimorfismo Paramétrico (1/2) O polimorfismo paramétrico permite que se crie métodos e tipos genéricos. Assim como o polimorfismo de inclusão, os métodos e tipos genéricos permitem que se codifique algo uma vez e faça isso trabalhar com muitos tipos diferentes de argumentos.

Polimorfismo Paramétrico (2/2) public class Operation<T> { public T add(t a, T b) { return a + b; public static void main(string[] args { Operation<Integer> op1 = new Operation<Integer>(); System.out.println("Integer: " + op1.add(new Integer(10), new Integer(20)); Operation<Double> op2 = new Operation<Double>(); System.out.println("Double: " + op2.add(new Double(5.5), new Double(7.3)); Integer: 30 Double: 12.8

Sobreposição public abstract class MoodyObject { protected abstract String getmood(); public void querymood() { System.out.println("I feel " + getmood() + " today!"); public class HappyObject extends MoodyObject { protected String getmood() { return "happy"; public void laugh() { System.out.println("hehehe... hahaha... HAHAHA!!!");

Sobrecarga A sobrecarga, também conhecida como polimorfismo ad-hoc, permite que se use o mesmo nome de método para muitos métodos diferentes. Cada método difere apenas no número e no tipo de seus parâmetros. public static int max(int a, int b); public static long max(long a, long b); public static float max(float a, float b); public static double max(double a, double b);