3. O QUE É HERANÇA?
Na programação modular existe uma técnica
chamada Herança que é utilizada para reuso,
evitando a repetição de um mesmo trecho de código
que faz as mesmas coisas em diversos lugares no
código, ajudando então na boa prática de deixar o
código mais objetivo e limpo.
4. O QUE É HERANÇA?
Herança é um princípio de orientação a objetos, que permite
que classes compartilhem atributos e métodos, através de
"heranças". Ela é usada na intenção de reaproveitar código ou
comportamento generalizado ou especializar operações ou
atributos.
• Os atributos e métodos são herdados por todos os objetos
dos níveis mais baixos considerando o modificador de
acesso.
• Diferentes subclasses podem herdar as características de
uma superclasse.
5. O QUE É HERANÇA?
A Herança possibilita que as classes compartilhem seus atributos,
métodos e outros membros da classe entre si. Para a ligação entre as
classes, a herança adota um relacionamento esquematizado
hierarquicamente.
Na Herança temos dois tipos principais de classe:
Classe Base: A classe que concede as características a uma outra classe.
Classe Derivada: A classe que herda as características da classe base.
6. SUPERCLASSE E SUBCLASSE
Outra Terminologia utilizada:
• Superclasses (pai): Classes mais
genéricas que devem guardar
membros em comum.
• Subclasses (filha): Classes
especializadas que acrescentam
novos membros, especializando a
classe.
10. EXEMPLO SIMPLIFICADO
Um exemplo básico para entender o conceito seria: Um
cachorro e um homem, embora obviamente se diferem,
possuem uma característica em comum: são mamíferos,
eu não preciso repetir essa mesma informação se eu
posso reutilizá-la. Assim como um beija-flor e uma galinha
são aves, ou seja, possuem algo em comum. Em um
nível mais acima, podemos concluir que cachorro,
homem, beija-flor e galinha possuem algo em comum:
ambos são animais. Sempre um vai recuperando as
informações do outro.
12. EXEMPLO SIMPLIFICADO
Todos os Trabalhadores da Empresa são
considerados Funcionários e tem funções
(Métodos) e Características (Atributos) em
comum. Porém cada um pode ter suas
funções e características específicas
14. PRINCIPAIS BENEFÍCIOS
• Reutilização de código uma vez que as similaridades
são compartilhadas e as diferenças preservadas.
• Facilitação da manutenção do sistema trazendo
maior legibilidade do código existente, quantidade
menor de linhas de código e alterações em poucas
partes do código.
15. HERANÇA SIMPLES
• Provavelmente a herança simples seja a mais utilizada,
mesmo porque linguagens como o JAVA aceitam somente
ela. Ou seja, não tem como ter herança por cima de
herança, bom, pelo menos não sem usar alguns artifícios.
• Um exemplo pode ser visto abaixo: um veículo pode ser
tanto um carro, quanto uma moto. O veículo seria a
superclasse enquanto as demais uma subclasse que vai
herdar todas as propriedades da superclasse.
17. HERANÇA SIMPLES
• No entanto, uma herança pode herdar outra. Por
exemplo, existem vários tipos de carro: hatch,
sedan, caminhonete, SUV, entre outros. É possível
criar uma classe para representar um carro SUV que
vai herdar as propriedades de: Carro e Veículo. Ou
seja: SUV é um Carro que é um Veículo.
19. HERANÇA MÚLTIPLA
• Não irei abordar esse assunto neste tópico, no
entanto, linguagens como o C++ permite que uma
subclasse herde de mais de uma superclasse,
diferentemente do JAVA que possui somente a
possibilidade de simular tal cenário através de
interfaces.
20. HERANÇA MÚLTIPLA
• Um exemplo de herança múltipla pode ser vista no
exemplo a seguir onde uma pessoa pode ser um
empregado ou estudante. Além disso, um
empregado pode ser gerente ou vendedor, mas um
gerente de vendas é um vendedor ao mesmo
tempo que é um gerente.
21. HERANÇA MÚLTIPLA
• Vale ressaltar que utilizar herança múltipla pode
dificultar a manutenção do sistema assim como seu
entendimento, reduzindo a modularização.
23. EXERCÍCIO
1. Tendo como exemplo a tabela abaixo, criar uma tabela
semelhante apresentando outros exemplos de Herança,
identificando a super classe e pelo menos 3 subclasses
24. EXERCÍCIO
2. Criar 3 Diagramas apresentando situações de Herança
apresentando ao menos 1 superclasse para cada e 3 subclasses (Não
vale utilizar os utilizados no exercício anterior)
3. Criar um Diagrama apresentando uma situação de Herança
Múltipla diferente do exemplo apresentado nesse material