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

Atelier UML pour Gestion de Bibliothèque

Ce document présente un exercice de programmation Java axé sur la gestion d'une bibliothèque à partir d'un diagramme UML. Il décrit la création de classes telles que Bibliotheque, Adherent et Document, ainsi que les méthodes pour gérer l'emprunt et le retour de livres. L'exercice inclut également des tests pratiques pour vérifier le bon fonctionnement des classes et méthodes implémentées.

Transféré par

lammouchi
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues7 pages

Atelier UML pour Gestion de Bibliothèque

Ce document présente un exercice de programmation Java axé sur la gestion d'une bibliothèque à partir d'un diagramme UML. Il décrit la création de classes telles que Bibliotheque, Adherent et Document, ainsi que les méthodes pour gérer l'emprunt et le retour de livres. L'exercice inclut également des tests pratiques pour vérifier le bon fonctionnement des classes et méthodes implémentées.

Transféré par

lammouchi
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 PDF, TXT ou lisez en ligne sur Scribd

POO Avancée : PROGRAMMATION OBJET AVANCEE

Spécialité : DSI

Atelier 1 : UML / Collections

Objectifs
L’objectif de cet Exercice Java est de réaliser un exemple plus complet et global, en partant
d’un diagramme UML jusqu’à la réalisation finale en Java. L’exemple ne contient pas de
difficulté particulière, si ce n’est qu’il faut bien comprendre comment on passe d’une
représentation UML à un code Java.

Exercice
Dans cet Exercice Java On désire réaliser un programme permettant de gérer une petite
bibliothèque.

Figure1- Digramme de classe de l’application Bibliothèque

Pour cela on a besoin d’une classe Bibliotheque, d’une classe Adherent et d’un ensemble de
classes de Document qui présentent les caractéristiques suivantes:
- Les adhérents ont un prénom (String) et un nom (String aussi).

Wafa NEJI | Page 1


POO Avancée : PROGRAMMATION OBJET AVANCEE
Spécialité : DSI

- La bibliothèque comprend un ensemble de documents statiques et un ensemble


d’adhérents statiques
- Ces documents sont soit des journaux, soit des volumes.
- Les volumes sont soit des dictionnaires soit des livres, soit des BD.
- Les documents sont caractérisés par un titre (chaîne de caractères).
- Les volumes ont en plus un auteur (String). Les BD ont en plus un nom de dessinateur
(String).
- Les journaux ont (outre les caractéristiques de document) une date de parution
- Seuls les livres sont empruntables.
- Les adhérents peuvent emprunter des livres (et uniquement des livres) et on doit
pouvoir savoir à tout moment quels sont les livres empruntés par un adhérent.
Cet ensemble de critères a donné lieu à la réalisation du diagramme UML illustré par la
figure1.

1. Ecrire les classes Java correspondant à ce diagramme. Définir des méthodes toString()
permettant de visualiser ces objets convenablement.
2. Ecrire les méthodes ajouterAdherent et ajouterDocument dans Bibliotheque.
NB : Les relations multiples entre les entités doivent être représentées comme des attributs
de type [Link].
1. Pour tester ces classes, ajouter la classe TestBibliotheque :

