Copy of https://perso.isima.fr/loic/python/exo_voiture.php
tete du loic

 Loïc YON [KIUX]

  • Enseignant-chercheur
  • Référent Formation Continue
  • Responsable des contrats pros ingénieur
  • Référent entrepreneuriat
  • Responsable de la filière F2 ingénieur
  • Secouriste Sauveteur du Travail
mail
loic.yon@isima.fr
phone
(+33 / 0) 4 73 40 50 42
location_on
Institut d'informatique ISIMA
  • twitter
  • linkedin
  • viadeo

Voiture

 Cette page commence à dater. Son contenu n'est peut-être plus à jour. Contactez-moi si c'est le cas!

Date de première publication : 2022/10/6

Créer une classe Moteur avec un état : moteur démarré ou non et un numéro de série, une méthode pour démarrer et une méthode pour arrêter le moteur

Moteur
- etat : booléen
- id : chaine
+ constructeur(id)
+ finaliseur() + demarrer()
+ arreter()

Dans le "constructeur" et dans le finaliseur __del__, on pourra afficher ce qui est fait : construction/destruction de id.

Composition

Créer une voiture qui crée également un moteur. Faire que démarrer ou stopper la voiture, fasse la même action sur le moteur

Voiture
- moteur : Moteur
+ constructeur()
+ demarrer()
+ arreter()

Regardez ce qui se passe avec ou sans finaliseur. Si vous écrivez le finaliseur, vous écrivez ce qui se passe. On ne vous demande pas d'effacer l'attribut

Agrégation

Donner une instance de moteur à une instance de voiture et faire les mêmes traitements que précédemment

Voiture
- moteur : Moteur
+ constructeur(Moteur)
+ finaliseur()
+ demarrer()
+ arreter()

Regardez ce qui se passe avec ou sans finaliseur. Si vous écrivez le finaliseur, vous écrivez ce qui se passe. On ne vous demande pas d'effacer l'attribut

Héritage

Dernière modélisation : faire d'une voiture une classe fille de Moteur ...

Là encore, il est intéressant de noter quand les objets sont construits et détruits.

Le finaliseur de la classe fille appelle par défaut le finaliseur de la classe mère. Si vous redéfinissez le finaliseur de la classe fille, il faut alors explicitement appeler le finaliseur de la classe mère.

Aller plus loin...

En panne ?

Vous allez créer une exception personnalisée EnPanne et vous allez l'utiliser : à chaque fois qu'un moteur est démarré, il y aura une chance de tomber en panne. Si c'est le cas, il faudra lancer une exception et prévenir l'utilisateur que la voiture n'a pas pu être démarrée.

Une voiture hybride ?

Que se passe-t-il si maintenant une voiture peut avoir deux moteurs : un moteur électrique et un moteur thermique ? Si l'on suppose également que les deux moteurs ne peuvent fonctionner en même temps ?