3.4 KiB
3.4 KiB
Atelier sur la première partie
L'atelier suivant vous fait construire une structure où vous pouvez :
- créer des bibliothèques
- créer des livres
- créer des utilisateurs
Et avec ces objets, vous pouvez :
- ajouter des livres à vos bibliothèques
- emprunter et rendre des livres
- voir les informations sur les emprunts
- voir les informations sur les livres présents dans une bibliothèque
- etc.
L'exercice, qui peut vous prendre un peu de temps, vous permet de :
- manipuler des objets, listes, dictionnaires
- utiliser des f-strings pour afficher des informations en console
- utiliser des méthodes et même découvrir la méthode
__str__
(faites une recherche Google) - structurer un peu votre code (concept limité par la taille de l'exercice)
Organisation
- un package
entities
contenant- un module
library
pour y mettre la classeLibrary
- un module
book
pour y mettre la classeBook
- un module
user
pour y mettre la classeUser
- un module
- un module
application
vous servant de point d'entrée
L'organisation est simple, ceci dû à la taille du projet. Des projets grandissants impliquent souvent des réorganisations.
Des bibliothèques
- Créez une classe
Library
- Avec des attributs
name
(None
)is_open
(True
)books
(None
)
- Avec des méthodes
__init__(self, name=None, is_open=True)
qui initialise les attributs du nouvel objet.open(self, value=True)
pour changer l'état d'ouverture :- Ne fait rien si
value
a déjà la même valeur queself.is_open
- Ne fait rien si
register_book(self, book)
qui ajoute un livre à l'attribut.books
(le transforme d'abord en liste s'il est àNone
, puis ajoute le livre)show_books()
qui affiche la liste des livres enregistrés__str__(self)
qui renvoie le texte affiché si on faitprint()
sur l'objetget_book_avg_prices()
qui renvoie le prix moyen des livres de la bibliothèque
- Avec des attributs
Des livres
- Créez une classe
Book
- Avec des attributs
title
(None
)author
(None
)is_borrowed
(False
) : le livre est-il empruntéborrower
(None
) : personne qui a empruntéhistory
(None
) : liste des opérations d'emprunt du livreprice
(0
) : prix de base
- Avec des méthodes
__init__(self, ...)
pour initialiser les attributstitle
,price
etauthor
borrow(self, user)
qui marque le livre comme emprunté, et modifieborrower
:- Ne fait rien si le livre est déjà marqué emprunté, sinon :
is_borrowed
devientTrue
borrower
prend la référence de l'objet de la classeUser
history
devient une liste à laquelle on ajoute le dictionnaire{"user": user, "when": datetime.now()}
- Ne fait rien si le livre est déjà marqué emprunté, sinon :
return_borrow(self)
qui marque le livre comme rendu (non emprunté)- Ne fait rien si le livre est déjà marqué comme non emprunté, sinon :
borrower
prend la valeurNone
- Ne fait rien si le livre est déjà marqué comme non emprunté, sinon :
show_history(self)
qui affiche l'historique formaté des empruntsshow_status(self)
qui affiche le statut du livre : titre, emprunté etc.
- Avec des attributs
Des utilisateurs
- Créez une classe
User
- Avec des attributs
name
(None
)
- Avec des méthodes
__init__(self, name=None)
qui initialise l'attribut de l'objet__str__ (self)
qui renvoie une chaînef"Utilisateur : {self.name}"
- Avec des attributs