Capítulo 4 - Polimorfismo



Documentos relacionados
Programação Orientada a Objetos

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

Herança. Prof. Leonardo Barreto Campos 1

Aula 10 Polimorfismo. Prof. Jefersson Alex dos Santos. Baseado em:

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

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

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

Padrões de Projeto. Factory Method

Desenvolvimento Web TCC Turma A-1

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

Programação Orientada a Objetos (DPADF 0063)

Desenvolvimento guiado por testes e ferramentas xunit

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

Como criar uma palavra cruzada no Hot Potatoes

PHP ORIENTADO A OBJETOS. 2º Encontro PHP MG 16 e 17 de Outubro / Charles Schaefer

Como tratar eventos - A interface ActionListener e o método actionperformed

3. Numerar a coluna da direita conforme a da esquerda 1) Classe (2) :Aluno 2) Um dado objeto (3) oaluno:aluno 3) Objeto (1) Aluno

Orientação a Objetos

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

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

Usando o painel do operador

Na educação a distância, você tem autonomia de estudo, isto é, VOCÊ faz sua programação, estabelece seu ritmo de estudo.

Linguagem de Programação III

Refatoração Melhorando o sistema e preparando pra a Web

MREditor Editor de Impressos

Introdução a Funções

Classe Abstrata e Interface

Programação em JAVA. Subtítulo

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

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

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

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.

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

Sistema PROJUDI Vara de Execuções Penais

POO29004 Programação Orientada a Objetos

Laboratório de programação II

Projeção ortográfica e perspectiva isométrica

Linguagens e Técnicas de Programação II

Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads.

OpenPDV: Sistema aberto para gerenciamento de restaurantes

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

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

Sistemas de Objetos DistribuídosRevisão Java e Java ORBs p.1/26

Conceitos de Segurança

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

MANUAL DO SISTEMA TRT-5 PRESTADOR MÉDICO

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

TUTORIAL MATLAB Victor Breder 2016

Lojamundi Tecnologia Sem Limites br

PROCEDIMENTO OPERACIONAL PADRÃO - POP. Data de Vigência 01/DEZ/2005

Herança e Propriedades

Estruturas de Repetição

Manual Notícias. Note que abriu uma nova tela que permite procurar a imagem desejada em seu computador.

Termo genérico que se aplica a vários tipos de diagramas que enfatizam interações de objetos.

p Pacotes, a grosso modo, são apenas pastas ou diretórios do sistema operacional onde ficam armazenados os arquivos fonte de Java.

Modem e rede local Guia do usuário

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

Conceitos de Programação Orientada a Objetos

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

O Correio Electrónico ( ) é um dos serviços mais populares da Internet.

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Compiladores Análise Semântica

O que há de novo. Audaces Vestuário Versão Clube Audaces

Polimorfismo. O que é polimorfismo?

Apresentação do Microsoft Excel

Exercícios: Vetores e Matrizes

7. Defina encapsulamento. R.: Encapsular é ocultar. Criar uma cápsula ao redor da classe, para proteger o que está dentro dela.

9 Classes Abstractas e Interfaces

Interface gráfica em Java: Swing e SWT

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

1.1. Definição do Problema

Objetivos. Explorar os conceitos fundamentais acerca do uso herança na linguagem Java

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

Bem-vindo ao tópico sobre conceitos de determinação de preços.

Conceitos de Programação Orientada a Objetos

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

Modulo II Padrões GRASP

Conceitos de Programação Orientada a Objetos

POLÍCIA MILITAR DO PARANÁ Comando do Corpo de Bombeiros 4º GRUPAMENTO DE BOMBEIROS

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

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

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

Tecnologias no Ensino de Matemática

Padrões de Projeto. T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Prof. Alexandre Vidal

e-nota G Módulo de Guarda da Nota Fiscal eletrônica

1. HERANÇA: FILHO DE PEIXE, PEIXINHO É O QUE É HERANÇA? REFINANDO O CONCEITO DE HERANÇA ATRIBUTOS E MÉTODOS DA CLASSE

