Projet : héritage
Mise en œuvre du mécanisme d'héritage.
corrigé
corrigé
Faites les exercices vous même avant de regarder la solution.
Comptes bancaires
Vous allez construire une hiérarchie de produits bancaires.
Commencez par lire tout l'énoncé et créez la représentation UML des différentes classes.
Compte (générique)
Créez et testez une classe Compte
qui servira de classe mère. Cette classe doit :
- posséder un titulaire (on suppose que c'est une chaine de caractères)
- être créée sans argent de déposé.
- permettre de retirer et de déposer de l'argent (on suppose que l'on peut être à découvert).
Compte courant
Créez et testez une classe CompteCourant
. Cette classe doit :
- être un
Compte
- avoir un découvert autorisé fixé à la création
Vous implémenterez également la user story suivante :
- je possède un compte courant avec un découvert autorisé de 1000 euros
- je dépose 100 euros puis je consulte mon solde
- je retire 700 euros puis je consulte mon solde
- je retire 600 euros puis je consulte mon solde
Compte épargne
Créez et testez une classe CompteEpargne
. Cette classe doit :
- être un
Compte
- avoir un taux d'intérêt
- avoir une somme plafond que l'on peut posséder
- être toujours positif ou nul (on ne peut être à découvert)
- on doit pouvoir connaître les intérêt selon son solde (c'est le taux fois son solde)
Livret A
Créez et testez une classe LivretA
. Cette classe doit :
- être un
CompteEpargne
- avoir un taux d'intérêt de 3% et un plafond de 22950 euros
Vous implémenterez également la user story suivante :
- je possède un livret A
- je dépose 1000 euros puis je consulte mon solde
- je dépose 20000 euros puis je consulte mon solde
- je calcule mes intérêts
- je retire 15000 euros puis je consulte mon solde
- je retire 15000 euros puis je consulte mon solde
PEL
Créez et testez une classe PEL
. Cette classe :
- doit être un
CompteEpargne
- doit avoir un taux d'intérêt de 2% et un plafond de 61200 euros
- ne permet pas de faire de retrait
La particularité du PEL est que l'on ne peut plus déposer d'argent dessus après 10 ans. Il faut donc tenir trace de son année de création et de l'année où l'on veut faire des dépôts. Le code de la user story suivante le fait. Faites en sorte que votre code permette de l'exécuter :
p = PEL("Ada Lovelace", année_ouverture=1835)
print("Dépot (1835)")
p.dépose(1000, 1840)
print(p.solde)
print("Dépot (2022)")
p.dépose(1000, 2022)
print(p.solde)
print("Intérêts", p.calcule_intérêts())
print(p.solde)
print("Retrait")
p.retire(700)
print(p.solde)
print("Retrait")
p.retire(700)
print(p.solde)
Donjons et dragons
Personnages
En reprenant le cours :
Créez (et testez) les classes personnage, magicien et guerrière.
Bataille
Créez un programme qui demande à l'utilisateur :
- les caractéristiques d'une guerrière (points de vie, attaque et score de défense)
- les caractéristiques d'un gobelin (points de vie, attaque)
- les caractéristiques d'un magicien (points de vie, attaque et attaque magique)
Puis, faites en sorte que la guerrière et le gobelin se tapent dessus à tour de rôle jusqu'à ce qu'un des deux meure.
Le dernier héros en vie est ensuite tué par le magicien qui le kite en lui jetant des sorts (comme un fourbe), puis le loote pour aller tout revendre au marchand du bourg (mais c'est une autre histoire et d'autres implémentations).
Vous donnerez le nombre de tours nécessaires pour que toute cette histoire se réalise (faire un cas où le gobelin survit et un autre ou la guerrière survit).
Le dé
Nous allons ici encore une fois réutiliser la classe Dé
entamée lors du projet objets : dés. Pour être sûr de repartir sur de bonnes bases, utilisez l'implémentation minimale utilisée lors du projet composition : dés.
Le but de cette partie est de compter les moyennes de jets de dés.
User Story
On commence par créer une user story sur la fonctionnalité que l'on veut ajouter :
User Story
- Nom : "Statistiques descriptives"
- Utilisateur : un joueur
- Story : On veut compter les moyennes de jets de dés
- Actions :
- effectuer 1000 jets de dé
- calculer la moyenne de ces jets
Codez la user story en utilisant uniquement la classe Dé
dans le fichier story_moyenne.py
.
Un dé qui compte
Nous voulons créer une version particulière d'un dé : un dé permettant de conserver les statistiques de ses lancers.
Implémentez la classe StatDé
qui hérite de Dé
, et retient toutes les positions obtenues après un lancer (on ne compte pas les changement direct de positions) et permet de calculer les statistiques associées.
Vous devez donc écrire et tester pour la classe StatDé
:
- le constructeur
__init__
qui ajoute l'attributhistorique
qui est une liste pour l'instant vide. N'oubliez pas d'appeler le constructeur de la classe mère pour initialiser le dé. - une nouvelle méthode
lancer
qui appelle la méthode de la classe mère puis stocke la nouvelle position à la fin d'un de l'attributhistorique
. - une méthode
moyenne
qui renvoie la moyenne de tous les lancés obtenus.
Programme principal
Modifiez la user story pour qu'elle utilise la classe StatDé
à la place de Dé
.