Anda di halaman 1dari 35

| 

› |  é um mecanismo que permite que


características comuns a diversas classes
sejam factoradas numa classe base, ou
à  Ãà . A partir de uma classe base,
outras classes podem ser especificadas. Cada
classe derivada ou subclasse apresenta as
características (estrutura e métodos) da classe
base e acrescenta a elas o que for definido de
particularidade para ela.
|erança & construtores
› Os construtores não são herdados
|erança e classe Object(java.lang)
› Apesar de ser um conceito sofisticado, a
herança, na realidade, é utilizada em todas
aplicações java, mesmo que o programador
não explicite a sua utilização.
› Quando se cria uma classe sem nenhuma
referência a uma superclasse, o proprio
compilador insere na classe criada uma
relação de herança directa coma a classe
java.lang.Object
|erança e classe Object(java.lang)
É por este motivo que todos os objectos podem
invocar os métodos da class java.lang.Object,
tais como  Ã e  

A capacidade de herança garante altos índices


de reaproveitamento de código, permitindo
uma melhor componentização.
Œeneralização e especialização
› Œ  
  é o processo pelo qual
identificam-se atributos comuns
(correspondentes) entre classes diferentes,
colocando-os numa superclasse mais genérica.
› ºspecialização é o processo pelo qual
identificam-se atributos não correspondentes
entre classes diferentes, colocando-os dentro
das subclasses de uma superclasse, tornando-
a mais específica.
Ñepresentação na UML

   
   
    
   


      

 
         
 
 
Ñepresentação na UML
Codificando o uso da herança
› Para indicar que uma classe estende outra,
deve-se utilizar, na sua definição, a palavra
reservada   Ã, que relaciona uma
subclasse com a sua superclasse.

› ºm java uma subclasse pode estender apenas


uma superclasse directamente
Codificando o uso da herança
public class Produto{
private int codigo;
private double preco;
private String descricao;
public Produto(){
}
// sets e gets omitidos
}
Codificando o uso da herança
public class Livro extends Produto{
private String autor;
private String isbn;
private String editora;
public Livro(int codigo, double preco, String descricao, String autor,
String isbn, String editora){
//chamada do construtor da super classe,
//a instrução super() deve ser a primeira na linha do construtor
à      Ã
//define os atributos da classe

à 

ÃÃ Ã 

à 
}
// sets e gets omitidos
}
Criar Objectos a partir de subclasse
› Quando se instância um objecto a partir de
uma subclasse, este recebe os membros
definidos na superclasse. De qualquer modo,
o modelo de acesso aos membros continua a
valer: membros demarcados como 
não podem ser acedidos nas subclasses;
membros   ou   podem ser
acedidos utilizando a palavra resercada à  .
Criar Objectos a partir de subclasse
› Para executar determinado construtor de uma
superclasse e garantir o encapsulamento e o
reaproveitamento de código, utiliza-se a
construção à    Ã 
à , a qual deve ser a primeira
instrução do construtor da subclasse.
Codificando o uso da herança
public class Livro extends Produto{
private String autor;
private String isbn;
private String editora;
public Livro(int codigo, double preco, String descricao, String autor,
String isbn, String editora){
//chamada do construtor da super classe,
//a instrução super() deve ser a primeira na linha do construtor
à      Ã
//define os atributos da classe

à 

ÃÃ Ã 

à 
}
// sets e gets omitidos
}
àormas de |erança
› | v rias formas de relacionamento no
mecanismo de herança
 º  Ã [ uma classe estende uma superclasse,
sendo ainda acrescida de novos membros
(atributos e/ou métodos). ºstes definem novos
comportamentos que são somados àqueles j
existentes na superclasse. A superclasse
permanece inalterada; por isso, esse tipo de
relacionamento é tecnicamente chamado de

 Ã
àormas de |erança
› | v rias formas de relacionamento no
mecanismo de herança
 ºÃ  [ a superclasse abstracta especifica
aquilo que uma subclasse deve oferecer, mas sem
realmente implementar nenhuma funcionalidade.
Ou seja, a subclasse herda apenas a  
(conjunto de especificações de métodos públicos)
da superclasse, relegando à subclasse a
responsabilidade de transformar os conceitos
abstractos da superclasse em implementações
concretas
àormas de |erança
      Ã   Ã  [ a
subclasse herda a interface de uma classe
abstracta, além de uma implementação-padrão de
métodos concretos da superclasse. A subclasse
pode, então, redefinir métodos para especializar o
comportamento em relação àquilo que é referido
pela superclasse, ou oferecer alguma
implementação para métodos que a superclasse
tenha declarado como abstratos. Normalmente,
este tipo de relacionamento é denominado

 
› Composição
 Conceito:

[ É a técnica de construir um tipo não pela derivação


partindo de outra classe, mas pela junção de v rios
outros objectos de menor complexidade que
fornecem ao objecto composto determinada
funcionalidade quando em conjunto.
 àorma:

tipo composto 9   ipo fundamental ou


tipo composto
› Composição
 Não h nenhuma palavra-chave ou recurso
especial para utilizar composição em Java,
visto que esta técnica nada mais é do que um
modo particular, para cada situação, de
agrupar classes existentes de forma a criar
novas classes com novas funcionalidades em
determinado arranjo.

 

 
  
 

    9   


!
   "

    "
#  
 
 

 $   
    




   
   

     
     
 

     $  
  %  
  "
 # &
 

   '   
( '
'  ) 

  &
 
( '  '' &

  *     #
   %
      &

$#

 ' +, 


 '  ' 

 
   &     
 
         $   

        $ 


&  
'  ) 
   ' , '    $  
 
-     %   & &
( ' .
/    $     
  

      
     $ 

 $ 
'        
 '  
      &  &

0 # 
  & &

  
  1
2   
#    
  
 
 $  
$  
   

  
#  
 


 
  $   '    
   
'  ) 
    ' , '   
$  
  -
    %   & &
( ' .
3         


 

'  
 $   

   4
 &    
    
 
    
  
'  ) 

 5  .
 
   
  #   

  
  $   

 +' 

  
       '  
 

  

$#


  ' ) 
   
  *  '

&

       
 
$   

     
 6
      '% 



# &        

' 
          '    
    %  
 
 
     * 
+  ' + 7
        +
+ 

  ' ) 

 8 &
 '  

  
  %      ' 
 ' 

   &  



 
     &

  ' ) 

    %      
  #

&         
 +  
    
9         
  +
: 
;       
&

  
 
$,    
  

   
$#
#   

  ' ) 

 8  9        


  
$   $   
  %  
   
$  
 
 8 &
  
 '    
          

       ' '
 
    +

   
     
 $ 
    %  

     

 

  ' ) 

 5  .
   
#  $   


  
   + 
$ & 
  
    $  


 

 4  &       ' , '
$   
  
 
   
 '  
    
      

'   %   < &
 =         
#  
 $  

     
  >
 =              
      >
   
    '      
      
     
 =           
 
   
   '   >
 '  
 =  #     
  
 
 
?  > 

( '   

?  >
 '  

     @&
A2B =
  

    7   +    
  
   

  

# 
   5 01  



     C > D  %
$#



   

# 
01  
  
      
 

# 
  5 01
 '  
 '  
 6 # ' 
  
 < &  @&

A23 =  #
   
  +  
< & 
  

 >

Anda mungkin juga menyukai