Guia de desenvolvimento de um aplicativo para o sistema operacional Android

Transcrição:

Capítulo 4 - Polimorfismo

1. POLIMORFISMO: VAMOS NOS ADAPTAR... 1 1.1 APRENDENDO A PREVER O FUTURO... 1 1.2 O QUE É POLIMORFISMO... 1 1.3 TIPOS DE POLIMORFISMO... 4 1.4 PERGUNTAS - EXERCÍCIO... 5

1. Polimorfismo: Vamos nos adaptar 1.1 Aprendendo a prever o futuro O encapsulamento permite construir componentes de software independentes e a herança permite reutilizar e estender esses componentes. Entretanto, ainda falta algo. O software está sempre mudando. Se os usuários exigem nova funcionalidade, erros aparecem ou o software precisa ser integrado em novos ambientes, a única constante é a mudança. O ciclo de vida do software não termina quando você distribui um produto. Você precisa de software que possa se adaptar às necessidades futuras. Não seria ótimo, se você pudesse escrever software à prova do futuro? Um software à prova do futuro se adapta aos requisitos futuros sem alterações e permite que você faça alterações e adicione novos recursos facilmente. A POO utiliza o conceito de polimorfismo para permitir que softwares a prova do futuro sejam escritos. 1.2 O que é Polimorfismo Polimorfismo significa ter muitas formas, que significa um único nome representando um código diferente, selecionado por algum mecanismo automático. Um nome, vários comportamentos. O Polimorfismo não é um pensamento novo para nós. Ele está contido em nosso dia a dia, principalmente na linguagem. Veja os exemplos: 1. Ontem sai para dançar com uns amigos, mas acabamos dançando porque não conseguimos encontrar um lugar que nos agradasse. 2. José cantou a noite inteira no Karaoke e João cantou a noite inteira a namorada de José. 3. O cachorro do João não foi passear ontem. Pensando mais em objetos e funcionalidades, pense agora no termo abrir, por exemplo. Você pode abrir uma porta, uma caixa, uma janela e uma conta bancária. A palavra abrir pode ser aplicada a muitos objetos do mundo real sendo que cada objeto interpreta abrir de sua própria maneira. Porém, você pode simplesmente dizer abrir, para descrever a ação. Uma linguagem polimórfica é a que suporta polimorfismo ( Actionscript, Java), já a linguagem monomórfica não suporta polimorfismo (Pascal, ASP). O Flash ainda não suporta recursos avançados de polimorfismos, só aceitando funções de sobreposição, veremos adiante. Observe o exemplo a seguir: Actionscript Obs: Cada classe abaixo será um arquivo diferente com o respectivo nome. (ObjetoPersonalidade.as) class ObjetoPersonalidade public function comportamento():string Unidade 6B: Flash utilizando Orientação a Objetos e a linguagem XML. Página 1

return "Eu sou um objeto."; public function fale() trace(comportamento()); (ObjetoPessimista.as) class ObjetoPessimista extends ObjetoPersonalidade public function comportamento():string return "Nada é tão ruim que não possa piorar."; (ObjetoOtimista.as) class ObjetoOtimista extends ObjetoPersonalidade public function comportamento():string return "Amanhã sempre será um dia melhor."; (ObjetoIntrovertido.as) class ObjetoIntrovertido extends ObjetoPersonalidade public function comportamento():string return "Cuti..."; (ObjetoExtrovertido.as) class ObjetoExtrovertido extends ObjetoPersonalidade public function comportamento():string return "E aí!!! Vamos agitar..."; (Arquivo FLA para teste) var personalidade: ObjetoPersonalidade = new ObjetoPersonalidade(); var pessimista: ObjetoPessimista = new ObjetoPessimista(); var otimista: ObjetoOtimista = new ObjetoOtimista(); var introvertido: ObjetoIntrovertido = new ObjetoIntrovertido(); var extrovertido: ObjetoExtrovertido = new ObjetoExtrovertido(); var personalidades = [ personalidade, pessimista, otimista, introvertido, extrovertido ]; for(i=0; i<5; i++) var persona:objetopersonalidade = personalidades[i]; persona.fale(); Unidade 6B: Flash utilizando Orientação a Objetos e a linguagem XML. Página 2

