H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique

Slides:



Advertisements
Apresentações semelhantes
Herança, Polimorfismo e Classes Abstratas em Java
Advertisements

LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTERFACES Prof. Thiago Pereira Rique
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS CLASSES ABSTRATAS
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS COMPONENTES GUI – PARTE II Prof. Thiago Pereira Rique
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS - LPOO APRESENTAÇÃO DA DISCIPLINA Prof. Thiago Pereira Rique
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS MÉTODOS – UMA VISÃO MAIS APROFUNDADA Prof. Thiago Pereira Rique
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS - LPOO APRESENTAÇÃO DA DISCIPLINA Prof. Thiago Pereira Rique
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS CLASSES E OBJETOS – UMA VISÃO MAIS APROFUNDADA Prof. Thiago Pereira Rique
1 Orientação a Objetos: Herança Alcides Calsavara.
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.
Iniciação ao Java – Márcio F. Campos
Introdução ao paradigma de programação: Orientado a Objetos
Linguagem de Programação II
Linguagem de Programação II
Herança e Polimorfismo
Herança P. O. O. Prof. Ângela e Grace.
Classes e objetos P. O. O. Prof. Grace.
Linguagem técnica de programação I Java i
Revisão POO Profa. Cintia Carvalho Oliveira
Curso de extensão em Desenvolvimento Web
Herança em C#.
Introdução a programação (if669cc)
Polimorfismo em C#.
Programação Orientada a Objetos com Java
Conceitos básicos de orientação a objetos
Programação Orientada à Objetos
Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores,
Herança em Java.
if669 - Introdução à Programação
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.
POO - I Prof.: Jean Carlo Mendes
Programação Orientada a Objetos - Java
Orientação a Objetos Parte II
Aula prática 14 Orientação a Objetos – C++ Parte 2
POO II JEAN CARLO MENDES
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Classes Abstratas P. O. O. Prof. Ângela e Grace.
Aula Prática 4 Monitoria IP/CC (~if669).
Polimorfismo.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Classes Abstratas e Interface
POO II JEAN CARLO MENDES
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Herança e Arquitetura em camadas
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Classes Abstratas e Interfaces GX – Aula05 1.
Herança Modelagem e Programação Orientada a Objetos
Bruno Inojosa MCP .NET Framework
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
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.
2 – Revisão de Programação Orientada a Objetos
2 – Revisão de Programação Orientada a Objetos
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Módulo II Capítulo 1: Orientação a Objetos
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Laboratório de Programação II Método main Dados e Métodos de Classes.
Herança. É o compartilhamento de características entre classes com base em um relacionamento hierárquico. – Possibilita a derivação de tipos mais específicos.
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 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Herança e Polimorfismo Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Transcrição da apresentação:

H ERANÇA E P OLIMORFISMO Prof. Thiago Pereira Rique

A GENDA Herança Reescrita de método (overriding) Invocando o método reescrito Polimorfismo

H ERANÇA Vamos modelar a classe funcionário de um banco.

H ERANÇA Em um banco, há também um gerente. Um gerente guarda as mesmas informações de um funcionário comum. Um gerente possui informações e funcionalidades um pouco diferentes.

H ERANÇA A classe gerente

H ERANÇA Precisamos mesmo de outra classe? Se um dia precisarmos adicionar uma nova informação para todos os funcionários, precisaremos passar por todas as classes de funcionário e adicionar este atributo. Em Java, podemos relacionar duas classes de modo que uma herda características que a outra possui. Classe mãe (superclasse) e classe filha (subclasse) No nosso caso, gostaríamos que gerente tivesse o que funcionário tem (gerente seria uma extensão de funcionário)

H ERANÇA Herança Classes de objetos novas são derivadas absorvendo-se características de classes existentes e adicionando-se características únicas dessas mesmas classes.

H ERANÇA Classe Gerente estende Funcionario.

H ERANÇA Um Gerente é um Funcionario.

H ERANÇA Classe de teste.

H ERANÇA A subclasse herda todos os membros (atributos e métodos) da superclasse. Membros private não podem ser acessados diretamente pela subclasse. E se precisarmos acessar os atributos que herdamos? Modificador de acesso protected Visível pela classe, subclasses e classes no mesmo pacote.

H ERANÇA Modificador de acesso protected

H ERANÇA Herança simples do Java

R EESCRITA DE MÉTODO (O VERRIDING ) Considere a situação No fim do ano, os funcionários do banco recebem uma bonificação. Funcionários comuns recebem 10% do salário e gerentes, 15%.

R EESCRITA DE MÉTODO (O VERRIDING ) A classe Gerente vai herdar o método getBonificacao. O resultado será 500, quando deveria ser 750 (trata-se de um gerente).

R EESCRITA DE MÉTODO (O VERRIDING ) Em Java, podemos alterar o comportamento de um método herdado. Podemos reescrever (sobrescrever, override ) este método.

I NVOCANDO O MÉTODO REESCRITO Após reescrito, não podemos mais chamar o método herdado da superclasse, mas podemos invocá-lo se estivermos dentro da classe. Palavra reservada super Considere a seguinte situação: Suponha que para calcular a bonificação de um Gerente fazemos o mesmo cálculo de um Funcionario, acrescentando R$ 1000.

I NVOCANDO O MÉTODO REESCRITO Poderíamos fazer o seguinte: Qual o problema com esta abordagem?

I NVOCANDO O MÉTODO REESCRITO Se o getBonificacao de Funcionario mudar, teremos que modificar o getBonificacao de Gerente. Solução O getBonificacao de Gerente pode chamar o getBonificacao de Funcionario. Palavra reservada super

I NVOCANDO O MÉTODO REESCRITO Solução

P OLIMORFISMO O que guarda uma variável do tipo Funcionario? Uma referência, nunca um objeto em si.

P OLIMORFISMO Conceito Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas. ATENÇÃO: isto não significa que o objeto se transforma em outro tipo. E se tentássemos funcionario.getBonificacao(); ? Qual seria o retorno? 500 ou 750?

P OLIMORFISMO Apesar de estarmos nos referindo ao objeto como um Funcionario, o método invocado será o do Gerente, pois o objeto é do tipo Gerente. Logo, o valor retornado será 750. Para que criar um Gerente e referenciá-lo como um Funcionario? Situação mais comum Método que recebe um argumento do tipo Funcionario.

P OLIMORFISMO Método que recebe um argumento do tipo Funcionario.

P OLIMORFISMO Em algum lugar da aplicação (ou no main):

P OLIMORFISMO No método registra da classe ControleDeBonificacoes, o método getBonificacao do argumento é chamado. Quando o argumento se tratar de um Gerente, o método invocado será o reescrito, isto é, será invocado o método getBonificacao do Gerente. Reafirmando: Não importa como nos referenciamos a um objeto, o método que será invocado é sempre o que é dele.

REFERÊNCIA Apostila caelum-java-objetos-fj11