Buscar

Aula 07 - Herança

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 21 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Professor Marcel Melo
marcel.melo@ifgoiano.edu.br
Programação Orientada a Objetos
Herança
mailto:marcel.melo@ifgoiano.edu.br
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Problemática
Com o desejo de deixar as classes cada vez mais genéricas é necessário omitir 
informações/detalhes (atributos) da classe, algumas vezes importante para o objeto a ser 
criado. 
E/ou adicionar tais informações, mesmo com a certeza que alguns objetos não utilizaram 
estas informações, e quando não necessário deixar tais atributos em branco (ou nulo).
● E os métodos que são importantes para alguns objetos e não faz nenhum sentido 
existir para outros? 
Uma solução muito comum é criar uma classe para cada tipo de objeto. Porém para 
objetos semelhantes é comum que vários atributos se repitam entre essas classes 
parecidas. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Reutilização de código
A cópia de informação entre classes, muitas vezes é sinal de um projeto mal 
planejado. Sempre que possível é importante reutilizar código. 
Uma das principais vantagens do uso do paradigma orientado a objetos é a 
reutilização de código. 
Reutilizar código traz várias vantagens para o projeto:
● Facilidade de manutenção;
● Organização e qualidade do código-fonte;
● Diminuição do tempo de desenvolvimento
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Herança
A herança é a capacidade de uma classe herdar informações e comportamentos de 
outra classe previamente existente.
● A herança é aplicada tanto para atributos quanto para métodos.
O principal objetivo da herança é criar uma nova classe a partir de uma outra já 
existente. 
A partir da herança, a nova classe criada pode aprimorar, ou especializar, a classe 
original.
● Tal especialização pode ocorrer com a criação de novos atributos e 
métodos. 
Herança sempre pode ser traduzida 
como uma relação: é um(a)
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Herança no Java
Para criar uma relação de herança no Java utiliza-se a palavra chave extends na 
definição da classe. 
Na criação da classe é informado além do nome da classe, o nome da classe-mãe a 
qual irá se herdar atributos e métodos. 
Lembre-se que a classe-mãe já deve existir no projeto para que ela possa ser 
estendida por outra classe. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
herança
Em uma herança, a classe da qual outras classes herdam é chamada classe mãe, 
base ou superclasse. 
● Pode-se dizer ainda que a classe-mãe/superclasse generaliza atributos e 
métodos comuns de várias outras classes.
A classe que herda informações e comportamento de outra classe é chamada de 
classe filha, derivada ou subclasse. 
● Pode-se dizer que as classes-filhas/subclasses são especializações da 
classe-mãe/superclasse. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
herança
A herança deve ser utilizada visando a reutilização de características e 
comportamentos (atributos e métodos). Ou seja, as classes derivadas devem se 
comportar como as superclasses. 
Para isso sempre deve ocorrer uma hierarquia de generalização/especialização 
entre as classes. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Protected ou private?
O modificador de acesso protected permite que atributos e métodos definidos como 
protegidos sejam diretamente acessados pela classe onde está definidos, 
classes-filhas e classes do mesmo pacote. 
Apesar de interessante deve-se ser cauteloso no uso do modificador 
protected. Além das classes-filhas tais atributos e métodos poderão ser acessados 
por todas classes do mesmo pacote.
É mais interessante que somente a classe que cria os atributos podem manipulá-los, 
deixando para as demais classes, filhas ou não, manipular tais atributos por meio 
dos métodos públicos. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
protected ou private?
Ainda para evitar os problemas resolvidos pelo encapsulamento, é interessante que 
as classes filhas utilize os métodos criados pela classe-mãe para modificar qualquer 
atributos que sejam herdados.
Em caso especiais, que seja interessante que classes filhas trabalhem diretamente 
com os atributos, estes podem ser trabalhados com protected.
Em casos de métodos internos, definidos como private, podem ser transformados 
em protected para que as classes filhas possam utilizar esses métodos, caso seja 
interessante para o problema. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Construtor e super();
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
herança múltipla
Suponha um sistema para a Federação Brasileira de Atletismo onde precisa-se definir as 
seguintes classes:
● Nadador
● Corredor
● Ciclista
● Triatleta
Analisando o problemas, e de acordo com os conceitos aprendidos de herança, chega-se 
a conclusão que todos os atletas sem características e comportamentos semelhantes e 
que pode-se então criar uma classe Atleta. 
Ainda pode-se entrar mais a fundo no problema e definir a classe Pessoa, com as 
características e comportamentos comuns a todas pessoas. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Herança Múltipla
Então, até o momento teremos uma superclasse Pessoa, da qual herdará a classe 
Atleta que, por sua vez, tem como subclasses a classe Nadador, Corredor, Ciclista e 
Triatleta. 
Mas, note que, um triatleta possui o comportamento de Nadador, Corredor e Ciclista, 
podendo assim herdar todo comportamento dessas três classes ao mesmo tempo. 
No caso de triatleta emprega-se o conceito de herança múltipla. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Herança Múltipla
A Herança múltipla acontece quando uma subclasse herda comportamento e 
características de duas ou mais classes. 
O Java não implementa o conceito de herança múltipla. No Java só é possível 
aplicar o conceito de herança simples, onde uma subclasse só herda características 
e comportamentos de uma única superclasse. 
Porém, em linguagens como Python e C++ este conceito é implementado. 
Instituto Federal Goiano - Campus Morrinhos - Professor Marcel Melo - marcel.melo@ifgoiano.edu.br
Exercício
A partir do exemplo apresentado nesta aula, crie a seguintes classes usando o 
conceito de herança:
● Pessoa - Atributos e métodos comuns a todas pessoas
● Funcionário - Atributos e métodos comuns a todos funcionários
○ Todo funcionário é uma pessoa
● Horista - Atributos e métodos comuns a funcionários horistas
○ Todo Horista é um funcionário
○ Recebe apenas por hora trabalhada
● Assalariado - Atributos e métodos comuns a funcionários assalariados
○ Todo Assalariado é um funcionário
○ Recebe salário fixo;
○ Recebe Hora Extra => Valor da hora deve ser 50% a mais;

Outros materiais