Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 11 de Diciembre 2018, 12:27
-
Hola, dejo el Ejercicio CU00912C del tutorial de programación avanzada Java: ejemplo resuelto interface Cloneable y método clone del API Java. Cómo duplicar objetos .
EJERCICIO
Define una clase que tenga cuatro atributos de tipo String cada uno de los cuales podrá ser exclusivamente una cadena de 12 ceros o de 12 unos. Es decir, cada atributo puede valer o bien "000000000000" ó bien "111111111111". La clase debe implementar la interface Cloneable y disponer de un método que permita ver el resultado de concatenar sus atributos.
Crea otra clase con el main donde crees un objeto cuyos atributos serán: "000000000000", "000000000000", "000000000000", "000000000000".
A partir de este primer objeto, crea cuatro copias usando el método clone() y modifícalas para llegar a tener cinco objetos (el inicial más los otros cuatro copias del original y luego modificados) cuyo contenido mostrarás por pantalla, debiendo obtener el siguiente resultado:
000000000000000000000000000000000000000000000000
111111111111000000000000000000000000000000000000
000000000000111111111111000000000000000000000000
000000000000000000000000111111111111000000000000
000000000000000000000000000000000000111111111111
Codigo de la Clase MetodoClone
public class MetodoClone implements Cloneable
{
private String cero = new String(new char[12]).replace("\0", "0");
private String chain1, chain2, chain3, chain4;
public MetodoClone(){
chain1= cero;
chain2= cero;
chain3= cero;
chain4= cero;
}
public MetodoClone(String chain1,String chain2,String chain3,String chain4){
this.chain1= chain1;
this.chain2= chain2;
this.chain3= chain3;
this.chain4= chain4;
}
public void setChain1(String chain1){
this.chain1=chain1;
}
public void setChain2(String chain2){
this.chain2=chain2;
}
public void setChain3(String chain3){
this.chain3=chain3;
}
public void setChain4(String chain4){
this.chain4=chain4;
}
public String getChain1(){
return chain1;
}
public String getChain2(){
return chain2;
}
public String getChain3(){
return chain3;
}
public String getChain4(){
return chain4;
}
public MetodoClone clone(){
MetodoClone duplicado =new MetodoClone(this.chain1,this.chain2,this.chain3,this.chain4);
return duplicado;
}
public String toString() {
String msg="";
msg=chain1+ chain2+ chain3+ chain4;
return msg;
}
}
Codigo de la Clase TestMetodClonable
public class TestMetodClonable
{
public static void main(String arg[]){
String uno = new String(new char[12]).replace("\0", "1");
String cero = new String(new char[12]).replace("\0", "0");
MetodoClone duplicado=new MetodoClone(cero,cero,cero,cero);
System.out.println(duplicado.toString());
MetodoClone d1=duplicado.clone();
MetodoClone d2=duplicado.clone();
MetodoClone d3=duplicado.clone();
MetodoClone d4=duplicado.clone();
d1.setChain1(uno);
d2.setChain2(uno);
d3.setChain3(uno);
d4.setChain4(uno);
System.out.println(d1.toString()+"\n"+d2.toString()+"\n"+d3.toString()+"\n"+d4.toString());
}
}
Gracias ;)
-
Buenas, para quien revise este ejercicio, está correctamente resuelto. Salu2