Java public class ObjetoPersonalidade return "Eu sou um objeto."; public void fale() System.out.println(comportamento()); public class ObjetoPessimista extends ObjetoPersonalidade return "Nada é tão ruim que não possa piorar."; public class ObjetoIntrovertido extends ObjetoPersonalidade return Cuti..."; public class ObjetoExtrovertido extends ObjetoPersonalidade return "E aí!!! Vamos agitar..."; public class ObjetoOtimista extends ObjetoPersonalidade return "Amanhã sempre será um dia melhor."; public class ExecutaObjetosComPersonalidade public static void main(string[] args) ObjetoPersonalidade personalidade = new ObjetoPersonalidade(); ObjetoPessimista pessimista = new ObjetoPessimista(); ObjetoOtimista otimista = new ObjetoOtimista(); ObjetoIntrovertido introvertido = new ObjetoIntrovertido(); ObjetoExtrovertido extrovertido = new ObjetoExtrovertido(); ObjetoPersonalidade[] personalidades = personalidade, pessimista, otimista, introvertido, extrovertido ; for(int i=0; i<5; i++) ObjetoPersonalidade persona = personalidades[i]; persona.fale(); Unidade 6B: Flash utilizando Orientação a Objetos e a linguagem XML. Página 3

Essas classes formam uma hierarquia de herança muito simples. A classe base, ObjetoPersonalizado declara o método fale(). Esse método é redefinido pelas subclasses filhas. A hierarquia forma relacionamentos com capacidade de substituição entre os progenitores. Resultado do arquivo teste. Os filhos de ObjetoPersonalizado são instanciados um a um e depois armazenados em um vetor de ObjetoPersonalizado. É aqui que o polimorfismo está fazendo o seu papel. Embora as instâncias de ObjetoPersonalizado estejam com a casca de seu pai, ou seja, a interface de métodos visíveis é a de seu pai, a implementação é cabível a instância. Quando se percorre o vetor e se chama a mensagem fale() cada instância envia uma mensagem diferente, como você pode verificar no exemplo acima. Você pode explorar o polimorfismo para adicionar nova funcionalidade em seu sistema, a qualquer momento. Você pode adicionar novas classes, que tenham funcionalidades ainda não imaginadas quando o programa foi escrito pela primeira vez isso sem ter que mudar o código já existente. Note também que em OO o conceito de polimorfismo está diretamente ligado aos conceitos de encapsulamento e herança, onde um conceito completa o outro para que o sistema (paradigma) funcione na teoria e na prática. 1.3 Tipos de Polimorfismo 1. Sobreposição 2. Polimorfismo de inclusão 3. Polimorfismo paramétrico 4. Sobrecarga Existem Várias Tipos de Polimorfismo, porém, o único aceito pelo Flash é o Polimorfismo por sobreposição. Sobreposição Quando ocorre a sobreposição de um método de uma classe filha em cima do método da classe pai, não quer dizer que o método da classe pai foi destruído. A classe filha Unidade 6B: Flash utilizando Orientação a Objetos e a linguagem XML. Página 4

herda sempre o método como um método recursivo da classe pai, ou seja, nada impede que o método da classe filha utilize o método da classe herdada. Lembre-se do exemplo dado em herança TwoDimensionalPoint e ThreeDimensionalPoint. 1.4 Perguntas - Exercício 1) Como o polimorfismo e a sobreposição trabalham juntos? Ao terminar de responder as questões acima, envie-as em um arquivo texto ao seu tutor. Unidade 6B: Flash utilizando Orientação a Objetos e a linguagem XML. Página 5