package testPackage;
public class Bidule implements Cloneable {
private int valeur;
private Personne personne;
private int compteur;
public Bidule(int valeur) {
this.valeur = valeur;
personne = new Personne("toto " + valeur);
compteur = 0;
}
@Override
public String toString() {
return super.toString() + " contient -> value = " + valeur + " ; pers = " + personne;
}
public void incrementCompteur() {
compteur++;
}
/**
* @param value
* the value to set
*/
public void setValeur(int value) {
this.valeur = value;
}
/**
* @return the pers
*/
public Personne getPersonne() {
return personne;
}
public static void main(String[] args) {
Bidule bidule1 = new Bidule(2);
System.out.println("bidule1 = " + bidule1);
System.out.println();
bidule1.incrementCompteur();
Bidule bidule2 = new Bidule(4);
System.out.println("bidule2 = " + bidule2);
System.out.println("\n----------clonage de bidule1 dans bidule2------------\nRésultat :\n");
try {
bidule2 = (Bidule) bidule1.clone();
}
catch(CloneNotSupportedException e) {
e.printStackTrace();
}
System.out.println("bidule1 = " + bidule1);
System.out.println("\nbidule2 = " + bidule2);
System.out.println("\nbidule1.equals(bidule2) apres clonage (doit retourne vrai) -> " + bidule1.equals(bidule2) + "\n");
System.out.println("----------manipulation du clone bidule2 sur value : --- bidule2.setValeur(9); ---\nRésultat :\n");
bidule2.setValeur(9);
System.out.println("bidule1 = " + bidule1);
System.out.println("\nbidule2 = " + bidule2);
System.out.println("\nbidule1.equals(bidule2) apres manipulation (doit retourne faux) -> " + bidule1.equals(bidule2) + "\n");
System.out.println("\n\n-----manipulation du clone bidule2 sur personne : --- bidule2.getPersonne().setName(\"bidule\"); ---\nRésultat :\n");
bidule2.getPersonne().setName("bidule");
System.out.println("bidule1 = " + bidule1);
System.out.println("\nbidule2 = " + bidule2);
}
}