Autor Tema: Java. Clase Cloneable y clone. Diferencia entre arreglos y ArrayList CU00912C#  (Leído 3308 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
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
« Última modificación: 19 de Junio 2017, 20:44 por Alex Rodríguez »

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Re:Java. Clase Cloneable y método clone. CU00912C
« Respuesta #1 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!

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Re:Java. Clase Cloneable y método clone. CU00912C
« Respuesta #2 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.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".