Un coffre bien gardé
Ce projet sans difficulté particulière se donne pour but de modéliser un coffre fort, composé de plusieurs constituants : une serrure, une alarme, et enfin le coffre-fort lui-même. On implétemente au fur et à mesure les classes qui permettent de modéliser la situation décrite par l'énoncé.
Une serrure très très sécur'¶
Une serrure fonctionne avec un code secret qui est un nombre à quatre chiffres. Une serrure peut-être dans l'état verrouillée ou déverrouillée (par défaut elle est verrouillée). Afin de déverrouiller une serrure, il faut entrer le bon code. Aucune condition particulière n'est requise pour verrouiller une serrure.
-
- Quelles sont les données décrivant l'état d'un objet serrure ?
- Pour chacunes des deux données précédentes, préciser quel type python permettrait de les représenter au mieux.
- Déduire des questions précédentes le code python d'une classe
Serrure
. On n'indiquera pour le moment que la méthode__init__
de cette classe.
-
Le code de la classe
Serrure
sera à compléter avec les réponses aux questions suivantes.- Quelles sont les actions que l'on veut pouvoir effectuer sur une serrure ?
-
-
Écrire une méthode
vérifier
. Celle-ci prendra en argument uncode
et vérifie qu'il s'agit bien d'un code valide (un nombre à quatre chiffres). Si c'est le cas, elle vérifiera que celui-ci est bien égal au code secret de la serrure. Elle renverraTrue
si c'est le cas,False
sinon. -
Comment utiliser la méthode
vérifier
dans la méthode__init__
pour vérifier que la serrure a été correctement initialisée ?
-
-
Écrire une méthode
verrouiller
de la classeSerrure
. Celle-ci ne prend aucun argument, et passe la serrure dans l'état verrouillé. -
Écrire une méthode
déverrouiller
de la classeSerrure
. Celle-ci prend en argument un mot de passecode
, vérifie si le code est le même que le code secret de la serrure, et déverrouille la serrure si le code est correct. Si l'opération est un succès, la méthode renverraTrue
,False
sinon. -
Écrire une méthode
changer_code_secret
qui prend en argument unancien_code
et unnouveau_code
. Elle vérifie si l'ancien_code
est bien égal au code secret de la serrure. Si c'est le cas, le code secret est remplacé parnouveau_code
. Elle renverraTrue
si la modification a été effectuée avec succès,False
sinon.
-
Commenter toutes les méthodes de la classe
Serrure
(signature et docstring). -
Écrire un code python permettant de tester les fonctionnalités de la classe
Serrure
. -
Un ingénieur en cybersécurité passant par là fait remarquer que cette serrure ne semble pas si sûre que ça. Expliquer pourquoi, et proposer une solution à ce problème.
Une alarme bruyante mais pas sans charme¶
Une alarme est un système qui émet un son lorsqu'elle est armée et déclenchée. Par défaut l'alarme est armée mais on peut la désarmer. Dans ce cas elle n'émettra pas de son si on la déclenche.
-
- Quelles sont les données décrivant l'état d'une alarme ?
- Quelles sont les actions que l'on veut pouvoir effectuer sur une alarme ?
- En déduire les attributs et les méthodes que doivent posséder les objets de type
Alarme
.
- Écrire le code python d'une classe
Alarme
qui permet de représenter le comportement d'une alarme tel que décrit dans l'énoncé. - Écrire un code python permettant de commenter et tester les méthodes de la classe
Alarme
.
Un coffre fort pour garder tout notre or¶
Un coffre fort est un objet qui contient un certain montant d'argent. Généralement, les coffres forts sont protégés par une serrure, ainsi qu'une alarme. Un coffre fort peut-être dans un état ouvert ou fermé. S'il est ouvert, on peut y déposer de l'argent et en retirer librement (si cela est possible). S'il est fermé, il est impossible d'effectuer des opérations de retrait et/ou de dépôt. Il est toujours possible de fermer un coffre fort ouvert, mais pour ouvrir un coffre-fort fermé, il faut entrer le bon code sur la serrure, sans quoi l'alarme se déclenche, afin de prévenir tout vol.
Compléter, commenter, et tester le code ci-dessous.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|