Contexte
Il y a quelques années, vous avez investi dans plusieurs bibliothèques. Bien qu’elles fonctionnent très bien, elles ont un gros défaut : le logiciel de gestion des documents commence à se faire vieux … Il y a de plus en plus de documents dans vos bibliothèques et le logiciel commence à bugger au fur et à mesure que vous en ajoutez.
Heureusement, vous savez programmer en Python et vous décidez de développer vous-même un nouveau logiciel afin de pouvoir le maintenir, pour les prochaines mises à jour que vous lui apporterez.
Vous optez pour un logiciel structuré avec des classes. Votre bibliothèque contient 3 types de documents : des livres, des articles et des périodiques (= des magazines, revues, …).
- Il vous faudra donc 4 classes :
- La classe principale qui est
Document
. - Et 3 classes qui en héritent :
Livre
,Article
etPeriodique
.
- La classe principale qui est
Classe principale: Document
Vous devez coder une classe Document
. Les consignes d'implémentation sont les suivantes:
- Un objet
Document
a 4 attributs: - Les auteurs.
- Un titre.
- Le nombre d’exemplaires de ce document que possède la bibliothèque.
- Le nombre d’exemplaires de ce document présents dans la bibliothèque.
Il vous est demandé d'écrire le constructeur de la classe document
, prenant en entrée deux arguments (dans cet ordre) : les auteurs
(string) et le titre
du document (string). Le nombre d'exemplaire et le nombre d'exemplaire présents doivent être initialisé à 1.
Vous devez ensuite écrire les 4 getters pour vos 4 attributs:
get_auteurs(self) #Renvoie en sortie les auteurs du document get_titre(self) #Renvoie le titre du document get_nombre_exemplaires(self) #Renvoie le nombre d'exemplaires du document que la bibliothèque possède get_nombre_exemplaires_restants(self) #Renvoie le nombre d'exemplaires actuellement présents dans la bibliothèque
Enfin, il vous est demandé d'écrire les fonctions suivantes:
est_present(self) #Renvoie True s'il reste au moins un exemplaire du document présent dans le bibliothèque, et False sinon emprunt(self) #Renvoie "Impossible" s'il n'y a aucun exemplaire du document en stock. Sinon, renvoie "Ok", et décrémente le nombre d'exemplaires en stock de 1. retour(self) #Renvoie "Impossible" si tous les exemplaires du document sont en stock. Sinon, renvoie "Ok", et incrémente le nombre d'exemplaires en stock de 1. ajout(self) #Ajoute un exemplaire du document à la bibliothèque suppression(self) #Si tous les exemplaires du document sont présents dans la bibliothèque, renvoie "Ok" et mets les deux compteurs d'exemplaires à zéro. Sinon, renvoie "Impossible".
Classe: Livre
La classe Livre
hérite de la classe Document
. Il vous est demandé d'écrire un constructeur prenant en entrée 5 arguments (dans cet ordre) : auteurs
(string), titre
(string), nombre_pages
(integer), genre
(string) et date
(integer).
Un objet Livre
a donc 7 attributs (4 provenant de la classe Document
et 3 dans la classe Livre
)
Vous devez ensuite écrire les 3 getters pour vos 3 attributs de Livre
:
get_nombre_pages(self) #Renvoie en sortie le nombre de pages du livre get_genre(self) #Renvoie le genre du livre get_date(self) #Renvoie l'année de sortie du livre
Classe: Article
La classe Article
hérite de la classe Document
. Il vous est demandé d'écrire un constructeur prenant en entrée 5 arguments (dans cet ordre) : auteurs
(string), titre
(string), sources
(list), sujet
(string) et date
(integer).
Attention, en plus de ces attributs, un objet Article
a un attribut nombre_sources
(integer) qui contient le nombre de sources de l’article. Un objet Article
a donc 8 attributs (4 provenant de la classe Document
et 4 dans la classe Article
)
Vous devez ensuite écrire les 4 getters pour vos 4 attributs de Article
:
get_sources(self) #Renvoie en sortie la liste des sources de l'article get_nombre_sources(self) #Renvoie en sortie le nombre de sources de l'article get_sujet(self) #Renvoie le sujet de l'article get_date(self) #Renvoie l'année de publication de l'article
Classe: Periodique
La classe Periodique
hérite de la classe Document
. Il vous est demandé d'écrire un constructeur prenant en entrée 5 arguments (dans cet ordre) : auteurs
(string), titre
(string), sujets
(list), date_debut
(integer) et date_fin
(integer).
Attention, en plus de ces attributs, un objet Periodique
a un attribut nombre_sujets
(integer) qui contient le nombre de sujets du périodique. Un objet Periodique
a donc 8 attributs (4 provenant de la classe Document
et 4 dans la classe Periodique
)
Vous devez ensuite écrire les 4 getters pour vos 4 attributs de Article
:
get_sujets(self) #Renvoie en sortie la liste des sujets du périodique get_nombre_sujets(self) #Renvoie en sortie le nombre de sujets du périodique get_date_debut(self) #Renvoie l'année de début de diffusion du périodique get_date_fin(self) #Renvoie l'année de fin de diffusion du périodique