exercice et la solution éritage-c#

Objectif:
  • Créer une classe dérivée.
  • Ajouter des méthodes à une classe dérivée.
  • Redéfinir des méthodes dans une classe dérivée.
Énonce:
Définir une classe Vecteurs2D caractérisée par l’abscisse X et l’ordonné Y, ainsi qu’un attribut qui renseigne sur le nombre de vecteurs créés lors de l’exécution du programme.
Définir les constructeurs (par défaut, d’initialisation et de recopie), et les accesseurs aux différents attributs.
Définir les méthodes ToString et Equals, la première retourne une chaine de caractères représentant l’abscisse et l’ordonné du vecteur comme suit : X = 1.5 - Y=2, la deuxième retourne True lorsque l’abscisse et l’ordonné des deux vecteurs sont égaux.
Définir une méthode Norme qui retourne la norme d’un vecteur, cette méthode peut être redéfinie dans les classes dérivées.
Définir une classe Vecteurs3D dérivée de la classe Vecteur2D qui contient, en plus des propriétés de la classe de base, la propriété Z symbolisant la troisième dimension.
Définir les constructeurs (par défaut, d’initialisation et de recopie) de cette classe, ainsi que les accesseurs des propriétés.
Redéfinir les méthodes ToString et Equals pour intégrer la troisième propriété.
Redéfinir la méthode Norme pour qu’elle retourne la norme d’un vecteur dans l’espace.
Définir un programme de test permettant de créer deux objets de type Vecteurs2D et deux autres de type Vecteurs3D. Afficher les informations de tous les objets, et tester les méthodes Equals et Norme. Afficher le nombre d’objet créés.
Exemple d’exécution :
****Vecteur 2D****
Vecteur 1:
Donner X: 1
Donner Y: 2
X=1 Y=2
La norme est: 2,23606797749979
Vecteur 2:
Donner X: 1
Donner Y: 2
X=1 Y=2
La norme est: 2,23606797749979
Les deux vecteurs sont identiques
****Vecteur 3D****
Vecteur 1:
Donner X: 1
Donner Y: 1
Donner Z: 1
X=1 Y=1 Z=1
La norme est: 1,73
Vecteur 2:
Donner X: 1
Donner Y: 2
Donner Z: 1
X=1 Y=2 Z=1
La norme est: 2,44
Non identiques
Le nombre de vecteurs crées est: 4
//Source : www.exelib.net
___________solmution________
1.  //Auteur : CHAOULID
2.  //Copyright : Exelib.net
3.      
class Vecteur2D
4.      {
5.          private double x;
6.          private double y;
7.          private static int nb_vecteurs = 0;
8.   
9.          public double X
10.        {
11.            get { return x; }
12.            set { x = value; }
13.        }
14. 
15.        public double Y
16.        {
17.            get { return y; }
18.            set { y = value; }
19.        }
20. 
21.        public static int Nb_vecteurs
22.        {
23.            get { return nb_vecteurs; }     
24.        }
25. 
26.        public Vecteur2D() { nb_vecteurs++; }
27. 
28.        public Vecteur2D(double x, double y)
29.        {
30.            this.x = x;
31.            this.y = y;
32.            nb_vecteurs++;
33.        }
34. 
35.        public Vecteur2D(Vecteur2D v)
36.        {
37.            x = v.x;
38.            y = v.y;
39.            nb_vecteurs++;
40.        }
41. 
42.        public override string ToString()
43.        {
44.            return "X="+x+" Y="+y;
45.        }
46. 
47.        public virtual double Norme()
48.        {
49.            return Math.Sqrt(x * x + y * y);
50.        }
51. 
52.        public override bool  Equals(object obj)
53.        {
54.            if (obj == null)                               //Comparer à null
55.                return false;
56.            else if (obj == this)                          //Comparer à lui même
57.                return true;
58.            else if (obj.GetType() != this.GetType())      //Deux types incomparables
59.                return false;
60.            else
61.            {
62.                Vecteur2D v = (Vecteur2D)obj;              //Convertir l'objet en vecteur
63.                if (this.x == v.x && this.y == v.y)        //Comparer le contenu
64.                    return true;
65.                else
66.                    return false;
67.            }
68.        }
69.    }
La classe Vecteur 3D:
1.  class Vecteur3D : Vecteur2D
2.      {
3.          private double z;
4.   
5.          public double Z
6.          {
7.              get { return z; }
8.              set { z = value; }
9.          }
10. 
11.        public Vecteur3D() : base() { }
12. 
13.        public Vecteur3D(double x, double y, double z)
14.            : base(x, y)
15.        {
16.            this.z = z;
17.        }
18. 
19.        public Vecteur3D(Vecteur3D v)
20.            : base(v.X, v.Y)
21.        {
22.            z = v.z;
23.        }
24. 
25.        public override string ToString()
26.        {
27.            return base.ToString()+" Z="+z;
28.        }
29. 
30.        public override bool Equals(object obj)
31.        {
32.            if (obj == null)                               //Comparer à null
33.                return false;
34.            else if (obj == this)                          //Comparer à lui même
35.                return true;
36.            else if (obj.GetType() != this.GetType())      //Deux types incomparables
37.                return false;
38.            else
39.            {
40.                Vecteur3D v = (Vecteur3D)obj;                            //Convertir l'objet en vecteur
41.                if (this.X == v.X && this.Y == v.Y && this.z==v.z)       //Comparer le contenu
42.                    return true;
43.                else
44.                    return false;
45. 
46.            }
47.        }
48. 
49.        public override double Norme()
50.        {
51.            return Math.Sqrt(X * X + Y * Y + z * z);
52.        }
53.    }
Le programme de test (un exemple):
1.  class Program
2.      {
3.          static void Main(string[] args)
4.          {
5.              double x, y,z;
6.              Console.Out.WriteLine("****Vecteur 2D****");
7.              Console.Out.WriteLine("Vecteur 1:");
8.              Console.Out.Write("Donner X: ");
9.              x = double.Parse(Console.In.ReadLine());
10.            Console.Out.Write("Donner Y: ");
11.            y = double.Parse(Console.In.ReadLine());
12.            Vecteur2D V1 = new Vecteur2D(x, y);
13.            Console.Out.WriteLine(V1);
14.            Console.Out.WriteLine("La norme est: " + V1.Norme());
15. 
16.            Console.Out.WriteLine("Vecteur 2:");
17.            Console.Out.Write("Donner X: ");
18.            x = double.Parse(Console.In.ReadLine());
19.            Console.Out.Write("Donner Y: ");
20.            y = double.Parse(Console.In.ReadLine());
21.            Vecteur2D V2 = new Vecteur2D(x, y);
22.            Console.Out.WriteLine(V2);
23.            Console.Out.WriteLine("La norme est: " + V2.Norme());
24. 
25.            if (V1.Equals(V2))
26.                Console.Out.WriteLine("Les deux vecteurs sont identiques");
27.            else
28.                Console.Out.WriteLine("Non identiques");
29. 
30.            Console.Out.WriteLine("****Vecteur 3D****");
31.            Console.Out.WriteLine("Vecteur 1:");
32.            Console.Out.Write("Donner X: ");
33.            x = double.Parse(Console.In.ReadLine());
34.            Console.Out.Write("Donner Y: ");
35.            y = double.Parse(Console.In.ReadLine());
36.            Console.Out.Write("Donner Z: ");
37.            z = double.Parse(Console.In.ReadLine());
38.            Vecteur2D V3 = new Vecteur3D(x, y,z);
39.            Console.Out.WriteLine(V3);
40.            Console.Out.WriteLine("La norme est: " + V3.Norme());
41. 
42.            Console.Out.WriteLine("Vecteur 2:");
43.            Console.Out.Write("Donner X: ");
44.            x = double.Parse(Console.In.ReadLine());
45.            Console.Out.Write("Donner Y: ");
46.            y = double.Parse(Console.In.ReadLine());
47.            Console.Out.Write("Donner Z: ");
48.            z = double.Parse(Console.In.ReadLine());
49.            Vecteur2D V4 = new Vecteur3D(x, y,z);
50.            Console.Out.WriteLine(V4);
51.            Console.Out.WriteLine("La norme est: " + V4.Norme());
52. 
53.            if (V3.Equals(V4))
54.                Console.Out.WriteLine("Les deux vecteurs sont identiques");
55.            else
56.                Console.Out.WriteLine("Non identiques");
57. 
58. 
59.            Console.Out.WriteLine("Le nombre de vecteurs crées est: " + Vecteur2D.Nb_vecteurs);
60.            Console.ReadKey();
61.        }
    }

Post a Comment

0 Comments