POO, em Java,com Eclipse e Netbeans
Tópicos da aula1.   A pilha e a heap2.   Criando objetos3.   Herança4.   Exemplo de herança
A pilha e a heap
A Lição de anatomia do Dr. Tulp
Pilha         A pilha e a heap        Onde as         coisas        residem       Heap
PilhaPilha
HeapHeap
Um monte de bicicletas
Tipos de variáveis                         Declaradas dentro de                         um método, inclusive             L...
Tipos de variáveis                                      São inicializadas                                     automaticame...
Pilha                     A pilha e a heap                        Na heap residem                         os objetos e as ...
Criando objetos
A criação de Adão
Criando umobjeto de uma           Ou criando                      instanciando a    classe                 classe        n...
Criando bicicletas
As três etapas domilagre da criação  a      pilha          heap
Chamando um construtor      de outro         Ele precisa ser o primeiro comando         Ele só pode ser usado em construto...
Exemplo
Exemplo
A auto-referência this  Cada objeto pode acessar umareferência a si próprio por meio da        palavra-chave this     this...
Exemplo com this
Exemplo com this
Herança
Herança               Classe mãe                   ou              Super-classe Classe A            Classe filha          ...
Herança – como descobrir ?  Classe A     Classe B                             B é sub-classe de A ?                       ...
Herança                                 Classe A    Super-classes de           C                            Classe B   Cla...
A classe ObjectÉ a classe mãe de todas as outras classes em Java          Object         Classe B                        C...
A classe Object             Por exemplo:             • getClass( )             • equals( )             • toString( )
Herança e visibilidade           Acesso          permitido                                  Private   Default   Protected ...
Herança – reutilização de campos      Classe A                          Campo 1                            ...            ...
Herança – reutilização de camposClasse A    Campo 1           Herda os campos            Campo 2              Campo 1     ...
Herança – reutilização de métodos      Classe A                            Método 1                              ...      ...
Herança – reutilização de métodos                            Sub-classes precisam                            implementar a...
Herança – sobrescrevendo/ocultando Classe A   Método 1            Método 2 Classe B            Método 2
Quando sobrescrever     métodos
Como derivar sub-classes ?                              Classe                               mãe                     Pesso...
Declaração da                             classe mãepublic class Pessoa{    protected String nome;    protected String end...
Os construtores  public class Pessoa{               Construtor de     protected String nome;            Pessoa     protect...
Chamadas aos construtores                          Criando                                                  gilberto      ...
A palavra-chave super  Uma sub-classe pode,    também, chamar   explicitamente umconstrutor da super-classe imediatamente ...
Usando super                       Passagem dos parâmetros                                      nome e endereco           ...
Usando super  public Student() {      super.nome = “Gustavo”;      super.endereco = “Av. Getúlio Vargas, 300”;  }         ...
Exemplo - herança
Construiremos a seguir                            Um exemplo Animal ! um exemplo mais longo, envolvendo a criação de objet...
Chamando o main
O resultado do main
A classe AnimalAnimaltipocorAnimal( tipo, cor )show( )getCor( )                      Eu sou um <tipo> <cor>
Código da classe Animal
A subclasse CachorroCachorronome                                  Naturalmente a subclasseraça                            ...
Código da                classe               Cachorro       Chamadas ao    construtor da classe           mãe Chamada ao ...
A subclasse Cocker                            Naturalmente a subclasse                                            Cocker h...
Código da               classe               Cocker           Chamada ao        construtor da classe             CachorroC...
Exercício 1Criar uma classe Pessoa com:• Atributos:    –   nome;    –   endereço,;    –   email;    –   telefone• Construt...
Exercício 2Estender a classe Pessoa para duas outras classes• PessoaFisica   – Possui o atributo CPF• PessoaJuridica   – P...
Exercício 3 Nosso sistema possui uma classe chamada Manobrista que possui um método chamado estacionar. Este método recebe...
Exercício 4 Nosso estacionamento recebe um novo cliente chamado James Bond. Ele trouxe dois carros para estacionar. Como s...
Java oo-heranca
Próximos SlideShares
Carregando em…5
×

Java oo-heranca

665 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
665
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Java oo-heranca

  1. 1. POO, em Java,com Eclipse e Netbeans
  2. 2. Tópicos da aula1. A pilha e a heap2. Criando objetos3. Herança4. 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. PilhaPilha
  7. 7. HeapHeap
  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étodoVariá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 umobjeto 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 domilagre 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 umareferê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 GSub-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 SimHeranç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 NClasse B Classe DClasse C
  31. 31. Herança – reutilização de camposClasse A Campo 1 Herda os campos Campo 2 Campo 1 Campo 2 o Campo 3 é novoClasse 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 NClasse B Classe DClasse C
  33. 33. Herança – reutilização de métodos Sub-classes precisam implementar apenasClasse A Método 1 aquilo que acrescentam Método 2 à super-classeClasse BClasse 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 PessoaClasse Classe filha filha Estudante Professor
  37. 37. Declaração da classe mãepublic class Pessoa{ protected String nome; protected String endereco; ...} palavra-chave Classe mãepublic 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 umconstrutor 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, Pessoapublic 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 AnimalAnimaltipocorAnimal( tipo, cor )show( )getCor( ) Eu sou um <tipo> <cor>
  48. 48. Código da classe Animal
  49. 49. A subclasse CachorroCachorronome Naturalmente a subclasseraça Cachorro herda da classe mãe, Animal, os campos tipoCachorro( nome, cor) e cor e pode utilizar osCachorro( 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étodoshow( ) 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 CachorroChamada ao método show( ) da classe Cachorro
  53. 53. Exercício 1Criar 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 2Estender 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?

×