Programmation Orientée Objet - Exercices

Exercice de POO avec Python
Author

Ludovic Deneuville

Avant de commencer

À partir de maintenant, nous n’allons plus coder dans des Notebooks mais dans l’IDE VSCode.

    • cela vous permettra de créer un clone du code
    • geometrie pour stocker vos classes des exercices 1 et 2
    • domino pour l’exercice 3

Sur votre machine personnelle

Si vous n’avez pas accès au réseau ENSAI, vous pouvez soit :

  • continuer à coder dans les notebooks
  • installer les outils pour développer en python
Installation outils Python

Plus de détails

1 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}")

2 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

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()
    }

3 Exercice 3 - Domino

3.1 Un Domino

Écrire une classe Domino avec :

3.2 Jeu

Maintenant nous allons essayer de coder un jeu de dominos (pour plus de facilité, il n’y aura qu’un seul joueur et il n’est possible de poser que d’un seul côté, à la fin de la rangée de domino):

É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 :

Exercice 3