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

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

Laboratório de programação II

Polimorfismo. O que é polimorfismo?

Classe Abstrata e Interface

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: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

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

Linguagem de Programação III

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

Avançando em Java com Polimorfismo. Prof.: Hugo Barros

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

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

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

Conceitos de Programação Orientada a Objetos

Sobreposição de Métodos

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

Linguagens de Programação Aula 12

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

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

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

Classes e Objetos. Sintaxe de classe em Java

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

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

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

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

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

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

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

Programação por Objectos. Java

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

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

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

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

4 Conceito de Herança

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

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

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

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

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

Linguagem de Programação IV Introdução

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

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

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

Sumário. BD Orientado a Objetos

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

Orientação a Objetos AULA 06

Universidade Federal de Uberlândia

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

9 Classes Abstractas e Interfaces

POO29004 Programação Orientada a Objetos

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Relacionamentos entre objetos

Como exemplo, vamos criar uma subclasse da classe Funcionario, vista nos capítulos anteriores.

POO e C++: Herança e Polimorfismo

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

2. Classes, Objectos, Herança e Polimorfismo

2. Classes, Objectos, Herança e Polimorfismo

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

Prof. A. G. Silva. 30 de outubro de Prof. A. G. Silva INE5603 Introdução à POO 30 de outubro de / 1

Construtores e Especificadores de Acesso

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

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

Conceitos de Linguagens de Programação

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo

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

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

Universidade Federal de Uberlândia

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

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

Herança Tiago Eugenio de Melo

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

Professor Leonardo Cabral da Rocha Soares Lattes:

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

Namespaces, Classes e Métodos.

Computação II Orientação a Objetos

Programação Orientada a Objetos JAVA - NETBEANS

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

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

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

Programação Orientada a Objetos

C com introdução a OO

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

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

CURSO TÉCNICO DE INFORMÁTICA Módulo C ORIENTAÇÃO À OBJETO. Conceitos

Fundamentos de Programação

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

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

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETRÔNICA (DAELN) 2 a Prova

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

Programação Orientada a Objetos. Polimorfismo

Classes, Métodos e Propriedades

Programação Orientada a Objetos

Programação em Linguagem C++

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

Programação Orientada a Objetos

Linguagem de Programação III

Fundamentos de Orientação à objetos

Transcrição:

Câmpus Santa Helena Curso: Ciência da Computação Disciplina: Programação Orientada a Objetos AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

Tema Polimorfismo de: coerção, overloading, inclusão e paramétrico Objetivos Entender o que é e para que serve o polimorfismo; Compreender os tipos de polimorfismo e suas aplicações; Compreender o que é amarração estática e dinâmica. Prof. Dr. Fernando Henrique Campos

Abstração Encapsulamento Herança Polimorfismo Pilares Orientação a Objetos Aula 8 Uma linguagem é caracterizada como Orientada a Objetos quando atende aos quatros seguintes tópicos: Orientação a Objetos

Polimorfismo O que é? O termo polimorfismo é originário do grego e significa muitas formas. Poli = Muitas Morphos = Formas Aula 8

Polimorfismo O que é polimorfismo? Aula 8 Capacidade de uma referência de classe de se associar a instâncias de diferentes classes em tempo de execução. Capacidade de um método de uma classe poder se adaptar a cada objeto derivado dela É uma das principais habilidades da orientação a objetos que consiste na operações se adequarem automaticamente aos objetos aos quais estão sendo aplicadas.

Polimorfismo Exemplo Pessoa sexo: char idade: int peso: double andar( ) falar ( ) Bebe Crianca Adulto Idoso andar( ) falar ( ) andar( ) falar ( ) andar( ) falar ( ) andar( ) falar ( )

Polimorfismo Exemplo Aula 8 imprimir( ) Idéia chave: Cada objeto sabe agir corretamente em resposta a mesma chamada de método!!

