O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Java oo-heranca

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Poo
Poo
Carregando em…3
×

Confira estes a seguir

1 de 57 Anúncio

Mais Conteúdo rRelacionado

Mais recentes (20)

Anúncio

Java oo-heranca

  1. 1. POO, em Java, com Eclipse e Netbeans
  2. 2. Tópicos da aula 1. A pilha e a heap 2. Criando objetos 3. Herança 4. Exemplo de herança
  3. 3. A pilha e a heap
  4. 4. A Lição de anatomia do Dr. Tulp
  5. 5. Pilha A pilha e a heap Onde as coisas residem Heap
  6. 6. Pilha Pilha
  7. 7. Heap Heap
  8. 8. Um monte de bicicletas
  9. 9. Tipos de variáveis Declaradas dentro de um método, inclusive Locais como parâmetros do método Variáveis Declaradas dentro de uma classe, mas não Instância dentro de um método
  10. 10. Tipos de variáveis São inicializadas automaticamente Variáveis Precisam ser locais inicializadas sempre
  11. 11. Pilha A pilha e a heap Na heap residem os objetos e as variáveis de instância Na pilha residem as variáveis locais, referências a objetos e chamadas a métodos Heap
  12. 12. Criando objetos
  13. 13. A criação de Adão
  14. 14. Criando um objeto de uma Ou criando instanciando a classe classe nome da new ( ) classe lista de argumentos
  15. 15. Criando bicicletas
  16. 16. As três etapas do milagre da criação a pilha heap
  17. 17. Chamando um construtor de outro Ele precisa ser o primeiro comando Ele só pode ser usado em construtores
  18. 18. Exemplo
  19. 19. Exemplo
  20. 20. A auto-referência this Cada objeto pode acessar uma referência a si próprio por meio da palavra-chave this this.< nomeDaVariávelDeInstância >
  21. 21. Exemplo com this
  22. 22. Exemplo com this
  23. 23. Herança
  24. 24. Herança Classe mãe ou Super-classe Classe A Classe filha ou Classe B Sub-classe Conforme os atributos de visibilidade, a sub- classe herda as características da super-classe
  25. 25. Herança – como descobrir ? Classe A Classe B B é sub-classe de A ? isto é, B estende A ? Faça o teste: B é uma A?
  26. 26. Herança Classe A Super-classes de C Classe B Classe G Sub-classes de Classe C C Classe D Classe F Classe E
  27. 27. A classe Object É a classe mãe de todas as outras classes em Java Object Classe B Classe C Classe D
  28. 28. A classe Object Por exemplo: • getClass( ) • equals( ) • toString( )
  29. 29. Herança e visibilidade Acesso permitido Private Default Protected Public Mesma classe Sim Sim Sim Sim Herança Outra classe, mesmo Não Sim Sim Sim pacote Sub-classe, outro Não Não Sim Sim pacote Fora de sub-classe, Não Não Não Sim outro pacote
  30. 30. Herança – reutilização de campos Classe A Campo 1 ... Campo N Classe B Classe D Classe C
  31. 31. Herança – reutilização de campos Classe A Campo 1 Herda os campos Campo 2 Campo 1 Campo 2 o Campo 3 é novo Classe B Campo 3 Podem ser criados campos novos, inclusive com o mesmo nome. Nesse caso campo correspondente da super- classe é ocultado
  32. 32. Herança – reutilização de métodos Classe A Método 1 ... Método N Classe B Classe D Classe C
  33. 33. Herança – reutilização de métodos Sub-classes precisam implementar apenas Classe A Método 1 aquilo que acrescentam Método 2 à super-classe Classe B Classe C A Classe C herda o Método 1 e o Método 2 Método 3 da Classe A e o Método 3 da Classe B Método 4
  34. 34. Herança – sobrescrevendo/ocultando Classe A Método 1 Método 2 Classe B Método 2
  35. 35. Quando sobrescrever métodos
  36. 36. Como derivar sub-classes ? Classe mãe Pessoa Classe Classe filha filha Estudante Professor
  37. 37. Declaração da classe mãe public class Pessoa{ protected String nome; protected String endereco; ... } palavra-chave Classe mãe public class Estudante extends Pessoa { ... } Declaração da classe filha
  38. 38. Os construtores public class Pessoa{ Construtor de protected String nome; Pessoa protected String endereco; public Pessoa(){ System.out.println(“Construtor, a partir de Pessoa”); nome = ""; endereco = ""; } . . . . } Construtor de public class Estudante extends Pessoa { Estudante public Estudante(){ System.out.println(“Construtor, a partir de Estudante”); } . . . . }
  39. 39. Chamadas aos construtores Criando gilberto um objeto da public static main( String[] args ) { classe Estudante Estudante gilberto = new Estudante(); } Construtor, a partir de Pessoa Construtor, a partir de Estudante Quando um objeto de uma sub-classe é instanciado, o construtor default da super-classe, é invocado implicitamente, antes do construtor da sub-classe ser invocado
  40. 40. A palavra-chave super Uma sub-classe pode, também, chamar explicitamente um construtor da super-classe imediatamente superior Tal chamada resultará na execução do construtor relevante (aquele associado aos parâmetros passados) da super-classe
  41. 41. Usando super Passagem dos parâmetros nome e endereco de acordo com a assinatura do construtor da super-classe, Pessoa public Estudante(){ super( “Gustavo", “Av. Getúlio Vargas, 300" ); System.out.println(“Construtor de Pessoa, a partir de Estudante"); } A chamada a super() precisa ser o primeiro comando no construtor A chamada a super() só pode ser feita a partir de um construtor
  42. 42. Usando super public Student() { super.nome = “Gustavo”; super.endereco = “Av. Getúlio Vargas, 300”; } Outra forma de usar super é empregar a sintaxe do . para referenciar os membros da super-classe ( semelhante a this )
  43. 43. Exemplo - herança
  44. 44. Construiremos a seguir Um exemplo Animal ! um exemplo mais longo, envolvendo a criação de objetos, os conceitos de O exemplo envolve três herança e o de classes no seguinte polimorfismo (sobre o esquema de herança método show( ) ). Demonstraremos também Animal a utilização de super, super( ) e this . Cachorro Cocker
  45. 45. Chamando o main
  46. 46. O resultado do main
  47. 47. A classe Animal Animal tipo cor Animal( tipo, cor ) show( ) getCor( ) Eu sou um <tipo> <cor>
  48. 48. Código da classe Animal
  49. 49. A subclasse Cachorro Cachorro nome Naturalmente a subclasse raça Cachorro herda da classe mãe, Animal, os campos tipo Cachorro( nome, cor) e cor e pode utilizar os Cachorro( nome, raça, cor ) métodos show( ) e getCor( ) show( ) definidos na Animal Eu sou um <tipo> <cor> <nome> é um <raça>
  50. 50. Código da classe Cachorro Chamadas ao construtor da classe mãe Chamada ao método show( ) da classe mãe
  51. 51. A subclasse Cocker Naturalmente a subclasse Cocker herda da classe mãe, Cachorro , os campos nome e Cocker raça e herda da classe avó os vacina campos tipo e cor Cocker( nome, cor, vacina) show( ) O método show( ) exibirá na tela: • as mensagens que herda da classe mãe • e também uma mensagem Eu sou um <tipo> <cor> que depende do valor do <nome> é um <raça> campo vacina Se vacina = true: Se vacina = false: Cachorro vacinado ! Vacinar cachorro !
  52. 52. Código da classe Cocker Chamada ao construtor da classe Cachorro Chamada ao método show( ) da classe Cachorro
  53. 53. Exercício 1 Criar uma classe Pessoa com: • Atributos: – nome; – endereço,; – email; – telefone • Construtores: – default; – que receba nome e email; – que receba nome, endereço, email e telefone (lembre-se que podemos chamar outros construtores da própria classe através do this) • Utilizar encapsulamento. • Sobrescrever o método toString() que pertence a classe Object para imprimir os dados no formato: (Nome: xxx /n Email: xxx /n etc...) • Criar classe com método main e instanciar 5 pessoas e imprimir as instâncias
  54. 54. Exercício 2 Estender a classe Pessoa para duas outras classes • PessoaFisica – Possui o atributo CPF • PessoaJuridica – Possui o atributo CNPJ • Sobrescrever o método toString() para imprimir os dados adicionais alem dos da classe “mãe” • Utilizar a super nos construtores das classes filhas • Criar uma classe com método main e instanciar 3 pessoas de cada
  55. 55. Exercício 3 Nosso sistema possui uma classe chamada Manobrista que possui um método chamado estacionar. Este método recebe um objeto e realiza as seguintes operações: • acelerar; • freiar; • virar(direção); • engatarMarcha(marcha); Sabendo que osistema pode receber vários tipos de veículos (carros, motos, caminhões, ônibus), crie uma hierarquia de classes para resolver o problema do manobrista.
  56. 56. Exercício 4 Nosso estacionamento recebe um novo cliente chamado James Bond. Ele trouxe dois carros para estacionar. Como seriam as classes para estes carros? Qual classe estes carros devem estender e quais atributos devemos modificar? Sabendo que os carros de Bond sempre tem algo diferente de outros carros, qual a solução ideal para resolvermos este problema?

×