0% ont trouvé ce document utile (0 vote)
50 vues7 pages

Gestion de Bibliothèque en POO

Ce document décrit un projet de gestion d'une bibliothèque utilisant des concepts avancés de programmation orientée objet. Il inclut la modélisation des ouvrages, la gestion des emprunts et des utilisateurs, ainsi qu'un système d'attribution d'identifiants uniques. Le projet se conclut par la création d'une classe Main pour tester et exécuter le système.

Transféré par

Foaud Azar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
50 vues7 pages

Gestion de Bibliothèque en POO

Ce document décrit un projet de gestion d'une bibliothèque utilisant des concepts avancés de programmation orientée objet. Il inclut la modélisation des ouvrages, la gestion des emprunts et des utilisateurs, ainsi qu'un système d'attribution d'identifiants uniques. Le projet se conclut par la création d'une classe Main pour tester et exécuter le système.

Transféré par

Foaud Azar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Grand TP : Gestion d'une Bibliothèque avec des Classes Complexes

Objectif :
Créer un système complet pour gérer une bibliothèque, incluant la gestion des
livres, des emprunts, des utilisateurs et des réservations. Ce TP va faire appel à
l’utilisation de concepts avancés en programmation orientée objet (POO), comme
l’héritage, le polymorphisme, la composition, l’encapsulation, les classes
statiques, les collections et l’utilisation des diagrammes de classes avec
multiplicité.

Partie 1 : Modélisation des Livres et des Ouvrages


Commence par créer une hiérarchie de classes pour gérer différents types
d'ouvrages (livres, magazines, etc.).
Exercice 1 : Classe de base Ouvrage
Crée une classe Ouvrage avec les attributs : titre, auteur, datePublication, et un
identifiant unique (id). La classe Ouvrage aura aussi une méthode afficherType()
qui affichera un type générique. Crée ensuite les classes Livre et Magazine qui
étendront Ouvrage et redéfiniront afficherType().
Code :
java
CopierModifier
abstract class Ouvrage {
private String titre;
private String auteur;
private String datePublication;
private int id;

public Ouvrage(String titre, String auteur, String datePublication, int id) {


[Link] = titre;
[Link] = auteur;
[Link] = datePublication;
[Link] = id;
}

public abstract void afficherType();


// Getters et Setters
public String getTitre() { return titre; }
public String getAuteur() { return auteur; }
public String getDatePublication() { return datePublication; }
public int getId() { return id; }
}

class Livre extends Ouvrage {


public Livre(String titre, String auteur, String datePublication, int id) {
super(titre, auteur, datePublication, id);
}

@Override
public void afficherType() {
[Link]("Type d'ouvrage : Livre");
}
}

class Magazine extends Ouvrage {


public Magazine(String titre, String auteur, String datePublication, int id) {
super(titre, auteur, datePublication, id);
}

@Override
public void afficherType() {
[Link]("Type d'ouvrage : Magazine");
}
}

Partie 2 : Gestion des Emprunts


Crée une relation entre les Ouvrages et les Emprunts, où chaque emprunt
correspond à un Livre ou un Magazine.
Exercice 2 : Classe Emprunt et Composition
Crée une classe Emprunt qui contient un objet Ouvrage et une date d'emprunt.
La classe Bibliotheque contiendra une liste d’emprunts. Utilise une relation de
composition pour lier un Emprunt à un Ouvrage.
Code :
java
CopierModifier
import [Link];
import [Link];

class Emprunt {
private Ouvrage ouvrage;
private Date dateEmprunt;

public Emprunt(Ouvrage ouvrage, Date dateEmprunt) {


[Link] = ouvrage;
[Link] = dateEmprunt;
}

public Ouvrage getOuvrage() {


return ouvrage;
}

public Date getDateEmprunt() {


return dateEmprunt;
}
}

