classDiagram
Point --o Polygone
Polygone <|-- Segment : 2
Polygone <|-- Triangle : 3
Polygone <|-- Quadrilatere : 4
Quadrilatere <|-- Rectangle
class Point{
+float x
+float y
+distance(autre_point)
}
class Polygone{
+liste[Point] liste_points
+aire()
+perimetre()
}
class Quadrilatere{
+aire()
+perimetre()
}
class Segment{
+aire()
+perimetre()
}
class Triangle{
+aire()
+perimetre()
}
Programmation Orientée Objet - Exercices
1 Mise en place
1.1 Lancer un service VSCode
1.2 Récupérer le code
Deux possibilités pour récupérer le code, soit :
- vous clonez directement le dépôt de l’enseignant
git clone https://github.com/ludo2ne/ENSAI-2A-remise-a-niveau.git
- vous créez un fork de ce dépôt, puis clonez ce fork
- https://github.com/ludo2ne/ENSAI-2A-remise-a-niveau/fork
git clone https://$GIT_PERSONAL_ACCESS_TOKEN@github.com/<username>/ENSAI-2A-remise-a-niveau.git
Si vous clonez directement le dépôt de l’enseignant, vous ne pourrez pas utiliser Git pour conserver votre travail. Il faudra par exemple télécharger les fichiers à la main.
Un fork est une copie d’un dépôt distant. Comme cette copie vous appartient, vous avez le droit d’en modifier le code.
Ensuite, positionnez-vous dans le dossier src/POO :
-
- ou directement via le terminal :
code-server /home/onyxia/work/ENSAI-2A-remise-a-niveau/src/Python-POO/
- ou directement via le terminal :
Vous pouvez ensuite coder dans les fichiers du dossier exercice. Si besoin, vous pouvez créer de nouveaux fichiers.
2 Exercice 1 - Points
Définissez une classe Point pour représenter un point du plan de coordonnées x et y.
Codez les méthodes suivantes :
Pour vérifier que vos méthodes sont correctes, vous pouvez ajouter à la fin de votre classe un bloc main. Lorsque vous exécuterez ce fichier, c’est ce code qui sera lancé.
point.py
class Point:
# ...
if __name__ == "__main__":
p1 = Point(1, 2)
p2 = Point(1, 2)
print(f"p1 : {p1}")
print(f"Distance entre p1 et p2 : {p1.distance(p2)}")
print(f"p1 est égal à p2 : {p1 == p2}")3 Exercice 2 - Polygones
-
- Nous supposerons par la suite que les segments ne se croisent pas
-
- ces méthodes seront définies dans les classes filles
-
- vérifiez à chaque fois le nombre de points
Voici le diagramme de classes généré avec Mermaid
4 Exercice 3 - Domino
4.1 Un Domino
Écrire une classe Domino avec :
4.2 Jeu
Maintenant nous allons essayer de coder un jeu de dominos.
Pour plus de facilité :
- il n’y aura qu’un seul joueur
- il n’est possible de poser que d’un seul côté, à la fin de la rangée de domino
Commençons par générer tous les dominos possibles, i.e. toutes les combinaisons de (0,0) à (6,6) sans doublon.
Écrivez une fonction jouer() qui :
classDiagram
class Domino{
+int extr_A
+int extr_B
+retourne()
+accepte_apres(autre_domino)
}
Correction
Exercices 1 et 2
Un exemple de tests unitaires sur la classe Point :