lista object e interface

Upload: thiago-duarte

Post on 16-Oct-2015

6 views

Category:

Documents


0 download

TRANSCRIPT

  • 5/26/2018 Lista Object e Interface

    1/5

    TI0052Tcnicas de Programao para Engenharia II

    Herana, Polimorfismo e Interface

    O que e para que serve a classe Object

    Essa classe importante por um motivo bem simples: toda e qualquer classe em Java subclasse da Object. Mesmo quando no usamos 'extends Object', o Java automaticamente

    faz sua classe herdar a Object.

    Mtodos da classe Object:

    getClass()Esse mtodo retorna informaes do objeto atual, como o package e o nome da classe.

    Muito importante caso voc tenha vrios tipos de objeto, onde um herda do outro etc.

    Ele vai retornar o nome da classe que objeto foi criado, e no sua superclasse.clone()Retorna uma referncia - ou cpia - de um objeto. Voc deve implementar esse mtodo

    conforme sua necessidade. Para uma cpia total, voc deve implementar a cpia de cada

    varivel corretamente.

    Veja sobre a interface Cloneable:

    http://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html

    No exemplo ao final do artigo, fizemos um @Override do mtodo para que ele retorne umareferncia objeto quequeremos copiar. Pode usar tanto:

    Object copia = original.clone()

    ou:

    NomeDaClasse copia = (NomeDaClasse) original.clone();

    Mais informaes em:

    http://en.wikipedia.org/wiki/Clone_(Java_method)

    toString()

    Retorna uma string com a package, nome da classe e um hexadecimal que representa o objetoem questo.

    equals(Object obj)

    Faz a comparao entre dois Objects, e retorna true se os objetos forem o mesmo, e false se

    no forem o mesmo.

    til para saber se dois objetos apontam para o mesmo local na memria.

    hashCode()

    Esse mtodo retorna um inteironicode cada objeto, muito usado em Collections. Falaremos

    mais dele nos artigos sobre colees, em breve.

    Veja sobre HashMap:

    http://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.htmlhttp://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://en.wikipedia.org/wiki/Clone_%28Java_method%29http://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://en.wikipedia.org/wiki/Clone_%28Java_method%29http://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html
  • 5/26/2018 Lista Object e Interface

    2/5

    http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

    O hashCode tem uma ligao com o mtodo equals(), conforme voc pode ver no exemplo

    dado, l embaixo.

    bastante til quando trabalhamos comarquivos,para agilizar buscas e comparaes

    1. Exerccio com os mtodos da classe Object:

    A classe ObjectClass.java

    publicclassObjectClass{

    publicstaticvoidmain(String[] args) {

    ClasseTeste classe1 = newClasseTeste();

    ClasseTeste2 classe2 = newClasseTeste2();

    System.out.println("\ngetClass() da classeTeste: "+

    classe1.getClass());

    System.out.println("getClass() da classeTeste2: "+

    classe2.getClass());

    // Object classe3 = classe2.clone();

    classeTeste2 classe3 = (ClasseTeste2) classe2.clone();

    System.out.println("\nObjeto classe3 clone ao classe2?

    "+classe3.equals(classe2));

    System.out.println("\ntoString da classe1:

    "+classe1.toString());

    System.out.println("toString da classe2:

    "+classe2.toString());

    System.out.println("\nObjeto classe1 igual classe2 ? "+

    classe2.equals(classe1));

    System.out.println("Objeto classe1 igual classe1 ? "+

    classe1.equals(classe1));

    System.out.println("Objeto classe2 igual classe3 ? "+

    classe2.equals(classe3));

    System.out.println("\nHash code da classe 1:

    "+classe1.hashCode());

    System.out.println("Hash code da classe 2:

    "+classe2.hashCode());

    System.out.println("Hash code da classe 3:

    "+classe3.hashCode());

    }

    }

    A classe ClasseTeste.java

    publicclassClasseTeste extendsObject{

    publicStrings1;

    publicclasseTeste(){

    http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.htmlhttp://docs.oracle.com/javase/7/docs/api/java/util/HashMap.htmlhttp://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://www.javaprogressivo.net/2012/10/A-classe-Object--o-que-e-uso-e-principais-metodos.htmlhttp://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
  • 5/26/2018 Lista Object e Interface

    3/5

    System.out.println("Objeto da classeTeste criado!");

    this.s1= "oi";

    }

    @Override

    protectedObjectclone(){returnthis;

    }

    }

    A classe ClasseTeste2.javapublicclassclasseTeste2 extendsclasseTeste{

    publicStringteste;

    publicclasseTeste2(){

    System.out.println("Objeto da classe classeTeste2 criado");

    }

    }

    2. Exerccio com Herana, Polimorfismo e Interface

    Crie um projeto Java e implemente as seguintes classes:

    A interface ICMS:

    publicinterfaceICMS {

    staticfinaldoublealiquota= 0.9;

    doublemeuICMS();}

    A classe Carro:

    publicclassCarro implementsICMS {

    String fabricante, modelo;

    intano, vel_max, peso;

    doublepreco;intnum_rodas= 4;

    publicCarro(doubled) {

    preco= d;

    }

    // getters & setters

    publicdoublemeuICMS(){

    returnICMS.aliquota* 0.17D;}

    publicString toString() {

  • 5/26/2018 Lista Object e Interface

    4/5

    String str = "Carro:\n";

    str += "fabricante: "+ fabricante;str += ", modelo: "+ modelo;

    str += ", ano: "+ ano+ ", velocidade mxima: "+ vel_max;

    str += ", preo: R$ "+ String.format("%.2f", (preco+

    preco*meuICMS()));returnstr;

    }

    }

    A classe Consultoria:

    publicclassConsultoria implementsICMS {

    String empresa, tipo;

    doublevalor;

    publicConsultoria (doublevalor){

    this.valor= valor;

    }

    publicdoublemeuICMS(){

    returnICMS.aliquota* 0.1D;}

    publicString toString() {

    String str = "Consultoria:\n";

    str += "empresa: "+ empresa;

    str += ", tipo: "+ tipo;str += ", valor R$ "+ String.format("%.2f", (valor+

    valor*meuICMS()));

    returnstr;

    }

    }

    Uma classe de Teste:

    publicclassMain {

    publicstaticvoidmain(String args[]) {

    ICMS compra[] = newICMS[2];

    compra[0] = newConsultoria(1000);

    compra[1] = newCarro(30000);

    //compra[0].meuICMS();

    //compra[1] = new ICMS();

    System.out.println("Faturas e caractersticas processadaspolifomicamente pela interface:\n ");

    // processa os ICMSfor(inti = 0; i < compra.length; i++)

  • 5/26/2018 Lista Object e Interface

    5/5

    System.out.println(compra[i] + "\nAliquota "+

    compra[i].meuICMS() + "\n");

    }}