Exercice 12
Imaginez que vous êtes entrain de développer un programme de gestion de véhicules pour une entreprise de location de voitures. Vous avez deux types de véhicules, des voitures et des motos. Vous souhaitez suivre les détails de chaque véhicule, tels que la marque, le modèle, et l'année de fabrication. Les véhicules doivent également avoir la capacité de démarrer et de s'arrêter.
- Créez une classe de base appelée Vehicule : avec les attributs marque, modele, et annee. Cette classe doit avoir des méthodes demarrer() et arreter().
- Créez deux classes enfants, Voiture et Moto : qui héritent de la classe Vehicule. Ajoutez un attribut supplémentaire nombre_de_portes pour Voiture et cylindree pour Moto.
- Redéfinissez la méthode __init__() : dans les classes enfants pour initialiser les attributs spécifiques de chaque type de véhicule, en plus des attributs hérités de la classe Vehicule.
- Redéfinissez les méthodes demarrer() et arreter() : dans les classes enfants pour afficher un message approprié, par exemple, "La voiture démarre" ou "La moto s'arrête".
- Créez des instances de Voiture et Moto : appelez leurs méthodes pour démarrer et arrêter les véhicules, et affichez les détails des véhicules.
Solution
Cet exercice simplifié illustre l'héritage multiple en créant une classe de base Vehicule et en dérivant deux classes enfants, Voiture et Moto, qui héritent des attributs et des méthodes de la classe parente. Vous avez aussi la possibilité de personnaliser davantage ces classes et méthodes en fonction de vos besoins.
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 |
class Vehicule: def __init__(self, marque, modele, annee): self.marque = marque self.modele = modele self.annee = annee self.est_demarre = False def demarrer(self): if not self.est_demarre: self.est_demarre = True print(f"{self.marque} {self.modele} démarre.") else: print(f"{self.marque} {self.modele} est déjà en marche.") def arreter(self): if self.est_demarre: self.est_demarre = False print(f"{self.marque} {self.modele} s'arrête.") else: print(f"{self.marque} {self.modele} est déjà arrêté.") class Voiture(Vehicule): def __init__(self, marque, modele, annee, nombre_de_portes): super().__init__(marque, modele, annee) self.nombre_de_portes = nombre_de_portes class Moto(Vehicule): def __init__(self, marque, modele, annee, cylindree): super().__init__(marque, modele, annee) self.cylindree = cylindree # Création d'instances de Voiture et Moto voiture1 = Voiture("Toyota", "Camry", 2020, 4) moto1 = Moto("Honda", "CBR500R", 2022, 500) # Démarrage et arrêt des véhicules voiture1.demarrer() voiture1.arreter() moto1.demarrer() moto1.arreter() """ output: Toyota Camry démarre. Toyota Camry s'arrête. Honda CBR500R démarre. Honda CBR500R s'arrête. """ |
Younes Derfoufi
CRMEF OUJDA