Programmation orienté objet

Exercices et corrigés en Python sur la Programmation orienté objet (POO): la création des classes, des attributs, des méthodes, des constructeurs, l’instanciation des objets, la manipulation des objets, l’héritage, polymorphisme…




La classe Point sans constructeur

La classe Point sans constructeur: Créer un programme Python qui permet de:

  1. Définir une classe Point caractérisée par son abscisse et son ordonné sans constructeur.
  2. Définir à l’aide des getters et les setters les méthodes d’accès aux attributs de la classe.
  3. Définir la méthode Norme ( ) qui retourne la distance entre l’origine du repère et le point en cours.
  4. Écrire un programme permettant d'instancier un objet P et de tester la classe.

La classe Point avec constructeur

La classe Point avec constructeur: Créer un programme Python qui permet de:

  1. Définir une classe Point caractérisée par son abscisse et son ordonné avec constructeur avec coordonnées (1, 1) par défaut.
  2. Définir à l’aide des getters et les setters les méthodes d’accès aux attributs de la classe.
  3. Définir la méthode Distance ( P1 ) qui retourne la distance entre le point P1 et le point en cours.
  4. Écrire un programme permettant d'instancier deux objets  P1 et P2 et de tester la classe.

La classe CompteBancaire

La classe CompteBancaire: Écrire un programme python qui permet de définir une classe CompteBancaire(), qui permette d’instancier des objets tels que compte1, compte2, etc. Le constructeur de cette classe initialisera deux attributs d’instance nom et solde, avec les valeurs par défaut ’Dupont’ et 1000.

Trois autres méthodes seront définies :
  • depot(somme) permettra d’ajouter une certaine somme au solde ;
  • retrait(somme) permettra de retirer une certaine somme du solde ;
  • affiche() permettra d’afficher le nom du titulaire et le solde de son compte.


La classe Voiture

Classe Voiture: Écrire un programme Python qui permet de définir une classe Voiture qui permette d’instancier des objets reproduisant le comportement de voitures automobiles. Le constructeur de cette classe initialisera les attributs d’instance suivants, avec les valeurs par défaut indiquées :

marque = 'Ford', couleur = 'rouge', pilote = 'personne', vitesse = 0.

Lorsque l’on instanci

La classe Satellite

La classe Satellite: Écrire un programme Python qui permet de définir une classe Satellite qui permette d’instancier des objets simulant des satellites artificiels lancés dans l’espace, autour de la terre. Le constructeur de cette classe initialisera les attributs d’instance suivants, avec les valeurs par défaut indiquées : masse = 100, vitesse = 0.


Objets composés d’objets: Point, Segment, Rectangle

Objets composés d’objets: Point, Segment, Rectangle: Ecrire un programme Python qui permet de:

  1. Définir une classe Point caractérisée par son abscisse et son ordonné.
  2. Définir les méthodes de la classe Point
  3. Définir une classe Segment caractérisée par deux points , le point d'origine et le point d'extrémité.
  4. Définir les méthodes de la classe Segment
  5. Définir une classe Rectangle caractérisée par deux diagonales D1 et D2
  6. Définir les méthodes de la classe Rectangle
  7. Tester les classes crées


Polymorphisme et héritage: La classe Rectangle et carré

Définir une classe Rectangle d'attributs:longueur et largeur et nom et les méthodes:
  • perimetre qui retourne le périmètre du rectangle.
  • surface qui retourne la surface du rectangle.
  • afficher qui affiche le périmètre et la surface d'un rectangle ainsi leurs dimensions en longueur et largeur.
Définir une classe Carre héritant de Rectangle et qui surcharge l’attribut d’instance : nom = "carré".

Héritage simple: Personne, employé et chef

Définir les classes suivantes:
  • Une classe DateNaissance avec trois attributs, jour, mois, année et une méthode ToString qui convertit la date de naissance en chaine de caractères
  • Une classe Personne  avec trois attributs, nom, prénom et date de naissance et une méthode polymorphe Afficher pour afficher les données de chaque personne.
  • Une classe Employé qui dérive de la classe Personne, avec en plus un attribut Salaire et la redéfinition de la méthode Afficher.
  • Une classe Chef qui dérive de la classe Employé, avec en plus un attribut Service et la redéfinition de la méthode Afficher.

Les méthodes spéciales

Les méthodes spéciales: __add__,__sub__,__mul__,__str__,__repr__,__getattr__,__del__,__setattr__,__contains__,__del__,__truediv__,__floordiv__,__mod__,__pow__,__eq__,__ne__,__gt__,__ge__,__lt__,__le__


Surcharge(Overloading) en Python

Surcharge(Overloading) en Python: on ne peut pas définir, dans la même classe, plusieurs fonctions de même nom mais de différent nombre d'arguments.

Petit exercice:

Définir une classe Point avec un constructeur, un point est définit soit par deux coordonnées x et y, s'il s'agit d'une représentation d'un point au plan ou par trois coordonnées x, y et z, s'il s'agit d'une représentation d'un point en espace. La classe Point doit contenir une méthode ToString qui affiche le point.


Polymorphisme: Classe mère Courrier

polymorphisme: Il s’agit dans cet exercice de proposer une conception modélisant une boîtes aux lettres.
Une boîtes aux lettres recueille des courrier qui peuvent être des lettres ou des colis.

Exemple d'exécution:

>>>L1=Lettre("Lille","Paris",80,"normal","A4")
>>>L1.ToString()
Lettre:
Adresse destination: Lille
Adress expedition: Paris
Poids: 80.00 grammes
Mode: normal
Format:A4
Prix du timbre:0.20
>>>C1=Colis("Marrakeche","Barcelone ",3500,"expresse",2.25)
>>>C1.ToString()
Collis:
Adresse destination: Marrakeche
Adress expedition: Barcelone
Poids: 3500.00 grammes
Mode: expresse
Volume: 2.25 litres
Prix du timbre:3937.50