Objetos
Herana e Polimorfismo
Prof. Jailton Carlos
Jailton.paiva@ifrn.edu.br
14/10/2010
Plano de Aula
Abstrao e Encapsulamento
Herana
Simples;
Multiplas;
Conceito Subtipo;
Palavra-cha super
Classe base Object;
Cadeia de Construtores
Exerccios de Fixao
Exerccios em sala de aual
14/10/2010
Abstrao e Encapsulamento
So conceitos complementares
Abstrao foca sobre o comportamento
observvel de um objeto, enquanto
encapsulamento se concentra na execuo que
d origem a esse comportamento
O encapsulamento proporciona barreiras
explcitas entre abstraes diferentes e, portanto,
leva a uma separao clara das preocupaes.
Abstrao e Encapsulamento
Interface
Viso
externa da classe
O que os objetos da classes fazem
Definem o contrato da classe
O que o cliente precisa conhecer da classe
Implementao
Viso
interna da classe
Como os objetos fazem as operao
Representao interna
14/10/2010
Abstrao e Encapsulamento
como private
Declare-os private
Deixe public apenas o que o cliente deve saber
14/10/2010
Herana
evita a redundncia?
O que eles tm em comum?
Como eles so relacionados?
PESSOA FSICA
Atributos:
Nome
Endereco
Telefone
CPF
PESSOA JURDICA
Atributos:
Nome
Endereco
Telefone
CNPJ
Inscrio Estadual
Inscrio Municipal
6
Herana
Seta vazada
indica
herana
+calcImpostoDeRenda(): double
PessoaFisica
PessoaJuridica
-cpf: String
-rg: String
-dataNascimento: Calendar
-cnpj: String
-inscrEstadual: String
-inscrMunicipal: String
Atributos e
mtodos existem nas
subclasses
Herana
Define uma relao entre as classes, onde uma
classe compartilha a estrutura ou o
comportamento definido e uma ou mais classes.
Herana representa, portanto, uma hierarquia de
abstraes, na qual um subclasse herda de uma
ou mais superclasses.
Duas razes mais comuns parar se usar a herana
so:
Para
Herana
Estrutura Hierrquica e modular
Projeo de classes genricas que podem ser
especializadas em classes mais particulares.
Classes especializadas reutilizam o cdigo das
mais genricas.
Classe D A
CB
Especializada
C
Caractersticas
Herdadas
Classe Genrica
Classe
E Especializada
Herana
Herana Simples
Animal
-nome: String
-sexo: String
-raca: String
+emitirSom()
+dormir()
+caminhar()
Leao
Gato
Tigre
Cachorro
Lobo
11
Hierarquias de Herana
Animal
-nome: String
-sexo: String
-raca: String
+emitirSom()
+dormir()
+caminhar()
Selvagem
Domestrico
Gato
Leao
Tigre
Lobo
Cachorro
12
Herana em Java
Pessoa
-nome: String
-endereco: String
-telefone: String
+calcImpostoDeRenda(): double
PessoaFisica
-cpf: String
-rg: String
-dataNascimento: Calendar
14/10/2010
class Pessoa {
private String nome, endereco;
private String telefone;
public String getNome(){
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
class PessoaFisica extends Pessoa {
private String cpf, rg
private Calendar dtNascimento;
public String getCpf() {
Usamos extends para
return cpf;
indicar herana em Java
}
public void setCpf(String cpf){
this.cpf = cpf;
}
}
13
Execuo
Pessoa
-nome: String
-endereco: String
-telefone: String
+calcImpostoDeRenda(): double
PessoaFisica
-cpf: String
-rg: String
-dataNascimento: Calendar
Mtodo herdado da
classe Pessoa
Subtipos
Varivel p2 NO
executa mtodos da
classe PessoaFisica,
pois ela s conhece a
interface de Pessoa
Pessoa p1,p2;
p1 = new Pessoa();
p2 = new PessoaFisica();
p1.setNome("Joo");
p2.setNome("Jos");
//p2.setCPF(032...");
System.out.printf(%s,%s",p1.getNome(),p2.getNome());
15
Subtipos
Uma referncia a Pessoa sempre poder apontar
para uma instncia de PessoaFisica, porque
PessoaFiscia UMA Pessoa;
O que torna possvel a superclasse referenciar
uma instncia da subclasse a certeza de que a
subclasse pode fazer tudo que a superclasse
pode fazer.
16
super
Chama o construtor
da classe pai, neste
caso, o construtor da
classe Ponto.
14/10/2010
Classe Object
/* ... */
}
/* ... */
}
Cadeia de Construtores
1.
2.
3.
4.
5.
Pilhas de chamadas
4. Object()
3. Animal() chama super()
2. Gato chama super()
1. main chama new Gato()
14/10/2010
6.
7.
8.
9.
Dvidas
14/10/2010
20
Exerccio de fixao
public class A {
public void setX () {}
public void setY () {}
}
public class B extends A{
public void setZ () {}
}
public static void main(String[] args) {
A a = new B();
B b = new B()
a.setX();
b.setY();
a.setZ();
}
a.setZ()
Exerccio de fixao
Identifique o erro:
Exerccio de fixao
BE.
Cadeia de construtores.
Chamada implcita do
construtor super()
Exerccio 1
Pessoa
-nome: String
-endereco: String
-telefone: String
+calcImpostoDeRenda(): double
PessoaFisica
PessoaJuridica
-cpf: String
-rg: String
-dataNascimento: Calendar
-cnpj: String
-inscrEstadual: String
-inscrMunicipal: String
Exerccio 2
Selvagem
Domestrico
Gato
Leao
Tigre
Lobo
Cachorro
Referncias
Sierra, K.; Bates, B. SCJP: Certificao Sun para
Programador Java 6 Guia de Estudo. Alta Books, 2008.
Horstmann, C. S; Cornell, G. Core Java: Volume I
Fundamentos. 8 edio. Pearson, 2010.
DEITEL, H. M.; DEITEL, P. J. Java: como programar. 8
Edio. Pearson, 2010.
26