Vous êtes sur la page 1sur 19

MINI PROJET POO

Réalisé par :
• MOHAMMED BOUFENZI
• SAID EDDINE ABDRAHIM

Supervisé par :

MADAME SAFAE BALHOUS

Filière :
SEER 1 :

Année Universitaire : 2019/2020


SOMMAIRE
REMERCIMENTS ..................................................................................................................... 4
SPECIFICATION DU PROBLEME : ...................................................................................... 5
INTRODUCTION GENERALE : ............................................................................................. 6
Chapitre I- la modélisation UML .............................................................................................. 7
I- Diagramme de cas d’utilisation ...................................................................................... 7
I.1- Les acteurs du système : .............................................................................................. 7
I.2- diagramme de cas d’utilisation de l’application : ...................................................... 8
I.3- démarche pour réserver un livre : .............................................................................. 8
II- Diagramme de classes : ............................................................................................... 9
II.1- représentation des différentes classes : ..................................................................... 9
II.2- diagramme de classe de l’application : ................................................................... 10
III- Diagramme de séquence : ......................................................................................... 10
III.1- Affichage des informations concernant l'utilisateur ............................................ 10
III.2- les scénarios pour réserver un ouvrage ................................................................. 11
CHAPITRE II - IMPLEMENTATION JAVA....................................................................... 14
II.1- introduction ............................................................................ Erreur ! Signet non défini.
CONCLUSION .......................................................................................................................... 20
REMERCIMENTS

On remercie Dieu tout Puissant de nous avoir permis de mener à terme ce mini projet

qui est pour nous le point de départ d'une merveilleuse aventure, celle de la recherche,

source de remise en cause permanent et de perfectionnement perpétuelle.

Qu'il nous soit permis de rendre un vibrant hommage à notre encadrant,

Madame SAFAE BALHOUS pour avoir bien voulu superviser ce modeste travail et

donné de son temps et de son intelligence à la réussite de ce projet qui pour moi

représente un modèle de réussite et une source de motivation permanente, pour sa

disponibilité, et son sens aigu de l'humanisme pédagogique.


SPECIFICATION DU PROBLEME :

Un gérant de bibliothèque désire automatiser la gestion des prêts. Il commande un

logiciel permettant de répondre à la liste des besoins suivants :

• Les utilisateurs peuvent connaître les livres présents et en réserver jusqu'à 2 en

même temps.

• L'adhérent peut connaître la liste des livres qu'il a empruntés ou réservés.

• L'adhérent possède un mot de passe qui lui est donné à son inscription.

• L’emprunt est toujours réalisé par les employés qui travaillent à la bibliothèque.

Après avoir identifié l'emprunteur, ils savent si le prêt est possible (nombre maximum

de prêts = 5), et s'il a la priorité (il est celui qui a réservé le livre, si ce dernier est

réservé).

• Ce sont les employés qui mettent en bibliothèque les livres rendus et les nouveaux

livres. Il leur est possible de connaître l'ensemble des prêts réalisés dans la

bibliothèque.

• Le logiciel demandé a la possibilité de :

o Ajouter un adhérent et ses réservations.

o Modifier les informations d’un adhérent ou d’une réservation.

o Afficher les informations nécessaires


INTRODUCTION GENERALE :

Ce projet Gestion Bibliothèque, a pour objectif la conception d’un système

D’information permettant d’aider à la gestion de la Bibliothèque et plus précisément,

Aider à la gestion des emprunts, réservations et retours des livres. Le logiciel, qui fera

Suite à cette analyse, devra permettre donc de :

• Gérer les personnes inscrites –ou souhaitant s’inscrire- à la bibliothèque,

• Gérer l’emprunt, le retour et le rappel de livre.

• Ainsi que les réservations par des personnes inscrites.

Au cœur de ce projet, nous allons présenter différents diagrammes modélisés selon la

Méthode UML, Chaque modélisation sera annotée, la démarche que nous aurons
suivit,

Les différentes hypothèses soulevées et les différents choix.


Chapitre I- la modélisation UML
I- Diagramme de cas d’utilisation

Définition :

Les diagrammes de cas d'utilisation sont des diagrammes UML utilisés pour donner
une vision globale du comportement fonctionnel d'un système logiciel. Ils sont utiles
pour des présentations auprès de la direction ou des acteurs d'un projet, mais pour le
développement, les cas d'utilisation sont plus appropriés. Un cas d'utilisation
représente une unité discrète d'interaction entre un utilisateur (humain ou machine) et
un système. Il est une unité significative de travail. Dans un diagramme de cas
d'utilisation, les utilisateurs sont appelés acteurs (actors), ils interagissent avec les cas
d'utilisation (use cases).

