Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: DRANXZ88 en 27 de Julio 2016, 21:51

Título: Cómo clonar objetos interface Cloneable Ejercicio java experto resuelto CU00912C
Publicado por: DRANXZ88 en 27 de Julio 2016, 21:51
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);
    }
}
Título: Re:Cómo clonar objetos interface Cloneable Ejercicio java experto resuelto CU00912C
Publicado por: Alex Rodríguez en 03 de Agosto 2016, 18:00
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
Título: Re:Cómo clonar objetos interface Cloneable Ejercicio java experto resuelto CU00912C
Publicado por: DRANXZ88 en 29 de Agosto 2019, 16:59
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());

    }

}