Professional Documents
Culture Documents
Engenharia de Computao
Herana
+ Aluno
+ Professor
- int ra;
- String turma;
- int siape;
- String titulo;
+ setRa();
+ setTurma();
+ getRa();
+ getTurma();
+ setSiape();
+ setTitulo();
+ getSiape();
+ getTitulo();
+Inicio
+ main()
+ Pessoa
- int rg;
- String nome;
+ setRg();
+ setNome();
+ getRg();
+ getNome();
+ Pessoa
public Pessoa( ) { }
public Pessoa(int rg, String nome){
this.rg = rg;
this.nome = nome;
}
public void setRg(int rg){
this.rg = rg;
}
public void setNome(String nome){
this.nome = nome;
}
public int getRg(){
return rg;
}
public int getNome(){
return nome;
}
- int rg;
- String nome;
+ setRg();
+ setNome();
+ getRg();
+ getNome();
}
8
Porm, observe no diagrama que a classe Aluno herda a classe pessoa. Isso
pode ser observado pelo tringulo presente na ligao entre Aluno e Pessoa.
Ele indica a existncia do mecanismo de Herana. No cdigo fonte esta herana
ser definida pela palavra extends.
+ Pessoa
- int rg;
- String nome;
+ setRg();
+ setNome();
+ getRg();
+ getNome();
+ Aluno
- int ra;
- String turma;
+ setRa();
+ setTurma();
+ getRa();
+ getTurma();
10
+ Aluno
- int ra;
- String turma;
+ setRa();
+ setTurma();
+ getRa();
+ getTurma();
Observe o
Polimorfismo com
sobrecarga tambm
na classe Aluno!
11
+ Professor
- int siape;
- String titulo;
+ setSiape();
+ setTitulo();
+ getSiape();
+ getTitulo();
12
+ Professor
- int siape;
- String titulo;
+ setSiape();
+ setTitulo();
+ getSiape();
+ getTitulo();
13
+ Professor
- int siape;
- String titulo;
+ setSiape();
+ setTitulo();
+ getSiape();
+ getTitulo();
Observe o
Polimorfismo com
sobrecarga tambm
na classe Professor!
14
E por fim a classe Inicio, que, neste caso, composta apenas pelo mtodo
main( ). No tem nenhum outro mtodo ou atributo.
+Inicio
+ main()
a do tipo Aluno
e
p do tipo Professor
Utilizao do Mecanismo de Herana pelo
objeto a (que do tipo Aluno) atravs dos
mtodos gets e sets (herdados de
Pessoa) que por sua vez instanciam os
atributos tambm herdados de Pessoa: rg e
nome
a.setRa(10);
a.setTurma(A);
System.out.println(\n Rg: +a.getRg());
System.out.println(\n Rg: +a.getNome());
System.out.println(\n Rg: +a.getRa());
System.out.println(\n Rg: +a.getTurma());
}
}
Exerccios: At aqui temos somente de parte do cdigo (Aluno). Faltou a parte que trata do Professor.
Termine o cdigo (parte do Professor) na classe Incio.
16
Classe Abstrata
17
Por exemplo: dentro da classe Incio, utilizada anteriormente, alm dos objetos
dos tipos Aluno e Professor, que fazem parte daquele exemplo, tambm
poderia declarar e instanciar um objeto do tipo Pessoa e atravs deste utilizar
os membros pblicos de Pessoa, como mostra o cdigo a seguir:
18
Declarando e
instanciando 1
objeto:
pes do tipo Pessoa
19
}
21
}
Nota: Observe o erro logo na compilao
do cdigo.
22
Polimorfismo
com Sobrescrita
23
24
Mtodos Concretos
25
Observe o diagrama de classes (vamos usar somente as classes Pessoa, Aluno e Inicio
para exemplificar):
+ Pessoa
- int rg;
- String nome;
+ setRg();
+ setNome();
+ getRg();
+ getNome();
+ mostraClasse();
+ Aluno
- int ra;
- String turma;
+ setRa();
+ setTurma();
+ getRa();
+ getTurma();
+Inicio
+ main()
26
classe Pessoa:
public class Pessoa{
private int rg;
private String nome;
+ Pessoa
27
classe Aluno:
public class Aluno extends Pessoa{
private int ra;
private String turma;
public void setRa(int ra){
this.ra = ra;
}
public void setTurma(String turma){
this.turma= turma;
}
public int getRa(){
return ra;
}
public int getTurma(){
return turma;
}
+ Aluno
- int ra;
- String turma;
+ setRa();
+ setTurma();
+ getRa();
+ getTurma();
}
Nota: Ainda no h a sobrescrio
do mtodo mostraClasse( ) herdado
da classe Pessoa.
28
}
29
+ Aluno
- int ra;
- String turma;
+ setRa();
+ setTurma();
+ getRa();
+ getTurma();
}
31
Uma pergunta?
E se, mesmo tendo um mtodo sobrecarregado, eu quiser utilizar o
mtodo original da classe me?
super
32
+ Aluno
- int ra;
public void setRa(int ra){
this.ra = ra;
- String turma;
}
public void setTurma(String turma){
this.turma= turma;
+ setRa();
}
+ setTurma();
public int getRa(){
+ getRa();
return ra;
+ getTurma();
}
+ mostraMae();
public int getTurma(){
return turma;
}
public void mostraClasse(){
System.out.println(\n RG da classe Aluno: +(rg+100));
}
public void mostraMae(){
super.motraClasse();
}
}
a.mostraClasse();
a.mostraMae();
Executar, indiretamente, o
mostraClasse() da classe Pessoa
}
}
34
Mtodos Abstratos
35
Observe o diagrama de classes (vamos usar somente as classes Pessoa, Aluno e Inicio
para exemplificar):
+ abstract Pessoa
- int rg;
- String nome;
+ setRg();
+ setNome();
+ getRg();
+ getNome();
+ abstract mostraClasse();
+ Aluno
- int ra;
- String turma;
+ setRa();
+ setTurma();
+ getRa();
+ getTurma();
+Inicio
+ main()
36
+ abstract Pessoa
classe Pessoa:
- int rg;
- String nome;
+ setRg();
+ setNome();
+ getRg();
+ getNome();
+ abstract mostraClasse();
Nota:
Mtodo abstrato, somente assinatura
37
classe Aluno:
public class Aluno extends Pessoa{
private int ra;
private String turma;
public void setRa(int ra){
this.ra = ra;
}
public void setTurma(String turma){
this.turma= turma;
}
public int getRa(){
return ra;
}
public int getTurma(){
return turma;
}
+ Aluno
- int ra;
- String turma;
+ setRa();
+ setTurma();
+ getRa();
+ getTurma();
}
Nota: Ainda no h a sobrescrio
do mtodo mostraClasse herdado da
classe Pessoa.
38
+ Aluno
- int ra;
41
modificador de acesso
FINAL
42
43
44
46