예제 #1
0
        public O1 Clone()
        { //définition du clonage
            O1 unNouveauO1 = (O1)this.MemberwiseClone();

            unNouveauO1.lienO2 = lienO2.Clone();
            return(unNouveauO1);
        }
예제 #2
0
 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);
 }
예제 #3
0
        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();
        }
예제 #4
0
        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();
        }