Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Programação Orientação a Objetos - Herança

509 views

Published on

Apostila sobre herança, um dos principais conceitos da programação orientada a objetos.

Published in: Technology
  • Be the first to comment

Programação Orientação a Objetos - Herança

  1. 1. Herança
  2. 2. Vamos imaginar o funcionamento do sistema acadêmico do Unipê, que controla o cadastro de alunos, professores e funcionários. Herança 4
  3. 3. Vamos imaginar o funcionamento de um sistema acadêmico do Unipê, que controla o cadastro de alunos, professores e funcionários Herança 5
  4. 4. Conceito • Imagine se um dia precisarmos adicionar uma nova informação(CPF, por exemplo), para todas as Pessoas do controle acadêmico? • Precisaríamos ir de classe em classe adicionando a informação do CPF. Herança 6
  5. 5. Conceito • Ao modelar um conjunto de classes, podemos encontrar classes semelhantes na estrutura e no comportamento. • Existe uma maneira, em Java, de relacionarmos uma classe de tal maneira que uma delas herda tudo que a outra tem. Herança 7
  6. 6. Então, como implementar? •A ideia central de herança é que novas classes são criadas a partir de classes já existentes. • Subclasse herda de uma Superclasse • Subclasse é mais específica que a Superclasse •Herança é uma técnica para prover suporte a especialização • Classes mais abaixo: especializadas • Classes mais acima: genéricas Herança 8
  7. 7. Representação Pessoa -nome -email -telefone -idade -sexo Herança 9 Professor -salario -disciplina Aluno -matricula -notas Funcionario -salario Em todo momento que criarmos um objeto do tipo Professor, ou Aluno, ou Funcionário, este objeto possuirá também os atributos e métodos definidos na classe Pessoa, pois agora ele é umaPessoa
  8. 8. Sobreposição • Pode-se modificar algum método da minha superclasse? Sim, através da sobreposição! • Métodos implementados previamente em uma superclasse podem ser redefinidos por qualquer subclasse Herança 10 Para isso, mantém-se a mesma assinatura do método herdado, redefinindo apenas o corpo do método
  9. 9. Tipos de Herança  Herança pura  métodos genéricos são sobrepostos  Extensão  novos comportamentos são adicionados nas classes de especialização (métodos genéricos herdados) • Por exemplo: Herança 11 Forma +desenha() +apaga() Quadrado +desenha() +apaga() Circulo +desenha() +apaga() +defineRaio() Herança Pura Extensão
  10. 10. Posso herdar de várias Classes? •Cada subclasse possui uma única superclasse • A isso, chamamos de herança simples • Em algumas linguagens, é possível herdar a partir de diversas superclasses (como em C++) • Java não permite herança múltipla com classes Herança 12
  11. 11. Recapitulando... • Se B é uma subclasse de A, então: • Os objetos de B suportam todas as operações suportadas pelos objetos de A, exceto aquelas que foram redefinidas • Os objetos de B incluem todas as variáveis de instância de B + todas as variáveis de instância de A • Métodos declarados como private não serão herdados • Construtores também não são herdados • Serão chamados (em cascata) na construção de objetos especializados(super()). Herança 13
  12. 12. Como acessar os atributos que herdamos? Herança 14
  13. 13. Como acessar os atributos que herdamos? • Se deixarmos os atributos como public, qualquer um poderia alterar os atributos dos objetos deste tipo. • Existe um outro modificador de acesso, o protected, que fica entre o private e o public. Um atributo protected só pode ser acessado (visível) pela própria classe e por suas subclasses . Herança 15
  14. 14. Como implementar nosso primeiro exemplo? Herança 16
  15. 15. Antes de aplicar Herança Herança 17
  16. 16. Depois Herança 18
  17. 17. Exercício 1 A) Seguindo o modelo do exemplo, vamos criar uma classe chamada Pessoa. Ela deverá ter as características nome, email, telefone, idade, sexo. B) Teremos também 3 tipos de pessoas, como: Aluno que terá ainda Matricula e a Nota. Professor terá como atributos adicionais seu Salário e Disciplina. E a Secretária terá como adicional apenas o salário. Crie uma classe para cada um. C) Por ultimo, vamos criar uma classe para testar cada um dos atributos. Herança 19
  18. 18. • Vamos supor um sistema de um banco, que controle seus clientes e suas contas... Estudo de Caso 2 > Sistema Bancário
  19. 19. Conta Poupança • Cliente • Número • DataAbertura • Saldo • TaxaRendimento • Creditar • Debitar • CreditarRendimento Conta Corrente • Cliente • Número • DataAbertura • Saldo • TaxaManutencao • TaxaOperacao • Creditar • Debitar • DebitarManutenção Sistema Bancário > SisBank
  20. 20. Conta Poupança Conta Corrente Sistema Bancário > SisBank O que existe de semelhante entre estes dois? R: São Contas!
  21. 21. Conta Poupança • Cliente • Número • DataAbertura • Saldo • TaxaRendimento Creditar Debitar CreditarRendimento Conta Corrente • Cliente • Número • DataAbertura • Saldo • TaxaManutencao • TaxaOperacao Creditar Debitar DebitarManutenção Sistema Bancário > SisBank
  22. 22. • Com a herança é possível identificar que as classes ContaCorrente e ContaPoupança irão aproveitar tudo que está na classe Conta! Implementando Herança
  23. 23. •Mas e o Construtor da subclasse, Como fica? •Precisamos chamar o construtor da superclasse! • Operador: super Implementando Herança
  24. 24. •Detalhe importante: • A classe Conta pode existir no nosso sistema bancário? SisBank
  25. 25. •Detalhe importante: • A classe Conta pode “existir” no nosso sistema bancário? •R: Não, essa é uma classe que apenas reúne características semelhantes entre ContaCorrente e ContaPoupanca. A classe Conta não pode ser instanciada! SisBank
  26. 26. •Como implementar para que a classe Conta não possa ser instanciada? •R: Definindo-a como “classe abstrata”! Classe Abstrata
  27. 27. •O que é uma classe Abstrata? •É uma classe que não pode ser instanciada, ou seja, não gera objetos; •É utilizada apenas como superclasse em hierarquia de heranças; •Também é conhecida como “superclasse abstrata”; •Reúne características semelhantes de classes. •Operador: abstract Classe Abstrata
  28. 28. • No nosso sistema bancário, o método debitar irá se comportar de maneira diferente para as implementações em ContaCorrente e ContaPoupanca: • Corrente: ao solicitar para se debitar um valor, deve-se também debitar o valor da taxa de operação da conta; • Poupança: ao solicitar para se debitar um valor, deve-se verificar se a conta já possui mais de um ano de abertura; SisBank
  29. 29. •Como garantir que as classes herdeiras irão implementar um método? • R: Métodos abstratos! • Não possui implementação; • Toda classe herdeira direta deverá obrigatoriamente implementar. • Esse é um conceito do Polimorfismo: o mesmo nome e assinatura de método podem ser utilizados para realizar diferentes ações, dependendo da implementação do método da classe! Métodos Abstratos
  30. 30. Exercício 2 A) Vamos criar uma classe Conta, que possua um saldo, os métodos para pegar saldo, creditar e debitar B) Adicione um método na classe Conta, que atualiza essa conta de acordo com uma taxa percentual fornecida C) Crie duas subclasses da classe Conta: ContaCorrente e ContaPoupanca. Ambas terão o método atualiza sobrescrito: A ContaCorrente deve atualizar-se com o dobro da taxa e a ContaPoupanca deve atualizar-se com o triplo da taxa • D) Além disso, a ContaCorrente deve reescrever o método creditar, a fim de retirar uma taxa bancária de dez centavos de cada depósito 32Herança

×