Autor Tema: Cómo clonar objetos interface Cloneable Ejercicio java experto resuelto CU00912C  (Leído 3584 veces)

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Propuesta de solución para el ejercicio CU00912C del tutorial de programación en java avanzado:


Clase principal main

Código: [Seleccionar]
package ejercicioscu00912c;

public class EjerciciosCu00912c {

    public static void main(String[] args) {
        PruebaClon prueba = new PruebaClon("000000000000", "000000000000", "000000000000", "000000000000");
        PruebaClon prueba1 = prueba.clone();
        PruebaClon prueba2 = prueba.clone();
        PruebaClon prueba3 = prueba.clone();
        PruebaClon prueba4 = prueba.clone();

        prueba1.datos1 = "111111111111";
        prueba2.datos2 = "111111111111";
        prueba3.datos3 = "111111111111";
        prueba4.datos4 = "111111111111";

        prueba.Imprimir();
        prueba1.Imprimir();
        prueba2.Imprimir();
        prueba3.Imprimir();
        prueba4.Imprimir();
    }

}


Clase para clonar e imprimir

Código: [Seleccionar]
package ejercicioscu00912c;

public class PruebaClon implements Cloneable {

    public String datos1, datos2, datos3, datos4;

    public PruebaClon() {
    }

    public PruebaClon(String datos1, String datos2, String datos3, String datos4) {
        this.datos1 = datos1;
        this.datos2 = datos2;
        this.datos3 = datos3;
        this.datos4 = datos4;
    }

    public PruebaClon clone() {
        PruebaClon clon = new PruebaClon(datos1, datos2, datos3, datos4);
        return clon;
    }

    public void Imprimir() {
        System.out.println(datos1 + datos2 + datos3 + datos4);
    }
}
« Última modificación: 03 de Agosto 2016, 17:54 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola DRANXZ88 el ejercicio devuelve el resultado que se pedía pero tienes algunas cosas a mejorar.

Para imprimir la información de un objeto por pantalla en lugar de public void Imprimir() es conveniente usar el método toString() ya que es un estándar. Este método se explica en la entrega CU00694B y siguientes del curso de Java básico.

Otro error que tienes es declarar public String datos1, datos2, datos3, datos4;

Los atributos de clase deben ser private, y para acceder o modificarlos debes usar métodos get y set creados al efecto.

Saludos

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Ejercicio corregido según observación Alex Rodríguez


Clase donde se clona

Código: [Seleccionar]
package ejercicioscu00912c;

public class PruebaClon {

    private String datos1, datos2, datos3, datos4;

    public PruebaClon() {
    }

    public PruebaClon(String datos1, String datos2, String datos3, String datos4) {
        this.datos1 = datos1;
        this.datos2 = datos2;
        this.datos3 = datos3;
        this.datos4 = datos4;
    }

    public String getDatos1() {
        return datos1;
    }

    public void setDatos1(String datos1) {
        this.datos1 = datos1;
    }

    public String getDatos2() {
        return datos2;
    }

    public void setDatos2(String datos2) {
        this.datos2 = datos2;
    }

    public String getDatos3() {
        return datos3;
    }

    public void setDatos3(String datos3) {
        this.datos3 = datos3;
    }

    public String getDatos4() {
        return datos4;
    }

    public void setDatos4(String datos4) {
        this.datos4 = datos4;
    }

    @Override
    public PruebaClon clone() {
        PruebaClon clon = new PruebaClon(datos1, datos2, datos3, datos4);
        return clon;
    }

    @Override
    public String toString() {
        String mensaje = datos1 + datos2 + datos3 + datos4;
        return mensaje;
    }
}


Clase principal main

Código: [Seleccionar]
package ejercicioscu00912c;

public class EjerciciosCu00912c {

    public static void main(String[] args) {
        PruebaClon prueba = new PruebaClon("000000000000", "000000000000", "000000000000", "000000000000");
        PruebaClon prueba1 = prueba.clone();
        PruebaClon prueba2 = prueba.clone();
        PruebaClon prueba3 = prueba.clone();
        PruebaClon prueba4 = prueba.clone();

        prueba1.setDatos1("111111111111");
        prueba2.setDatos2("111111111111");
        prueba3.setDatos3("111111111111");
        prueba4.setDatos4("111111111111");

        System.out.println(prueba.toString());
        System.out.println(prueba1.toString());
        System.out.println(prueba2.toString());
        System.out.println(prueba3.toString());
        System.out.println(prueba4.toString());

    }

}
« Última modificación: 09 de Octubre 2020, 14:09 por Alex Rodríguez »

 

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".