• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java oo-heranca
 

Java oo-heranca

on

  • 482 views

 

Statistics

Views

Total Views
482
Views on SlideShare
482
Embed Views
0

Actions

Likes
0
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java oo-heranca Java oo-heranca Presentation Transcript

    • 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 Locais como parâmetros do métodoVariáveis Declaradas dentro de uma classe, mas não Instância dentro de um método
    • Tipos de variáveis São inicializadas automaticamente Variáveis Precisam ser locais inicializadas sempre
    • 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
    • Criando objetos
    • A criação de Adão
    • Criando umobjeto de uma Ou criando instanciando a classe classe nome da new ( ) classe lista de argumentos
    • 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 construtores
    • Exemplo
    • Exemplo
    • 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 >
    • Exemplo com this
    • Exemplo com this
    • Herança
    • 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
    • Herança – como descobrir ? Classe A Classe B B é sub-classe de A ? isto é, B estende A ? Faça o teste: B é uma A?
    • Herança Classe A Super-classes de C Classe B Classe GSub-classes de Classe C C Classe D Classe F Classe E
    • A classe ObjectÉ a classe mãe de todas as outras classes em Java Object Classe B Classe C Classe D
    • A classe Object Por exemplo: • getClass( ) • equals( ) • toString( )
    • 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
    • Herança – reutilização de campos Classe A Campo 1 ... Campo NClasse B Classe DClasse C
    • 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
    • Herança – reutilização de métodos Classe A Método 1 ... Método NClasse B Classe DClasse C
    • 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
    • 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 PessoaClasse Classe filha filha Estudante Professor
    • 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
    • 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”); } . . . . }
    • 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
    • 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
    • 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
    • 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 )
    • Exemplo - herança
    • 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
    • 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 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>
    • Código da classe Cachorro Chamadas ao construtor da classe mãe Chamada ao métodoshow( ) da classe mãe
    • 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 !
    • Código da classe Cocker Chamada ao construtor da classe CachorroChamada ao método show( ) da classe Cachorro
    • 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
    • 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
    • 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.
    • 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?