Polimorfismo Vantagens do polimorfismo Aula 8 Projeto e implementação de sistemas que são facilmente extensíveis; Novas classes podem ser adicionadas a partes gerais do programa com pouca ou nenhuma modificação; Através da utilização do polimorfismo é possível trazer clareza ao código, diminuir linhas do mesmo e ainda é possível inserir aplicações flexíveis; Para utilizar o polimorfismo, os objetos devem executar as mesmas ações (métodos), mesmo que com comportamentos diferentes.

Polimorfismo Tipos de Polimorfismo Polimorfismo Universal Ad-Hoc Paramétrico Inclusão Overloading Coerção

Polimorfismo Tipos de Polimorfismo Polimorfismo Universal Ad-Hoc Paramétrico Inclusão Overloading Coerção

Polimorfismo Ad-Hoc Aula 8 É o polimorfismo que ocorre em tempo de compilação; É implementado quando se deseja definir uma coisa específica; Diferente do universal, não pode ser usado em todo o lugar, logo sabemos quantas vezes ele será aplicado.

Polimorfismo Tipos de Polimorfismo Polimorfismo Universal Ad-Hoc Paramétrico Inclusão Overloading Coerção

Tipos de Polimorfismo Coerção Aula 8 A linguagem de programação tem um mapeamento interno entre tipos Exemplo: Se o operador + é definido para somar dois número do tipo real e um inteiro é passado como parâmetro então o inteiro é coargido para real.

Tipos de Polimorfismo Coerção Exemplo

Prof. Dr. Fernando Henrique Campos Aula 8

Polimorfismo Tipos de Polimorfismo Polimorfismo Universal Ad-Hoc Paramétrico Inclusão Overloading Coerção

Tipos de Polimorfismo Aula 8 Overloading (Sobrecarga de métodos) A permite que um nome de função seja usado mais de uma vez com diferentes assinaturas (tipos de parâmetros); Nesse caso, compilador automaticamente chama a função correta que deve ser utilizada. O que é a assinatura de um método??

Assinaturas Assinatura do método Aula 8 Refere-se a quantidade, tipos e ordem dos argumentos de um método Dessa forma podem existir métodos com o mesmo nome mas assinaturas diferentes Se a quantidade de argumentos for diferente as assinaturas são diferentes Se os tipos dos argumentos são diferentes as assinaturas são diferentes Se a ordem dos tipos dos argumentos forem diferentes as assinaturas são diferentes

Assinatura do métodos Exemplo calcular ( ) calcular (int x) calcular (double x) calcular (int x, double y) calcular (double x, int y) calcular (double x, int y, double z)

Tipos de Polimorfismo Overloading (Sobrecarga de métodos) Exemplo Aula 8

Prof. Dr. Fernando Henrique Campos Aula 8

Sobrecarga de métodos construtores Overloading (Sobrecarga de métodos) O método construtor, também é um método, dessa forma é possível definir mais do que um método construtor seguindo as mesmas regras de sobrecarga de métodos. A partir do momento em que é definido um método construtor diferente do Default, o compilador não aceitará mais o construtor Default.

