Information

Author(s) Pierre Leleux
Deadline Geen deadline
Submission limit No limitation

Sign in

Monitorat03

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 et Periodique.

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

Question 1: Classe Document

Ecrivez ici votre classe Document

Question 2: Classe Livre

Ecrivez ici votre classe Livre

Question 3: Classe Article

Ecrivez ici votre classe Article

Question 4: Classe Periodique

Ecrivez ici votre classe Periodique