Bonjour
Le probleme qui m'est pose est le suivant:
+ dans un premier temps on veut modeliser un parallelogramme puis ces classes deriver losange et rectangle.
+ dans un second temps on veut ajouter le carre tout en factorisant le code au maximum j'adjoins les 2 codes que j'ai produit.

premier cas: sans les carre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
 
class Parallelogramme {
 
	protected:
		double largeur;
		double longueur;
		double angle;
 
	public:
 
		// constructeur 		
		Parallelogramme::Parallelogramme(double l = 0, double L = 0, double a = 0) {
 
			largeur = l;
			longueur = L;
			angle = a;
 
		}
 
		AllongerX(double coeff) { 
 
			largeur = largeur * coeff;
 
		}
 
		AllongerY(double coeff) { // L
 
			longueur = longueur * coeff;
 
		}
 
		ChangerAngle(double coeff) {
 
			angle = angle * coeff;
 
		}
 
		void setLargeur(double l) {
 
			largeur = l;
 
		}
 
		void setLongueur(double L) {
 
			longueur = L;
 
		}
 
		void setAngle(double a) {
 
			angle = a;
 
		}
 
		double getLargeur() {
 
			return largeur;
 
		}
 
		double getLongueur() {
 
			return longueur;
 
		}
 
		double getAngle() {
 
			return angle;
 
		}
}
 
class rectangle : public A {
 
	protected:
		double largeur
		double longueur;
 
	public:
		// constructeur
		rectangle::rectangle(double l, double L) : Parallelogramme(l, L), angle(90) {
 
 
 
		}
		// constructeur par recopie
		rectangle(rectangle  &r) : Parallelogramme(r), largeur(r.largeur), longueur(r.longueur) {}
}
 
 
 
class losange : public A {
 
	protected:
		double cote;
		double angle
 
	public:
		// constructeur
		losange::losange(double c, double a) : Parallelogramme(c, c, a) {
 
 
 
		} 
		// constructeur par recopie
		losange(losange &lo) : Parallelogramme(lo), c(lo.c) {}
}
second cas: avec les carre

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
 
class Parallelogramme {
 
	protected:
		double largeur;
		double longueur;
		double angle;
 
	public:
 
		// constructeur par defaut pour la derivation virtuelle
		Parallelogramme() {}
 
		Parallelogramme::Parallelogramme(double l = 0, double L = 0, double a = 0) {
 
			largeur = l;
			longueur = L;
			angle = a;
 
		}
		AllongerX(double coeff) { 
 
			largeur = largeur * coeff;
 
		}
 
		AllongerY(double coeff) { 
 
			largeur = largeur * coeff;
 
		}
 
		ChangerAngle(double coeff) {
 
			angle = angle * coeff;
 
		}
		/*
		* manque getter et setter
		*/
		void setLargeur(double l) {
 
			largeur = l;
 
		}
 
		void setLongeur(double L) {
 
			longueur = L;
 
		}
 
		void setAngle(double a) {
 
			angle = a;
 
		}
 
		double getLargeur() {
 
			return largeur;
 
		}
 
		double getLongueur() {
 
			return longueur;
 
		}
 
		double getAngle() {
 
			return angle;
 
		}
}
 
class rectangle : virtual public A {
 
	protected:
		double largeur;
		double longueur
 
	public:
		// constructeur
		rectangle::rectangle(double l, double L){
 
 
 
		}
		// constructeur par recopie
		rectangle(rectangle  &r) : Parallelogramme(r), largeur(r.largeur), longueur(r.longueur) {}
}
 
 
 
class losange : virtual public A {
 
	protected:
		double cote;
		double angle;
 
	public:
		// constructeur
		losange::losange(double c, double a) {
 
 
 
		} 
		// constructeur par recopie
		losange(losange &lo) : Parallelogramme(lo), cote(lo.cote), angle(lo.angle) {}
}
 
 
class carre : public rectangle, public losange {
 
	protected:
		double cote;
 
	public:
		carre::carre(double c) : Parallelogramme(c, c, a) : rectangle() : losange() { // rectangle(l, l) : losange(l, 90)
 
 
 
		}
 
}
n'etant en rien certain de l'aspect conception avec heritage multiple et classe virtuelle, j'attend vos critiques
par avance merci