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
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
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. }
}
0 Comments