public class TestBibliotheque {

public static void main(String[] args) {

Bibliotheque bibli = new Bibliotheque();


Adherent ad1 = new Adherent("Jean", "Dupond");
Adherent ad2 = new Adherent("Marie", "Dubois");
[Link](ad1);
[Link](ad2);

int n = 5;
Document[] docs = new Document[n];
docs[0] = new Livre("Misérables", "Hugo V.");
docs[1] = new Journal("Dr Dobbs", 12, 10, 2003);
docs[2] = new BD("La galère le noire", "Van Hamme", "Rosinsky");
docs[3] = new Livre("Systèmes multi-agents", "Ferber J.");
docs[4] = new Livre("Le rouge et le noir ", "Stendhal");
for (int i = 0; i < n; i++) {
[Link]("document " + docs[i].toString());
[Link](docs[i]);
}

2. Ecrire le code des méthodes permettant de gérer l’emprunt et le rendu d’un livre.
Dans la classe Bibliothèque, ces méthodes sont définies ainsi :

Wafa NEJI | Page 2


POO Avancée : PROGRAMMATION OBJET AVANCEE
Spécialité : DSI

 public static Livre emprunterLivre(int code) : cette méthode permet de


rechercher le livre (en utilisant son code) dans la liste des documents de la
bibliothèque. Si le livre est déjà emprunté, cette méthode retourne null. Sinon, elle
met à jour le nouveau statut du livre (emprunté=true) et retourne le livre trouvé.
 public static boolean rendreLivre(int code) cette méthode permet de rechercher
le livre (en utilisant son code) dans la liste des documents de la bibliothèque. Si le
livre n’existe pas, cette méthode retourne null. Sinon, elle met à jour le nouveau
statut du livre (emprunté=false) et retourne le livre trouvé.

Dans la classe Adhérent, ces méthodes sont définies ainsi:

 public void emprunter(int code) : cette méthode fait appel à la méthode


emprunterLivre de la classe Bibliothèque et rajoute le livre à la liste des livres
empruntés de l’adhérant.
! Attention: un livre ne peut être emprunté que s’il n’est pas déjà emprunté par un
adhérent. Si le livre à été déjà emprunté, le message suivant sera affiché : "Ce livre
a été déjà emprunté"
 public void rendre (int code) : cette méthode fait appel à la méthode rendreLivre
de la classe Bibliothèque et supprime le livre de la liste des livres empruntés de
l’adhérant.

3. Rajouter le code suivant dans la fonction main de la classe TestBibliothèque. Quel est le
résultat obtenu ?
[Link](4);
[Link](5);
[Link](4);

4. Rajouter la méthode statique listerDocuments dans la classe Bibliothèque, permettant de


lister l’ensemble des documents avec leurs caractéristiques et de lister, lorsqu’il s’agit
d’un livre, les adhérents éventuels.

Wafa NEJI | Page 3


POO Avancée : PROGRAMMATION OBJET AVANCEE
Spécialité : DSI

Atelier 1 : UML / Collections - Correction

import [Link];
import [Link];

public class Bibliotheque {

private static List<Adherent> adherents = new ArrayList<Adherent>();


private static List<Document> documents = new ArrayList<Document>();

public void ajouterAdherent(Adherent adherent) {


[Link](adherent);
}

public void ajouterDocument(Document document) {


[Link](document);
}

public static Livre emprunterLivre(int code) {


for (Document d : documents) {
if ([Link]() == code) {
if ([Link]()) {
return null;
} else {
[Link](true);
return (Livre) d;
}
}
}
return null;
}

public static Livre rendreLivre(int code) {


for (Document d : documents) {
if ([Link]() == code) {
[Link](false);
return (Livre) d;
}
}
return null;
}

public static ArrayList<Document> chercherDocument(String titre) {


ArrayList<Document> docs = new ArrayList<Document>();

for (Document d : documents) {


if ([Link]().contains("titre")) {
[Link](d);
}
}
return docs;
}

Wafa NEJI | Page 4


POO Avancée : PROGRAMMATION OBJET AVANCEE
Spécialité : DSI

public static void listerDocuments(){


for(Document d: documents){
[Link]([Link]());
if(d instanceof Livre){
for(Adherent a : adherents){
for(Livre l : [Link]()){
if ([Link](d)){
[Link]("Le livre"+ [Link]()+" est emprunte par"+ [Link]());
}
}

}
}
}

}
}
import [Link];
import [Link];

public class Adherent {

private int cin;


private String login;
private String password;
private String nom;
private String prenom;

private List<Livre> livresEmpruntes = new ArrayList<Livre>();

public Adherent(String login, String password, String nom, String prenom,


int cin) {
super();
[Link] = login;
[Link] = password;
[Link] = nom;
[Link] = prenom;
[Link] = cin;
}

public void emprunter(int codeLivre) {


Livre livre = [Link](codeLivre);
if (livre == null) {
[Link]("Ce livre a été déjà emprunté");
} else {
[Link](livre);
}
}

public void rendre(int codeLivre) {


Livre livre = [Link](codeLivre);
[Link](livre);
}

public List<Livre> getLivresEmpruntes() {


return livresEmpruntes;
}

@Override

Wafa NEJI | Page 5


POO Avancée : PROGRAMMATION OBJET AVANCEE
Spécialité : DSI

public String toString() {


return "Adherent [cin=" + cin + ", login=" + login + ", nom=" + nom
+ ", prenom=" + prenom + "]";
}
}
public class Document {

private int code;


private String titre;
private boolean emprunte;
private static int numCode = 1;

public Document(String titre) {


super();
[Link] = numCode;
numCode++;
[Link] = titre;
}

@Override
public String toString() {
return "Document [code=" + code + ", titre=" + titre + ", emprunte="
+ emprunte + "]";
}

public boolean isEmprunte() {


return emprunte;
}

public void setEmprunte(boolean emprunte) {


[Link] = emprunte;
}

public String getTitre() {


return titre;
}

public int getCode() {


return code;
}
}
public class Dictionnaire extends Volume {

public Dictionnaire(String titre, String auteur) {


super(titre, auteur);
}

}
public class Livre extends Volume{

public Livre(String titre, String auteur) {


super(titre, auteur);
}
}
public class Journal extends Document {

private Date date;

public Journal(String titre, int day, int month, int year) {

Wafa NEJI | Page 6


POO Avancée : PROGRAMMATION OBJET AVANCEE
Spécialité : DSI

super(titre);
[Link] = new Date(day, month, year);
}

@Override
public String toString() {
return "Journal [date=" + date + "]";
}
}

public class Volume extends Document{

private String auteur;

public Volume(String titre, String auteur) {


super(titre);
[Link] = auteur;
}
}
public class BD extends Volume {

private String dessinateur;

public BD(String titre, String auteur, String dessinateur) {


super(titre, auteur);
[Link] = dessinateur;
}

@Override
public String toString() {
return "BD [dessinateur=" + dessinateur + "]";
}
}
public class TestBibliotheque {
public static void main(String[] args) {
Bibliotheque bibli = new Bibliotheque();
Adherent ad1 = new Adherent("[Link]","pwdJD","Jean", "Dupond",1547);
Adherent ad2 = new Adherent("[Link]","pwdMD","Marie", "Dubois",1874);
[Link](ad1);
[Link](ad2);

int n = 5;
Document[] docs = new Document[n];
docs[0] = new Livre("Misérables", "Hugo V.");
docs[1] = new Journal("Dr Dobbs", 12, 10, 2003);
docs[2] = new BD("Thorgal: La galère le noire", "Van Hamme", "Rosinsky");
docs[3] = new Livre("Systèmes multi-agents", "Ferber J.");
docs[4] = new Livre("Le rouge et le noir ", "Stendhal");
for (int i = 0; i < n; i++) {
[Link]("document " + docs[i].toString());
[Link](docs[i]);
}
[Link](4);
[Link](5);
[Link](4);
[Link]();
}
}

Wafa NEJI | Page 7

Vous aimerez peut-être aussi