public O1 Clone() { //définition du clonage O1 unNouveauO1 = (O1)this.MemberwiseClone(); unNouveauO1.lienO2 = lienO2.Clone(); return(unNouveauO1); }
public override bool Equals(Object unObjet) { /* redéfinition de la méthode Equals */ //Même référent if (this == unObjet) { return(true); } //Référents différents else { //Les deux lignes qui suivent permettent de tester si unObjet est instance de O1 O1 unAutreO1 = unObjet as O1; if (unObjet != null) { //Appel récursif de Equals pour l'objet inclu if ((unAttributO1 == unAutreO1.unAttributO1) && (lienO2.Equals(unAutreO1.lienO2))) { return(true); } else { return(false); } } } return(false); }
static void Main(string[] args) { #region Equals O2 UnObjetO2 = new O2(3); O1 UnObjetO1 = new O1(10, UnObjetO2); O2 AutreObjetO2 = new O2(3); O1 EncoreObjetO1 = new O1(10, AutreObjetO2); O1 AutreObjetO1 = UnObjetO1; //TestsEquals de la méthode Equals /*Console.WriteLine("Test de == ---------------------------------------"); * //A conserver pour le test des référents * * Console.WriteLine("== - Tests de 2 objets qui occupent la même zone mémoire"); * Console.WriteLine(AutreObjetO1 == UnObjetO1); * * Console.WriteLine("== - Tests de 2 objets qui occupent des zones mémoire différentes mais ont les mêmes données"); * Console.WriteLine(AutreObjetO1 == EncoreObjetO1); * * Console.WriteLine("Test de Equals ---------------------------------------"); * * Console.WriteLine("Equals - Tests de 2 objets qui occupent la même zone mémoire"); * Console.WriteLine(AutreObjetO1.Equals(UnObjetO1)); * * Console.WriteLine("Equals - Tests de 2 objets qui occupent des zones mémoire différentes mais ont les mêmes données"); * Console.WriteLine(AutreObjetO1.Equals(EncoreObjetO1)); * * O2 EncoreObjetO2 = new O2(7); * O1 LastObjetO1 = new O1(10, EncoreObjetO2); * * Console.WriteLine("Equals - Tests de 2 objets différents"); * Console.WriteLine(LastObjetO1.Equals(EncoreObjetO1));*/ #endregion #region clonage O2 unQuatriemeO2 = null; unQuatriemeO2 = (O2)AutreObjetO2.Clone(); Console.WriteLine("Clonage O2"); Console.WriteLine(AutreObjetO2.getAttribut() + " =? " + unQuatriemeO2.getAttribut()); O1 unTroisiemeO1 = null; unTroisiemeO1 = (O1)AutreObjetO1.Clone(); Console.WriteLine("Clonage O1"); if (AutreObjetO1.Equals(unTroisiemeO1)) { Console.WriteLine("unTroisiemeO1 et AutreObjetO1 ont le même état"); } else { Console.WriteLine("unTroisiemeO1 et AutreObjetO1 pas le même état"); } #endregion Console.ReadLine(); }
static void Main(string[] args) { O2 UnObjetO2 = new O2(3); O1 UnObjetO1 = new O1(10, UnObjetO2); O2 AutreObjetO2 = new O2(3); O1 EncoreObjetO1 = new O1(10, AutreObjetO2); O1 AutreObjetO1 = UnObjetO1; Console.WriteLine("Test de == ---------------------------------------"); //A conserver pour le test des référents Console.WriteLine("== - Tests de 2 objets qui occupent la même zone mémoire"); Console.WriteLine(AutreObjetO1 == UnObjetO1); Console.WriteLine("== - Tests de 2 objets qui occupent des zones mémoire différentes mais ont " + "les mêmes données"); Console.WriteLine(AutreObjetO1 == EncoreObjetO1); Console.WriteLine("Test de Equal pour O2 ---------------------------------------"); O2 Monique = new O2(7); Console.WriteLine("Tests de 2 objets qui sont les memes mais avec des zones memoires distinctes"); Console.WriteLine(UnObjetO2.Equals(AutreObjetO2)); Console.WriteLine("Tests de 2 objets qui sont différents"); Console.WriteLine(UnObjetO2.Equals(Monique)); Console.WriteLine("Test de Equal pour O1 ---------------------------------------"); Console.WriteLine("Equals - Tests de 2 objets qui occupent la même zone mémoire"); Console.WriteLine(AutreObjetO1.Equals(UnObjetO1)); Console.WriteLine("Equals - Tests de 2 objets qui occupent des zones mémoire différentes mais ont " + "les mêmes données"); Console.WriteLine(AutreObjetO1.Equals(EncoreObjetO1)); Console.WriteLine("Equals - Tests de 2 objets qui ont des attributs différents "); O1 Simone = new O1(10, Monique); Console.WriteLine(AutreObjetO1.Equals(Simone)); /*O2 EncoreObjetO2 = new O2(7); * O1 LastObjetO1 = new O1(10, EncoreObjetO2); * * Console.WriteLine("Equals - Tests de 2 objets différents"); * Console.WriteLine(LastObjetO1.Equals(EncoreObjetO1));*/ Console.ReadLine(); }