Transcript
HerançaArthur E. de O. Carosia
Repetição de Código
Repetição de Código
Código Repetido
Código Novo
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.
Problemas
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.
Problemas
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
Solução
O gerente “é um” funcionário
Solução
A classe Gerente herda todos os atributos e métodos da classe mãe, no nosso caso, a Funcionario.
Solução
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.
Herança
Super e Sub classe◦ Funcionario é a superclasse de Gerente◦ Gerente é a subclasse de Funcionario.
Todo Gerente é um Funcionário.
Herança
é-um GeneralizaçãoEspecialização
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
Acessar Atributos em SubClasses
Herança
Métodos herdados podem ser reescritos nas subclasses
Ao herdar um método, podemos alterar seu comportamento.
Reescrever (@override) o método:
Reescrita de Método
Métodos (ou atributos) da superclasse podem ser invocados com o uso da palavra chave super
Invocando métodos da Superclasse
Construtores da superclasse também podem ser invocados
Invocando métodos da Superclasse
Construtores da superclasse também podem ser invocados
Invocando métodos da Superclasse
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
Invocando métodos da Superclasse
Lista de Exercícios no Moodle
Exercícios
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.
Polimorfismo
Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas.
Polimorfismo
Polimorfismo é a capacidade de um objeto poder ser referenciado de várias formas.
Polimorfismo
No Java, a invocação de método sempre vai ser decidida em tempo de execução.
O método executado é o do Gerente.
Polimorfismo - Exemplo
Polimorfismo - Exemplo
Sistema de Faculdade que controle despesas com funcionários e professores
Polimorfismo – Exemplo 2
Funcionário
Polimorfismo
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.
Polimorfismo
Gerador de Relatórios◦ Podemos passar para nossa classe
qualquer EmpregadoDaFaculdade. ◦ Vai funcionar tanto para professor, quanto para
funcionário comum.
Polimorfismo
Benefício:◦ Se desejarmos adicionar uma nova classe que
estende EmpregadoDaFaculdade, não é necessário alterar a classe Relatório.
Polimorfismo
Moodle
Exercício Futebol de RuaGrupos de 2 Pessoas
HerançaArthur E. de O. Carosia
top related