4 – Conceito de Herança
O mecanismo de herança permite definir uma nova classe em termos de uma classe
Hierarquia de
classes:
ClasseB é subclasse de
ClasseB classeA
ClasseC ClasseD
Pode repetir-se o processo, definindo uma nova classe a partir da classe derivada
anterior ...
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 55
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
À subclasse, podem ser adicionados novos métodos e novos atributos num processo
de especialização sucessiva.
mais
- na sua classe
Mecanismo de Ligação Î
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 56
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
ListaLigada
Instância de ListaLigada
Estruturas de dados ...
inserir
eliminar L
próximo
imprimir
Uma Fila pode ser facilmente implementada a
partir de (isto é, reutilizando a implementação
Fila é subclasse de ListaLigada
de) uma lista ligada desde que se imponham as
restrições adequadas à manipulação dos seus
Redefinimos os
métodos Inserir e Fila elementos.
Eliminar para
reflectirem a ...
semântica da
Instância de Fila
Fila. inserir
F
eliminar
Adicionamos o
método ListaDeEspera
comprimento Instância de
... ListaDeEspera
E
Redefinimos o
método imprimir comprimento
imprimir
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 57
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
F.imprimir()
é encontrado.
E.imprimir()
E.inserir()
o método é encontrado.
Resumindo:
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 58
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Tipos de ligação
Ligação estática
Vantagem:
- ligações erradas (isto é, chamadas de métodos não existentes) são detectadas em
tempo de compilação.
Desvantagem:
- para introduzir alterações na ligação é necessário recompilar todo o código.
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 59
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Ligação dinâmica
Vantagem:
todas as classes.
Desvantagens:
execução.
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 60
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
- Quando a cláusula extends não é usada significa que a classe é subclasse directa da
classe Object.
A classe Object
// igualdade de referências
...
correspondentes aos métodos públicos da classe Object. Se algum método não foi
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 61
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
- B tem acesso directo a todas as variáveis e métodos da instância que não sejam
Principio da substitutividade:
“Declarada uma variável como sendo de uma dada classe é permitido atribuir-lhe um
valor de sua classe ou de qualquer sua subclasse”.
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 62
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Vamos redefinir o método “equals” para a classe Contador de tal forma que dois
objectos do tipo Contador são iguais se o seu estado for igual.
(*) E condicional
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 63
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Utilização do método:
...
Contador c1,c2;
c1= new Contador();
c2= new Contador ();
comparação
específica da classe
return ...
}
return false;
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 64
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
O método Clone
Queremos definir um método que crie e devolva uma cópia do objecto receptor.
- Essa cópia deve ser tal que o objecto criado e o objecto que recebe a mensagem:
x.clone().getClass() == x.getClass()
( x.clone().equals( x ) ) == true
Contador c1,c2;
c1=new Contador();
...
c2 = (Contador) c1.clone();
operador de coerção
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 65
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Comparação de Strings.
String s1 = “XPTO”;
String s2 = “XPTO”
s1 = = s2 Î false
mas
s1.equals(s2) Î true
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 66
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Ex.lo 1
o resultado de s = = s0 é false
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 67
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Ex.lo 2
String s3 = "XPTO";
System.out.println ( s2 == s3);
System.out.println ( s2.equals(s3) );
}
false
true
true
true
Regra: comparar Strings sempre com o método equals definido na classe String.
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 68
Universidade da Beira Interior
Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática
Propostas de trabalho:
- Construa uma classe que represente um aluno da UBI. O número de cada aluno
deverá ser atribuído automaticamente, de forma sequencial, cada vez que é criado um
novo objecto do tipo aluno.
________________________________________________________________________________________________________
http://www.di.ubi.pt/~pprata/poo.htm
Apontamentos de POO - 69