I.1- Les acteurs du système :

Employé Client

Employé : Personne habilitée à utiliser le système pour gérer les emprunts, les
réservations, les restitutions, les emprunteurs et le fond de bibliothèque

Adhérent : Personne inscrite à la bibliothèque, ayant le bibliothécaire comme


interlocuteur, pour emprunter, restituer ou réserver des livres
I.2- diagramme de cas d’utilisation de l’application :

Bibliothèque

Remettre un
livre Réaliser un
emprunt

Ajouter de
nouveaux livres

Employé
Identification
Par carte de
membre
Connaître
les livres
présents
Par mot de
passe
Connaître
les livres
Empruntés
Réserver un
Client livre

I.3- démarche pour réserver un livre :

- Le système affiche un écran d'accueil


- Le client choisit l’opération de réservation parmi les actions disponibles
- Le système demande à l’utilisateur de s'authentifier
- L’utilisateur fournit alors ses identifiants (login et mot de passe)
- Le système lui demande de choisir un livre parmi les exemplaires disponibles à la
bibliothèque.
- Le client sélectionne le livre qu’il désire réserver.
- Le système accuse la demande et confirme à l’utilisateur que la réservation a été
effectuée
II- Diagramme de classes :

Définition :
Un diagramme de classes fournit une vue globale d'un système en présentant ses
classes, interfaces et collaborations, et les relations entre elles. Les diagrammes de
classes sont statiques : ils affichent ce qui interagit mais pas ce qui se passe pendant
l'interaction.

II.1- représentation des différentes classes :


❖ Classe media

❖ la classe bibliothèque :
❖ la classe employé :

❖ La classe adhérent :

❖ La classe prêt :

II.2- diagramme de classe de l’application :

III- Diagramme de séquence :

Définition :
Le diagramme de séquence est une représentation intuitive qu’on a utilisée pour
concrétiser des interactions entre nos entités. Le diagramme de séquence décrit un
scénario qui modélise une exécution particulière d’un cas d’utilisation du début
jusqu’à la fin. Il correspond à une sélection d’enchaînements du cas d’utilisation.

III.1- Affichage des informations concernant l'utilisateur


III.2- les scénarios pour réserver un ouvrage

Système de prêt
Client

Affichage de l'écran d'accueil

Choix de l'opération "informations"

Demande d'identification du client

Identification du client (login, password)

Affichage des informations concernant l'utilisateur

Demande de déconnection (fin de consultation)


• L’utilisateur n’a pas encore attient le nombre max de réservation

Système de prêt
Client

Affichage de l'écran d'accueil

Choix de l'opération "réserver"

Demande d'identification du client

Identification du client (login, password)

Demande d'identification de l'ouvrage

Identification du livre

Message "Réservation complète"

Demande de déconnection (fin de réservation)


• L’utilisateur est attenu le nombre max de réservation

Système de prêt
Client

Affichage de l'écran d'accueil

Choix de l'opération "réserver"

Demande d'identification du client

Identification du client (login, password)

Désole : trop de livre déjà réservés !


Chapitre II - implémentation java
I- Introduction

On veut modéliser la gestion d'une bibliothèque : on définira un certain nombre de


