O documento discute a herança em Java para reestruturar código repetido de classes de funcionários. Propõe criar uma classe Funcionario como superclasse e subclasses Gerente e Professor que herdam atributos e métodos de Funcionario. Isso centraliza informações de funcionários e facilita manutenção caso necessitem adicionar novos atributos ou tipos de funcionários no futuro.
4. Poderíamos ter deixado a
classe Funcionario mais genérica,
◦ mantendo nela senha de acesso, e o número de
funcionários gerenciados.
◦ Caso o funcionário não fosse um gerente,
deixaríamos estes atributos vazios.
Muito atributos opcionais
◦ Muito espaço vazio
Métodos
◦ Gerente tem o método autentica, que não faz
sentido existir em um funcionário que não é
gerente.
5. Se tivéssemos um outro tipo de funcionário
que tem características diferentes do
funcionário comum, precisaríamos criar uma
outra classe e copiar o código novamente
Se um dia precisarmos adicionar uma nova
informação para todos os funcionários,
precisaremos passar por todas as classes de
funcionário e adicionar esse atributo.
6. Centralizar as informações de Funcionário
Em Java, de relacionarmos uma classe de tal
maneira que uma delas herda tudo que a
outra tem.
No nosso caso, gostaríamos de fazer com
que o Gerente tivesse tudo que
umFuncionario tem, gostaríamos que ela
fosse uma extensão de Funcionario.
Uso do termo extends
8. A classe Gerente herda todos os atributos e
métodos da classe mãe, no nosso caso,
a Funcionario.
9. Adaptar ou alterar métodos de classes
existentes, bem como também adicionar
métodos ou atributos, com o objetivo de
adaptar as classes para novas situações
A subclasse herda atributos e métodos da
superclasse.
10. Super e Sub classe
◦ Funcionario é a superclasse de Gerente
◦ Gerente é a subclasse de Funcionario.
Todo Gerente é um Funcionário.
é-um GeneralizaçãoEspecialização
11. Public:
◦ qualquer classe pode alterar os atributos dos
objetos deste tipo.
Private:
◦ Somente pode ser acessado de dentro da classe
Protected
◦ Entre o private e o public
◦ só pode ser acessado (visível) pela própria classe,
por suas subclasses e classes do mesmo pacote
12.
13. Métodos herdados podem ser reescritos nas
subclasses
Ao herdar um método, podemos alterar seu
comportamento.
Reescrever (@override) o método:
14. Métodos (ou atributos) da superclasse podem
ser invocados com o uso da palavra chave
super
17. A chamada a super deve ser a primeira
instrução do construtor da subclasse
Se não houver a chamada a super, então o
construtor padrão (sem argumentos) da
superclasse é chamado
Se a superclasse não tiver construtor padrão,
ocorrerá um erro de compilação
19. Na herança, todo Gerente é um Funcionario
Podemos nos referir a um Gerente como
sendo um Funcionario.
Se alguém precisa falar com
um Funcionario do banco, pode falar com
um Gerente.
20. Polimorfismo é a capacidade de um objeto
poder ser referenciado de várias formas.
21. Polimorfismo é a capacidade de um objeto
poder ser referenciado de várias formas.
No Java, a invocação de método sempre vai
ser decidida em tempo de execução.
O método executado é o do Gerente.
22.
23.
24. Sistema de Faculdade que controle despesas
com funcionários e professores
26. O gasto que temos com o professor não é
apenas seu salário. Temos de somar um
bônus de 10 reais por hora/aula.
27. Gerador de Relatórios
◦ Podemos passar para nossa classe
qualquer EmpregadoDaFaculdade.
◦ Vai funcionar tanto para professor, quanto para
funcionário comum.
28. Benefício:
◦ Se desejarmos adicionar uma nova classe que
estende EmpregadoDaFaculdade, não é necessário
alterar a classe Relatório.