Projet : héritage

Mise en œuvre du mécanisme d'héritage.

corrigé

Faites les exercices vous même avant de regarder la solution.

Corrigé du code

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 :

  1. je possède un compte courant avec un découvert autorisé de 1000 euros
  2. je dépose 100 euros puis je consulte mon solde
  3. je retire 700 euros puis je consulte mon solde
  4. 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 :

  1. je possède un livret A
  2. je dépose 1000 euros puis je consulte mon solde
  3. je dépose 20000 euros puis je consulte mon solde
  4. je calcule mes intérêts
  5. je retire 15000 euros puis je consulte mon solde
  6. 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 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 :
    1. effectuer 1000 jets de dé
    2. calculer la moyenne de ces jets

Codez la user story en utilisant uniquement la classe 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 , 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'attribut historique 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'attribut historique.
  • 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 .