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: pedro,, en 19 de Diciembre 2016, 11:31

Título: Java. Clase Cloneable y clone. Diferencia entre arreglos y ArrayList CU00912C#
Publicado por: pedro,, en 19 de Diciembre 2016, 11:31
Buenas.

Dejo una posible solución al ejercicio CU00912C.

Código: [Seleccionar]
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

Clase CadenasDeDoce:
Código: [Seleccionar]
package clasecloneable;

public class CadenasDeDoce implements Cloneable{

private String cadena1;
private String cadena2;
private String cadena3;
private String cadena4;

public CadenasDeDoce() {
cadena1 = "000000000000";
cadena2 = "000000000000";
cadena3 = "000000000000";
cadena4 = "000000000000";
}

public CadenasDeDoce(String cadena1, String cadena2, String cadena3, String cadena4) {
this.cadena1 = cadena1;
this.cadena2 = cadena2;
this.cadena3 = cadena3;
this.cadena4 = cadena4;
}

public void setCadena1(String cadena1) {
this.cadena1 = cadena1;
}

public void setCadena2(String cadena2) {
this.cadena2 = cadena2;
}

public void setCadena3(String cadena3) {
this.cadena3 = cadena3;
}

public void setCadena4(String cadena4) {
this.cadena4 = cadena4;
}

public String getCadena1() {
return cadena1;
}

public String getCadena2() {
return cadena2;
}

public String getCadena3() {
return cadena3;
}

public String getCadena4() {
return cadena4;
}

@Override
public CadenasDeDoce clone() {
CadenasDeDoce clon = new CadenasDeDoce(this.cadena1, this.cadena2,
this.cadena3, this.cadena4);
return clon;
}

public String toString() {
String contenido;
contenido = cadena1.concat(cadena2.concat(cadena3.concat(cadena4)));
return contenido;
}
}

Clase TestCadenasDeDoce:
Código: [Seleccionar]
package clasecloneable;

public class TestCadenasDeDoce {

public static void main(String[] args) {
CadenasDeDoce ceros = new CadenasDeDoce("000000000000", "000000000000",
"000000000000", "000000000000");
CadenasDeDoce[] unosYceros = new CadenasDeDoce[4];

for(int i = 0; i < unosYceros.length; i++) {
unosYceros[i] = ceros.clone();
}
unosYceros[0].setCadena1("111111111111");
unosYceros[1].setCadena2("111111111111");
unosYceros[2].setCadena3("111111111111");
unosYceros[3].setCadena4("111111111111");

System.out.println(ceros.toString());
for(int i = 0; i < unosYceros.length; i++) {
System.out.println(unosYceros[i].toString());
}
}

}


Saludos. ;D
Título: Re:Java. Clase Cloneable y método clone. CU00912C
Publicado por: Erik_Escriche en 22 de Diciembre 2016, 14:56
Me ha resultado muy útil consultar tu ejercicio. Pensaba que los arrays se usaban para almacenar tipos primitivos y los ArrayList para almacenar objetos. ¿Entonces la única diferencia entre unos y otros es que los primeros tienen un número fijo de espacios disponibles mientras que los segundos se amplían según se introducen nuevos elementos?
¡Un saludo!
Título: Re:Java. Clase Cloneable y método clone. CU00912C
Publicado por: Erik_Escriche en 22 de Diciembre 2016, 15:18
Confusión solucionada. He revisado la entrega en la que se explicaban ambos conceptos y ya me he dado cuenta de que también se diferencian en que los arrays pueden almacenar ambos tipos de datos, pero los ArrayList solo objetos.