Arthur E. de O. Carosia
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.
 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.
 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
 O gerente “é um” funcionário
 A classe Gerente herda todos os atributos e
métodos da classe mãe, no nosso caso,
a Funcionario.
 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.
 Super e Sub classe
◦ Funcionario é a superclasse de Gerente
◦ Gerente é a subclasse de Funcionario.
 Todo Gerente é um Funcionário.
é-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
 Métodos herdados podem ser reescritos nas
subclasses
 Ao herdar um método, podemos alterar seu
comportamento.
 Reescrever (@override) o método:
 Métodos (ou atributos) da superclasse podem
ser invocados com o uso da palavra chave
super
 Construtores da superclasse também podem
ser invocados
 Construtores da superclasse também podem
ser invocados
 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
 Lista de Exercícios no Moodle
 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 é a capacidade de um objeto
poder ser referenciado de várias formas.
 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.
 Sistema de Faculdade que controle despesas
com funcionários e professores
 Funcionário
 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.
 Gerador de Relatórios
◦ Podemos passar para nossa classe
qualquer EmpregadoDaFaculdade.
◦ Vai funcionar tanto para professor, quanto para
funcionário comum.
 Benefício:
◦ Se desejarmos adicionar uma nova classe que
estende EmpregadoDaFaculdade, não é necessário
alterar a classe Relatório.
 Moodle
Arthur E. de O. Carosia

Java: Heranca e polimorfismo

  • 1.
    Arthur E. deO. Carosia
  • 3.
  • 4.
     Poderíamos terdeixado 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éssemosum 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 asinformaçõ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
  • 7.
     O gerente“é um” funcionário
  • 8.
     A classeGerente herda todos os atributos e métodos da classe mãe, no nosso caso, a Funcionario.
  • 9.
     Adaptar oualterar 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 eSub classe ◦ Funcionario é a superclasse de Gerente ◦ Gerente é a subclasse de Funcionario.  Todo Gerente é um Funcionário. é-um GeneralizaçãoEspecialização
  • 11.
     Public: ◦ qualquerclasse 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
  • 13.
     Métodos herdadospodem ser reescritos nas subclasses  Ao herdar um método, podemos alterar seu comportamento.  Reescrever (@override) o método:
  • 14.
     Métodos (ouatributos) da superclasse podem ser invocados com o uso da palavra chave super
  • 15.
     Construtores dasuperclasse também podem ser invocados
  • 16.
     Construtores dasuperclasse também podem ser invocados
  • 17.
     A chamadaa 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
  • 18.
     Lista deExercícios no Moodle
  • 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.
  • 24.
     Sistema deFaculdade que controle despesas com funcionários e professores
  • 25.
  • 26.
     O gastoque temos com o professor não é apenas seu salário. Temos de somar um bônus de 10 reais por hora/aula.
  • 27.
     Gerador deRelatórios ◦ Podemos passar para nossa classe qualquer EmpregadoDaFaculdade. ◦ Vai funcionar tanto para professor, quanto para funcionário comum.
  • 28.
     Benefício: ◦ Sedesejarmos adicionar uma nova classe que estende EmpregadoDaFaculdade, não é necessário alterar a classe Relatório.
  • 29.
  • 30.
    Arthur E. deO. Carosia