Aula 13 Herança e Polimorfismo

17
Herança e Polimorfismo Herança e Polimorfismo Programação Orientada a Objetos Programação Orientada a Objetos Prof. Bruno Gomes Prof. Bruno Gomes [email protected] [email protected]

description

Aula de Herança e poliformismo

Transcript of Aula 13 Herança e Polimorfismo

  • Herana e PolimorfismoHerana e Polimorfismo

    Programao Orientada a ObjetosProgramao Orientada a Objetos

    Prof. Bruno GomesProf. Bruno Gomes

    [email protected]@ifrn.edu.br

  • Revisando Revisando -- HeranaHerana

    Estrutura Hierrquica e modular

    Projeo de classes genricas que podem ser

    especializadas em classes mais particulares

    Classes especializadas reutilizam o cdigo das Classes especializadas reutilizam o cdigo das

    mais genricas AB

    CA

    BA

    BC

    D

    E

    Caractersticas

    Herdadas

    Classe Genrica

    Classe

    Especializada

    Classe

    Especializada

  • Revisando Revisando -- HeranaHerana

    Classe genrica, classe base, superclasse ou pai:

    Define variveis de instncia genricas e mtodos

    Classe especializada, derivada, subclasse ou filha:

    Especializa, estende ou herda os mtodos genricos de Especializa, estende ou herda os mtodos genricos de uma superclasse

    Define apenas os mtodos que so especializados

  • Revisando Revisando -- PolimorfismoPolimorfismo

    Significa vrias formas

    Habilidade de um mesmo tipo de objeto

    poder realizar aes diferentes ao receber

    uma mesma mensagemuma mesma mensagem

    Criao de mltiplas classes com os mesmos

    mtodos e propriedades, mas com

    funcionalidades e implementaes diferentes

    Reescrita de cdigo

  • Revisando Revisando -- PolimorfismoPolimorfismo

    Representao

    Mtodo:

    respirar()Animal

    Cachorro Peixe

    Herdam

  • Revisando Revisando -- ConceitosConceitos

    Reuso de uma classe

    Tudo que foi definido para uma classe vai ser aproveitado em outra classe

    Representa especializao

    Um tipo mais genrico cujas caractersticas sero herdadas por outra classeUm tipo mais genrico cujas caractersticas sero herdadas por outra classe

    Comportamento pode ser herdado ou modificado

    Classe A e classe B

    B herda de A

    B subtipo de A

    B subclasse A

    Todos os atributos e mtodos definidos em A tambm existem em B

  • HeranaHerana

    Seta vazadaSeta vazadaIndica herana

  • HeranaHerana

    Carro possui todas as caractersticas de

    Terreste e tambm de Veiculo

  • Herana Herana -- ImplementaoImplementao

    class ClasseA {protected int a;public int getA() {

    return a;}

    public void setA(int a) {this.a = a;this.a = a;

    }

    }

    class ClasseB extends ClasseA{private int b;public int getB() {

    return b;}

    public void setB(int b) {this.b = b;

    }

    }

    extends usado para indicar herana em JAVA

  • Herana Herana -- ImplementaoImplementao

    public static void main(String args[]) {ClasseA a = new ClasseA();ClasseB b = new ClasseB();a.setA(10);b.setA(20);b.setB(30);

    Mtodo herdado de

    ClasseA

    b.setB(30);System.out.println(a.getA());System.out.println(b.getB());System.out.println(b.getA());

    }

    Todos os membros definidos em ClasseA

    tambm existem em ClasseB

  • SubtiposSubtipos

    Uma classe que herda de outra um subtipo

    Herana representa relacionamento um

    Carro um veculo

    Livro uma publicao

    Cachorro um mamfero Cachorro um mamfero

    Podemos ter uma varivel do tipo ClasseA que

    referencia um objeto do tipo ClasseBClasseA a,b;

    a = new ClasseA();

    b = new ClasseB();

    a.setA(10);

    b.setA(20);

    //b.setB(30);

    System.out.println(a.getA()+b.getA());

    varivel b NOexecuta mtodosde ClasseB, poisela s conhece ainterface deClasseA

  • Classe Classe ObjectObject

    Classe base em JAVA

    Tudo herda de Object

    Define alguns mtodos:

    public String toString()public String toString()

    public boolean equals()

    entre outros...

    class UmaClasse {/* ... */

    }class UmaClasse extends Object{

    /* ... */

    }

    Includo por padro

  • Teste de IgualdadeTeste de Igualdade

    Operador instanceof

    Determina se um objeto obj de uma classe Cla

    retorna valor lgico (booleano)

    sintaxe: obj instanceof Cla

    public static void main(String args[]){

    ClasseA obj;

    obj = new ClasseC();

    if (obj instanceof ClasseA)

    System.out.println("obj ClasseA");

    if (obj instanceof ClasseB)

    System.out.println("obj ClasseB");

    if (obj instanceof ClasseC)

    System.out.println("obj ClasseC");

    }

    obj da ClasseA

    e da ClasseC

  • ConstrutoresConstrutores

    Toda classe JAVA tem pelo menos um construtor

    Se no for definido cria um padro

    public NomeClasse(){...}

    Todo construtor deve chamar o construtor da superclasse

    Deve ser o primeiro comando do construtor Deve ser o primeiro comando do construtor

    Compilador coloca cdigo caso o programador no coloque

    class ClasseD extends ClasseA{public ClasseD(){

    super();/*...*/

    }

    }

    class ClasseD extends ClasseA{public ClasseD(){

    /*...*/

    }

    }

  • ConstrutoresConstrutores

    O cdigo abaixo pode no compilar

    class ClasseD extends ClasseA{public ClasseD(){

    /*...*/}

    Se ClasseA no possuir construtor sem

    argumentos

    }}

  • Exerccio em SalaExerccio em Sala

    Implementar as classes do seguinte diagrama:

    Detalhes no prximo slide

  • Exerccio em SalaExerccio em Sala

    Todas as classes devem ter construtor

    parametrizado, acessando os construtores da

    classe pai

    Criem uma classe de teste Criem uma classe de teste