class Bibliotheque {
private ArrayList<Ouvrage> ouvrages;
private ArrayList<Emprunt> emprunts;
public Bibliotheque() {
ouvrages = new ArrayList<>();
emprunts = new ArrayList<>();
}

public void ajouterOuvrage(Ouvrage ouvrage) {


[Link](ouvrage);
}

public void emprunterOuvrage(Ouvrage ouvrage, Date dateEmprunt) {


[Link](new Emprunt(ouvrage, dateEmprunt));
}

public void afficherEmprunts() {


for (Emprunt emprunt : emprunts) {
[Link]("Ouvrage : " + [Link]().getTitre() +
", Emprunté le : " + [Link]());
}
}
}

Partie 3 : Gestion des Utilisateurs et Réservations


Gère des utilisateurs qui peuvent réserver des ouvrages. Chaque utilisateur aura
un identifiant unique.
Exercice 3 : Classe Utilisateur et Réservations
Crée une classe Utilisateur avec des attributs comme nom, idUtilisateur, et une
méthode pour effectuer une réservation. Utilise une collection HashMap pour
associer les utilisateurs aux ouvrages réservés.
Code :
java
CopierModifier
import [Link];
class Utilisateur {
private String nom;
private int idUtilisateur;
private HashMap<Integer, Ouvrage> reservations;

public Utilisateur(String nom, int idUtilisateur) {


[Link] = nom;
[Link] = idUtilisateur;
[Link] = new HashMap<>();
}

public void reserverOuvrage(Ouvrage ouvrage) {


[Link]([Link](), ouvrage);
[Link](nom + " a réservé l'ouvrage : " + [Link]());
}

public void afficherReservations() {


[Link]("Réservations de " + nom + " :");
for (Ouvrage ouvrage : [Link]()) {
[Link]([Link]());
}
}
}

Partie 4 : Gestion des Collections et Statique


Utilise une classe statique pour gérer l’attribution d’identifiants uniques à chaque
utilisateur, ouvrage, etc. Cela évite les conflits d'ID.
Exercice 4 : Classe Statique pour Gestion des ID
Crée une classe statique GestionnaireID qui attribue un identifiant unique à
chaque Utilisateur et chaque Ouvrage.
Code :
java
CopierModifier
class GestionnaireID {
private static int currentID = 0;

public static int getNextID() {


return ++currentID;
}
}

class Livre extends Ouvrage {


public Livre(String titre, String auteur, String datePublication) {
super(titre, auteur, datePublication, [Link]());
}
}

class Utilisateur {
private String nom;
private int idUtilisateur;

public Utilisateur(String nom) {


[Link] = nom;
[Link] = [Link]();
}
}

Partie 5 : Diagramme de Classe et Multiplicité


Crée un diagramme de classe montrant les relations entre Bibliotheque, Ouvrage,
Emprunt, et Utilisateur. Modélise la multiplicité, par exemple :
 Une Bibliotheque contient plusieurs Ouvrages (1..).
 Un Utilisateur peut réserver plusieurs Ouvrages (0..).
 Un Ouvrage peut être emprunté plusieurs fois (0..).
Partie 6 : Tests et Exécution
Enfin, écris une classe Main qui va :
1. Créer une bibliothèque.
2. Ajouter des ouvrages (livres, magazines).
3. Créer des utilisateurs et leur permettre de réserver des ouvrages.
4. Afficher les emprunts et les réservations.
Code :
java
CopierModifier
public class Main {
public static void main(String[] args) {
Bibliotheque bibliotheque = new Bibliotheque();
Livre livre1 = new Livre("Les Misérables", "Victor Hugo", "1862");
Magazine magazine1 = new Magazine("Le Monde", "Rédaction", "2023");

[Link](livre1);
[Link](magazine1);

Utilisateur utilisateur1 = new Utilisateur("Pierre Dupont");


[Link](livre1);

[Link](livre1, new Date());


[Link]();
[Link]();
}
}

Vous aimerez peut-être aussi