Herança POO
Orientação a Objetos
Herança
Herança
1
20/3/2010
Herança
Herança é um relacionamento entre classes do tipo “É UM”.
Trata-se de um mecanismo para derivar novas classes a partir de classes existentes
Uma classe derivada herda a representação de dados e operações de sua classe base
Pode, seletivamente, adicionar novas operações, estender a representação de dados ou redefinir operações existentes.
Nomenclatura:
Classe derivada ou subclasse: classe que herda atributos e métodos de outra classe
Classe base ou superclasse: classe que gera derivação
Herança
Representação UML:
2
20/3/2010
Herança
Herança é transitiva, ou seja, características são transmitidas ao longo da hierarquia:
EX:
Animal:
nasce()
dorme()
Mamífero:
nasce()
dorme()
mama()
Cão:
nasce()
dorme()
mama()
late()
Vantagens
Usamos Herança buscando alcançar alguns benefícios:
Reuso e Compartilhamento de Código
Comportamento herdado não precisa ser reescrito e pode ser usado diversas vezes
Consistência de interface
Certeza de que todas as subclasses possuem os mesmos comportamentos definidos na superclasse
Prototipação Rápida
A utilização de componentes reutilizáveis acelera o processo de desenvolvimento Ocultamento de Informações
Podemos adicionar às nossas classes comportamentos de classes externas, sem necessidade de conhecer suas implementações
3
20/3/2010
Desvantagens
Apesar dos benefícios, herança não possui custo zero:
Desempenho
Mecanismo de herança adiciona peso computacional na execução do código
Tamanho
Uso de bibliotecas, geralmente, acarreta em aumento significativo do tamanho do programa
Overhead de envio de mensagens
Mensagens são mais caras do que simples chamadas de procedimento Complexidade
Apesar de um dos objetivos da POO seja a clareza, o uso excessivo de herança pode substituir uma forma de complexidade por outra
(entender fluxo io-io em grafo de