classes : Main, Ouvrage, BiblioList, Bibliotheque, Periodique, CD, Livre. Les livres
auront comme propriétés : auteur, titre, éditeur ; les périodiques : nom, numéro,
périodicité ; les CDs : titre, auteur. De plus tous les ouvrages auront une date
d'emprunt (potentiellement nulle), une cote (le numéro par ordre de création). On
implémentera également sur chaque objet une méthode toString() renvoyant toutes les
informations sur l'ouvrage sous forme d'une chaîne de caractères.
La classe BiblioList permettra de stocker dans une structure les livres (ajout et
suppression, la suppression prenant en argument la cote de l'ouvrage). Elle aura
également une méthode toString() affichant le nombres d'ouvrages, puis chaque
ouvrage successivement. La classe Bibliotheque sera simplement une version abstraite
déclarant les mêmes méthodes que BiblioList mais sans les
implémenter. BiblioList héritera de Bibliotheque.
La classe Main ne contiendra que la méthode main et testera la bibliothèque en y
insérant et supprimant quelques ouvrages, puis en affichant le contenu de la
bibliothèque.

1. Représentez les différentes classes dans un graphe d'héritage. On mettra en


évidence pour chaque classe les méthodes et les champs qu'elle définit, redéfinit
ou hérite. On souhaite que tous les champs soient déclarés privés et que l'on
puisse y accéder de l'extérieur que par des méthodes.
2. Implémentez les classes ci-dessus. Pour la classe BiblioList on utilisera
Les méthodes boolean add(Object o) qui permet d'ajouter un objet dans la
liste, boolean remove(Object o) Object get(int index) et int size(), implémentez la
classe BiblioList.
II- Code java

// Ouvrage.java
public abstract class Ouvrage {
private static int nombre ;
private int cote ;
String dateEmprunt ;

public int cote() {


return cote ;
}
public String toString() {
String res = "[" + cote + "] ";
if(dateEmprunt != null)
return res + "emprunte le " + dateEmprunt ;
else
return res + "disponible" ;
}
public String dateEmprunt() {
return dateEmprunt ;
}

public void setDateEmprunt(String dateEmprunt) {


this.dateEmprunt = dateEmprunt ;
}
public static int getNombre() {
return nombre ;
}
public Ouvrage() {
cote = nombre++ ;
}

// Livre.java
public class Livre extends Ouvrage {
private String titre ;
private String auteur ;
private String editeur ;

public void setTitre(String titre) {


this.titre = titre ;
}
public String titre() {
return titre ;
}
public void setAuteur(String auteur) {
this.auteur = auteur ;
}
public String auteur() {
return auteur ;
}
public void setEditeur(String editeur) {
this.editeur = editeur ;
}
public String editeur() {
return editeur ;
}
public String toString() {
return super.toString() + " " + titre + " " + auteur + " " + editeur ;
}
public Livre(String titre, String auteur, String editeur) {
this.titre = titre ;
this.auteur = auteur ;
this.editeur = editeur ;
}

// Biblio.java
public abstract class Biblio {
public abstract void add(Ouvrage o) ;
public abstract void remove(int cote) ;
public abstract String toString() ;
public abstract int number() ;
}
// BiblioList.java
import java.util.* ;

public class BiblioList extends Biblio {


List l = new LinkedList() ;
public void add(Ouvrage o) {
l.add(o) ;
}

public void remove(int cote) {


for(int i=0 ; i<l.size() ; i++) {
Ouvrage o = (Ouvrage)l.get(i) ;
if(o.cote() == cote)
l.remove(o) ;
}
}

public String toString() {


String buf = "" ;
for(int i=0 ; i<l.size() ; i++) {
buf = buf + "\n" + l.get(i).toString() ;
}
return buf ;
}

public int number() {


return l.size() ;
}
}

// Main.java

public class Main {


public static void main(String[] args) {
Ouvrage o1, o2, o3, o4 ;
o1 = new Livre("La petite fille au tambour", "John Le Carre", "Seuil") ;
o2 = new Livre("Pour qui sonne le glas", "Ernest Hemingway", "J'ai Lu") ;
o3 = new Livre("Guide du routard galactique", "Douglas Adams", "Denoel") ;
o4 = new Livre("En attendant le vote des betes sauvages","Amadou
Kourouma","Seuil") ;
Biblio b = new BiblioList() ;
b.add(o1) ;
b.add(o2) ;
b.add(o3) ;
b.add(o4) ;
System.out.println(b.toString()) ;
o2.setDateEmprunt("31/10/2001") ;
b.remove(o1.cote()) ;
b.remove(o3.cote()) ;
System.out.println(b.toString()) ;
}

}
I- Interface graphique

Dans cette partie de notre travail nous avons conçu une interface graphique
(application) pour la gestion d’une bibliothèque ensuit nous avons crée une vidéo qui
résumé le travail qu’on avait effectuer
CONCLUSION

L’objectif de ce projet était de modéliser le système d’information nécessaire pour

gérer la bibliothèque donnée, selon les préceptes de la « méthode » d’analyse UML.

Les différentes tâches fixées ont été réalisées à partir de plusieurs hypothèses.

Nous avons modélisé les opérations importantes en respectant les contraintes

fixées et avons du faire un bon nombre de back-tracking au niveau des diagrammes

afin de les conformer les uns au autres et d’avoir une vision au plus juste possible.

Les diagrammes de séquences, cas d’utilisations, diagramme de classes, diagrammes

états-transition font partie de notre analyse. Nous regrettons simplement de n’avoir

pu faire de diagramme d’activité par manque de tem