Overloading (Sobrecarga de métodos) Sobrecarga de métodos construtores Exemplo Aula 8 public class Pessoa { public Pessoa ( ) { //método construtor default } }

Overloading (Sobrecarga de métodos) Sobrecarga de métodos construtores Exemplo public class Pessoa { public Pessoa ( ) { //método construtor } public Pessoa (String nome) { //método construtor } public Pessoa (String nome, int idade) { //método construtor } } Aula 8

Prof. Dr. Fernando Henrique Campos Aula 8

Polimorfismo Tipos de Polimorfismo Polimorfismo Universal Ad-Hoc Paramétrico Inclusão Overloading Coerção

Polimorfismo Universal Aula 8 É o polimorfismo que ocorre em tempo de execução; Pode ser aplicado em vários casos, logo não pode se saber quantas vezes ele será aplicado; Funcionada potencialmente em um conjunto infinito de tipos de modo disciplinado.

Polimorfismo Tipos de Polimorfismo Polimorfismo Universal Ad-Hoc Paramétrico Inclusão Overloading Coerção

Tipos de Polimorfismo Inclusão (Polimorfismo de herança, Overriding, Sobreposição ou reescrita de métodos) Estudo de caso Aula 8 Em uma empresa além de seu salário fixo todos os funcionários recebem uma bonificação padrão de 10% sobre o salário Para funções que requerem mais responsabilidade no entanto a bonificação sobre o salário é maior: Supervisor (20%), Gerente(30%) e Diretor (40%)

Overriding (Sobreposição ou reescrita de métodos) Estudo de caso Funcionario salario: double exibirsalario( ) adicionarbonificacao( ) Aula 8 Supervisor Gerente Diretor

Tipos de Polimorfismo Inclusão (Polimorfismo de herança, Overriding, Sobreposição ou reescrita de métodos) Também conhecido como polimorfismo de subclasse (ou subtipo); É o polimorfismo mais comum suportado pela maioria de linguagens de programação; Permite a redefinição de métodos de uma classe Filha; A redefinição de um método em subclasses herdeiras de uma classe base chama-se especialização.

Tipos de Polimorfismo Aula 8 Inclusão (Polimorfismo de herança, Overriding, Sobreposição ou reescrita de métodos) Sobreposição de métodos (override) em programação orientada a objetos, é um recurso da linguagem que permite que a subclasse, rescreva uma implementação especifica de um método que já esta previsto em uma superclasse; A implementação na subclasse sobrepõe a implementação na superclasse.

Tipos de Polimorfismo Inclusão (Polimorfismo de herança, Overriding, Sobreposição ou reescrita de métodos) Deve ser utilizado o mesmo nome e assinatura do método; É explicitado pela anotação @Override; O @Override no Java é nada mais nada menos que um diretiva de compilação, ou seja, ela orienta o compilador para alocação de memória, indicando que logo a seguir tem um método que deverá ser sobrescrito; Orienta também o desenvolvedor de aquele método já foi escrito na superclasse.

Tipos de Polimorfismo Inclusão (Polimorfismo de herança, Overriding, Sobreposição ou reescrita de métodos) Exemplo Aula 8

Inclusão (Polimorfismo de herança, Overriding, Sobreposição ou reescrita de métodos) Exemplo Aula 8 Peca - valor: double mover( ) Cavalo Peao Rei mover( ) mover( ) mover( )

Inclusão (Polimorfismo de herança, Overriding, Sobreposição ou reescrita de métodos) Exemplo public class Peca { int valor; public void mover ( ) { } } public class Rei extends Peca { @override public void mover ( ) { } } Aula 8

Sobreposição ou reescrita de métodos (override) Estudo de caso Funcionario salario: double exibirsalario( ) adicionarbonificacao( ) Aula 8 Supervisor Gerente Diretor adicionarbonificacao( ) adicionarbonificacao( ) adicionarbonificacao( )

Prof. Dr. Fernando Henrique Campos Aula 8

Polimorfismo Static binding X Dynamic ou late binding Estudo de caso

Polimorfismo Princípios do polimorfismo em herança Uma variável declarada em uma classe pode ser instanciada em qualquer subclasse. Exemplo Peca peca = new Cavalo(); Peca pedra = new Peao(); Peca Cavalo - tipo: String - valor: double mover( ) Peao mover( ) mover( )

Polimorfismo Princípios do polimorfismo em herança A decisão de quem chamar, depende do tipo de amarração (binding) Estática (Static) Dinâmica ou tardia (Dynamic or Late)

Polimorfismo Static binding X Dynamic ou late binding Amarração é a ligação da chamada de um método ao método; Amarração estática (static binding): define permanentemente o endereço do método durante a compilação; Amarração dinâmica ou tardia (dynamic or late binding): determina o endereço do método acionado no momento da execução.

Static binding Antigamente mover() mover() compilação 5027 call 5027 Amarração estática: decide a ligação entre chamada e execução na hora da compilação (na execução fica muito rápida)

Dynamic ou late binding Linguagens Modernas Peca mover() mover( ) Peca p1 = new Peca() Peca p1 = new Cavalo()? Cavalo mover( ) p1.mover()? mover()

Polimorfismo Aula 8 Amarração estática (Static binding) Problema E se a instanciação ocorrer dentro de um if? Como o compilador vai saber quem foi instanciado? É impossível o compilador saber em tempo de compilação quem será instanciado; O compilador não tem com decidir em tempo de compilação quem será chamado; O C++ decide pelo tipo da variável declarada então amarra na hora da compilação ao mover() da Superclasse, não importa quem você instanciou, isso é uma amarração estática.

Polimorfismo Static binding X Dynamic ou late binding Amarração é a ligação da chamada de um método ao método; Amarração estática (static binding): define permanentemente o endereço do método durante a compilação; Amarração dinâmica ou tardia (dynamic or late binding): determina o endereço do método acionado no momento da execução.

Polimorfismo Amarração dinâmica ou tardia (Dynamic or late binding) Na hora da compilação ele não resolve; Ele cria uma tabela de opções chamada de Vtable; Decide na hora da execução de acordo com o objeto instanciado (indireto).

Dynamic ou late binding Linguagens Modernas Peca mover() mover( ) Peca p1 = new Peca() Peca p1 = new Cavalo() Cavalo p1.mover() mover() mover( )

Dynamic ou late binding Linguagens Modernas Peca mover() mover( ) Peca p1 = new Peca() Peca p1 = new Cavalo() Cavalo mover( ) p1.mover() VTable Peca Cavalo mover()

Polimorfismo Amarração dinâmica ou estática Qual dos dois é mais coerentes? O Java e todas linguagens modernas, python, javascript não tem static binding; Mas por que o c++ tem static binding? É mais rápido

Prof. Dr. Fernando Henrique Campos Aula 8

Sobrecarga de Objetos Sobrecarga de Objetos Estudo de caso

Sobrecarga de Objetos Estudo de caso Animal emitirsom() Galinha Vaca Burro emitirsom() emitirsom() emitirsom()

Sobrecarga de Objetos Sobrecarga de Objetos Estudo de caso Problema Ao ser clicado sobre um animal deverá ser obrigatoriamente instanciada uma classe para emitir o som dele; Sobrecarga de memória. EXISTE OUTRA MANEIRA DE RESOLVER ISSO?

Sobrecarga de Objetos Estudo de caso Animal SomAnimal emitirsom() Som(animal: Animal) Galinha Vaca Burro emitirsom() emitirsom() emitirsom()

Sobrecarga de Objetos Estudo de caso

Sobrecarga de Objetos Estudo de caso Animal SomAnimal emitirsom() Som(animal: Animal) Galinha Vaca Burro emitirsom() emitirsom() emitirsom()

Polimorfismo Tipos de Polimorfismo Polimorfismo Universal Ad-Hoc Paramétrico Inclusão Overloading Coerção

Tipos de Polimorfismo Paramétrico Aula 8 Uma única classe ou método pode ser utilizado com um conjunto de dados de diferentes tipos (sem qualquer relação entre si); São conhecidos como Classe ou métodos genéricos ou tipos genéricos. TEREMOS UMA AULA TRATANDO ESPECÍFICAMENTE DESTE TIPO DE POLIMORFISMO!

Revisão O que é quais são os tipos de polimorfismo? Quais as diferenças entre amarração estática e tardia? Prof. Dr. Fernando Henrique Campos

Câmpus Santa Helena Curso: Ciência da Computação Disciplina: Programação Orientada a Objetos OBRIGADO!!!! Prof. Dr. Fernando Henrique Campos