lista object e interface
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");
}}