-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexercice13Correction.php
More file actions
134 lines (102 loc) · 4.09 KB
/
Copy pathexercice13Correction.php
File metadata and controls
134 lines (102 loc) · 4.09 KB
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
128
129
130
131
132
133
134
<?php
/*
Enoncé de l'exercice :
Exercice : Gestion des Formes Géométriques
Objectif : Créer un ensemble de classes pour gérer différentes formes géométriques en utilisant le concept de classes abstraites.
Instructions :
Classe abstraite Forme :
Propriétés : couleur.
Constructeur : Initialise la propriété couleur.
Méthode abstraite aire : Cette méthode doit retourner l'aire de la forme.
Méthode abstraite perimetre : Cette méthode doit retourner le périmètre de la forme.
Classe dérivée Carre :
Hérite de la classe Forme.
Propriété supplémentaire : cote (longueur du côté du carré).
Constructeur : Initialise la couleur et le cote.
Implémentation des méthodes aire et perimetre pour le carré.
Classe dérivée Cercle :
Hérite de la classe Forme.
Propriété supplémentaire : rayon.
Constructeur : Initialise la couleur et le rayon.
Implémentation des méthodes aire et perimetre pour le cercle.
Utilisation des classes :
Créez un objet de type Carre et un objet de type Cercle.
Affichez l'aire et le périmètre de chaque objet.
*/
// Correction :
// Classe abstraite : Forme
abstract class Forme {
protected $couleur; // Couleur de la forme
// Constructeur de la classe Forme
public function __construct($couleur) {
$this->couleur = $couleur;
}
// Méthode abstraite pour calculer l'aire
abstract public function aire();
// Méthode abstraite pour calculer le périmètre
abstract public function perimetre();
}
// Classe dérivée : Carre
class Carre extends Forme {
private $cote; // Longueur du côté du carré
// Constructeur de la classe Carre
public function __construct($couleur, $cote) {
parent::__construct($couleur); // Appel du constructeur de la classe parente
$this->cote = $cote;
}
// Implémentation de la méthode aire pour le carré
public function aire() {
return $this->cote * $this->cote;
}
// Implémentation de la méthode perimetre pour le carré
public function perimetre() {
return 4 * $this->cote;
}
}
// Classe dérivée : Cercle
class Cercle extends Forme {
private $rayon; // Rayon du cercle
// Constructeur de la classe Cercle
public function __construct($couleur, $rayon) {
parent::__construct($couleur); // Appel du constructeur de la classe parente
$this->rayon = $rayon;
}
// Implémentation de la méthode aire pour le cercle
public function aire() {
return pi() * $this->rayon * $this->rayon;
}
// Implémentation de la méthode perimetre pour le cercle
public function perimetre() {
return 2 * pi() * $this->rayon;
}
}
// Bonus : Classe dérivée : Rectangle
class Rectangle extends Forme {
private $longueur; // Longueur du rectangle
private $largeur; // Largeur du rectangle
// Constructeur de la classe Rectangle
public function __construct($couleur, $longueur, $largeur) {
parent::__construct($couleur); // Appel du constructeur de la classe parente
$this->longueur = $longueur;
$this->largeur = $largeur;
}
// Implémentation de la méthode aire pour le rectangle
public function aire() {
return $this->longueur * $this->largeur;
}
// Implémentation de la méthode perimetre pour le rectangle
public function perimetre() {
return 2 * ($this->longueur + $this->largeur);
}
}
// Utilisation des classes
$carre = new Carre("rouge", 5);
echo "Aire du carré : " . $carre->aire() . "\n"; // Affiche l'aire du carré
echo "Périmètre du carré : " . $carre->perimetre() . "\n"; // Affiche le périmètre du carré
$cercle = new Cercle("bleu", 7);
echo "Aire du cercle : " . $cercle->aire() . "\n"; // Affiche l'aire du cercle
echo "Périmètre du cercle : " . $cercle->perimetre() . "\n"; // Affiche le périmètre du cercle
// Bonus
$rectangle = new Rectangle("vert", 4, 6);
echo "Aire du rectangle : " . $rectangle->aire() . "\n"; // Affiche l'aire du rectangle
echo "Périmètre du rectangle : " . $rectangle->perimetre() . "\n"; // Affiche le périmètre du rectangle