Gestion des prêts dans une médiathèque

Documents pareils
UML et les Bases de Données

deux niveaux 750 m² ordinateurs tablettes liseuses lecteurs MP3. programmation culturelle accueille

Cours d initiation à la programmation en C++ Johann Cuenin

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Projet. Politique de gestion des documents et archives. Service du greffe (Avril 2012)

GOL502 Industries de services

Sommaire. Astuce : cliquer sur la question qui vous intéresse vous renvoie directement au chapitre concerné.

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Gé nié Logiciél Livré Blanc

8.3 Tableau comparatif des acteurs et prestataires de ressources numériques en ligne

Premiers Pas en Programmation Objet : les Classes et les Objets

Fiche professeur : Séquence non expérimentée

Ma médiathèque et moi :

TD/TP PAC - Programmation n 3

Poker. A rendre pour le 25 avril

Portail : mode d emploi

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

TD/TP PAC - Programmation n 3

Bases de Données relationnelles et leurs systèmes de Gestion

Table des matières Sources

Programmation d application Bases de données avec Java

BIBLIOTHÈQUE NUMÉRIQUE MODE D EMPLOI

PROPOSITION DE CONTRAT CONCERNANT LA MISE EN PLACE D UN SYSTEME DE MICRO-CREDIT AU VILLAGE DE ZIGLA KOULPELE

Rappel sur les bases de données

En date du 11 décembre 2008

Structurer ses données : les tableaux. Introduction à la programmation

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Olivier Mondet

FORMATION MULTIMÉDIA LVE

Nom de l application

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Projet Active Object

Les nombres entiers. Durée suggérée: 3 semaines

TOURNAGE VIDEO. «Titre Conférence» «date et lieu»

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Ingénérie logicielle dirigée par les modèles

Les archives. On conserve ces documents pour faire des recherches historiques, administratives ou généalogiques.

MISE EN SERVICE D UN RESEAU DE CAMERA DE VIDEOSURVEILLANCE

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Java Licence Professionnelle CISII,

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

TP3 : Creation de tables 1 seance

LE MODELE CONCEPTUEL DE DONNEES

NF26 Data warehouse et Outils Décisionnels Printemps 2010

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Langage SQL : créer et interroger une base

INDICATIONS COMPLÉMENTAIRES

La Bibliothèque municipale a pour mission de contribuer aux loisirs, à l information, à l éducation et à la culture de tous.

Création et Gestion des tables

REGLEMENT DU JEU «KDO2Mobile» SMS 73700

GUIDE Excel (version débutante) Version 2013

Université de Lausanne

REGLEMENT INTERIEUR PREAMBULE : I. USAGERS. Article 1 : Accès. Article 2 : Inscription. Article 3 : Comportement dans la médiathèque

LYCEE : cycle de détermination (2nde) Technologie S INFORMER : Organiser l information Metttre en relation des informations de nature différente

Cours Microfer Chartres

Edition Nomenclatures d activités et de produits françaises NAF rév. 2 - CPF rév. 2.1 Section J Division 60

Le langage SQL Rappels

RMI le langage Java XII-1 JMF


LIVRET DU CANDIDAT LES DEUX OPTIONS FACULTATIVES DANSE AU BACCALAURÉAT

Évaluation et implémentation des langages

Chapitre 2. Classes et objets

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

Conception des systèmes répartis

Cours de bases de données. Philippe Rigaux

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Emprunter un livre numérique avec une tablette Surface ou un téléphone Windows

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction au langage de programmation Java

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Règlements. des bibliothèques. de Terrebonne. ville.terrebonne.qc.ca

PHP 5. La base de données MySql. A. Belaïd 1

Convention de résidence

Systèmes d information et bases de données (niveau 1)

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier

La persistance des nombres

Atelier Fichier Client

M1 : Ingénierie du Logiciel

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Généralités sur le Langage Java et éléments syntaxiques.

Règlement de la Consultation

Services bancaires. Introduction. Objectifs d apprentissage

Les chaînes de caractères

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Délibération au Conseil Municipal du lundi 27 mai 2013

Service juridique (Bureau chargé des questions d éthique et de déontologie) Expert de domaine :

Vu la circulaire n du 8 septembre 2003 relative aux modalités d accueil en milieu professionnel des élèves mineurs de moins de seize ans :

entourer les catégories E q u i p e m e n t c o n c e r n é Lieu d'implantation : Charge initiale : Kg

Chapitre 10. Les interfaces Comparable et Comparator 1

GUIDE DU TUTEUR ACCUEIL D UN ETUDIANT EN BTS MUC. Management des Unités Commerciales. Stage de 1ère année

PORTAIL DOCUMENTAIRE Guide d utilisation

Objets et Programmation. origine des langages orientés-objet

La lettre d information de la médiathèque départementale

AIDE MEMOIRE. Forprev. De l habilitation à la gestion de sessions. Page 1 sur 55

Université de Lausanne

Transcription:

Gestion des prêts dans une médiathèque Denis Conan, Chantal Taconet, Christian Bac Revision : 1117 CSC4102 Télécom SudParis Janvier 2016

Table des matières Gestion des prêts dans une médiathèque Denis Conan, Chantal Taconet, Christian Bac,, Télécom SudParis, CSC4102 Janvier 2016 1 1 Introduction 4 2 Cahier des charges 5 2.1 Règles de prêt............................................. 5 3 Spécification 7 3.1 Acteurs et cas d utilisation...................................... 7 3.1.1 Version Xfig......................................... 7 3.1.2 Version PlantUML....................................... 9 3.1.3 Version Umlet......................................... 12 3.1.4 Version Papyrus....................................... 14 3.2 Priorités, préconditions et postconditions des cas d utilisation.................. 17 3.3 Préparation des tests de validation du cas d utilisation Emprunter un document........ 19 4 Conception préliminaire 21 4.1 Listes des classes candidates et de leurs attributs......................... 21 4.2 Premières opérations des classes................................... 21 4.3 Diagramme de classes........................................ 22 4.3.1 Version Xfig......................................... 23 4.3.2 Version PlantUML....................................... 24 4.3.3 Version Umlet......................................... 25 4.4 Diagrammes de communications et de séquence.......................... 26 4.4.1 Opération mettre consultable de la classe Médiathèque.................. 26 4.4.2 Opération emprunter de la classe Médiathèque....................... 29 4.4.3 Opération restituer de la classe Médiathèque........................ 34 4.5 Préparation des tests d intégration................................. 37 4.5.1 Préparation des tests sur les associations.......................... 37 4.5.2 Préparation des tests sur les agrégations.......................... 37 4.5.3 Préparation des tests sur les compositions......................... 37 4.5.4 Préparation des tests sur les interactions.......................... 37 5 Conception détaillée 39 5.1 Description de la classe Médiathèque................................ 39 5.2 Description de la classe FicheEmprunt................................ 43 5.2.1 Diagramme de machine à états et invariant........................ 43 5.2.2 Attributs et algorithmes des opérations.......................... 47 5.3 Description de la classe Document................................. 48 5.3.1 Diagramme de machine à états et invariant........................ 48 5.3.2 Attributs et algorithmes des opérations.......................... 52 5.3.3 Préparation des tests unitaires............................... 53 5.4 Description de la classe Audio.................................... 53 5.5 Description de la classe Livre.................................... 54 5.6 Description de la classe Vidéo.................................... 55 5.7 Description de la classe Client.................................... 56 5.7.1 Diagramme de machine à états et invariant........................ 56 5.7.2 Attributs et algorithmes des opérations.......................... 63 5.8 Description de la classe CatégorieClient............................... 65 5.9 Description de la classe Genre.................................... 66 6 Préparation des tests unitaires 66 6.1 Opérations de la classe Document.................................. 66 Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 2

Table des figures 1 Diagramme de cas d utilisation portant sur les clients...................... 7 2 Diagramme de cas d utilisation portant sur les documents.................... 8 3 Diagramme de cas d utilisation portant sur d autres manipulations des entités du système.. 8 4 Diagramme de cas d utilisation portant sur les clients...................... 9 5 Diagramme de cas d utilisation portant sur les documents.................... 10 6 Diagramme de cas d utilisation portant sur d autres manipulations des entités du système.. 11 7 Diagramme de cas d utilisation portant sur les clients...................... 12 8 Diagramme de cas d utilisation portant sur les documents.................... 13 9 Diagramme de cas d utilisation portant sur d autres manipulations des entités du système.. 13 10 Diagramme de cas d utilisation portant sur les clients...................... 14 11 Diagramme de cas d utilisation portant sur les documents.................... 15 12 Diagramme de cas d utilisation portant sur d autres manipulations des entités du système.. 16 13 Table de décision du cas d utilisation «emprunter un document»............... 20 14 Diagramme de classes........................................ 23 15 Diagramme de classes........................................ 24 16 Diagramme de classes........................................ 25 17 Diagramme de communications de l opération mettre consultable................ 26 18 Diagramme de séquence de l opération mettre consultable..................... 26 19 Diagramme de séquence de l opération mettre consultable..................... 27 20 Diagramme de séquence de l opération mettre consultable..................... 28 21 Diagramme de communications de l opération emprunter..................... 30 22 Diagramme de séquence de l opération emprunter......................... 31 23 Diagramme de séquence de l opération emprunter......................... 32 24 Diagramme de séquence de l opération emprunter......................... 33 25 Diagramme de communications de l opération restituer..................... 34 26 Diagramme de séquence de l opération restituer.......................... 34 27 Diagramme de séquence de l opération restituer.......................... 35 28 Diagramme de séquence de l opération restituer.......................... 36 29 Diagramme de machine à états de la classe FicheEmprunt..................... 44 30 Diagramme de machine à états de la classe FicheEmprunt..................... 45 31 Diagramme de machine à états de la classe FicheEmprunt..................... 46 32 Diagramme de machine à états de la classe Document...................... 49 33 Diagramme de machine à états de la classe Document...................... 50 34 Diagramme de machine à états de la classe Document...................... 51 35 Table de décision de l opération emprunter de la classe Document................ 53 36 Diagramme de machine à états de la classe Client......................... 57 37 Diagramme de machine à états de la classe Client......................... 58 38 Diagramme de machine à états de la classe Client......................... 59 39 Diagramme de machine à états de la classe Client......................... 60 40 Diagramme de machine à états de la classe Client......................... 61 41 Diagramme de machine à états de la classe Client......................... 62 Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 3

1 Introduction Ce document contient le cahier des charges ainsi que la documentation du développement d une application de gestion des fonds d une médiathèque. Dans le module CSC4102, il joue le rôle d exemple complet de dossier de réalisation d une étude de cas. Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 4

2 Cahier des charges 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 Nous réalisons l analyse et la conception d un système de gestion du fond de CD audios, de DVD et de livres d une médiathèque, et du prêt de ce fond à ses clients. Ce système doit être accessible par tous les employés de la médiathèque. Les fonctions de consultation des catalogues et de consultation de ses propres emprunts en cours doivent également être accessibles aux clients de la médiathèque. La médiathèque contient un certain nombre de documents disponibles à la consultation ou à l emprunt ; les personnes désirant emprunter des ouvrages pour une durée et à un tarif donnés doivent s inscrire en tant que client. Les clients s inscrivent auprès d un employé de la médiathèque, et empruntent et rendent un document par l intermédiaire d un employé de la médiathèque. L inscription des clients consiste à remplir une fiche datée sur laquelle sont notées les informations suivantes : nom et prénom du client ainsi que son adresse. Les catégories de client actuelles permettent au client de choisir de payer à chaque emprunt effectué (catégorie «à tarif normal» ou «à tarif réduit») ou de régler une cotisation annuelle (catégorie «abonné»). Outre le tarif, la catégorie de client conditionne les critères d emprunt suivants : le nombre de documents empruntables et la durée de prêt (voir ci-dessous). Dans le cas «tarif réduit», un justificatif est demandé à l inscription, puis à chaque date anniversaire. Les justificatifs à prévoir sont les suivants : carte étudiant/scolaire, carte vermeil et carte «à caractère social». Les documents disponibles sont des CD audios, des DVD ou des livres. Chaque document est repéré par un code unique et une localisation (salle/rayon) dans la médiathèque. Certains documents ne peuvent pas être empruntés, mais uniquement consultés sur place. Les informations communes aux documents sont les suivantes : le titre, l auteur (écrivain, groupe ou metteur en scène) et l année de sortie. Le système devra permettre de disposer de statistiques d utilisation, telles que le nombre d emprunts effectués pour les différentes catégories et genres de documents. Les autres informations des documents sont les suivantes : les CD possèdent un genre musical (par exemple, «classique», «variétés françaises», «variétés internationales», «compilation») et une classification (par exemple, «opéra» pour le genre «classique», «hardcore» pour le genre «variétés internationales» ou «rock» pour le genre «compilation») ; Les DVD possèdent un genre de vidéo («documentaire», «comédie»...), une durée d émission et une mention légale de diffusion (restrictions d usage) ; cette mention doit être disponible lors de l emprunt du DVD pour permettre un éventuel contrôle ; Les livres possèdent un genre («roman», «policier», etc.) et un nombre de pages. Les genres précisés sont libres ; ils sont donnés aux clients à titre indicatif pour aider au choix lors d un emprunt. Chaque sortie de document entraîne la constitution d une fiche d emprunt. Sur cette fiche, sont notés le client emprunteur, la date de début du prêt, le document emprunté et la date limite de restitution. Les durées de prêt dépendent du type de document et de la catégorie du client (voir les règles ci-dessous) ; La médiathèque met à la disposition des clients des ordinateurs pour qu ils consultent le catalogue, leurs emprunts, et puissent mettre à jour leur adresse. Le système de gestion doit prévoir toute opération d ajout et de suppression de clients et de documents. Les informations les concernant ne sont pas construites par le système (par exemple, la localisation des documents dans les locaux), mais supposées fournies lors de l invocation de ces opérations. Le système doit permettre de réviser les catégories et leurs conditions associées. D autre part, les formats de la plupart des informations sont libres (chaînes de caractères) ; le système doit toutefois veiller à la cohérence des informations stockées (impossibilité d avoir deux clients ou deux documents avec le même nom, emprunter deux fois le même document, etc.). 2.1 Règles de prêt L emprunt d un document par un client obéit à certaines règles : un client ne peut pas emprunter plus d un certain nombre de documents fixé par sa catégorie : 2 pour la catégorie «à tarif réduit», 5 pour la catégorie «à tarif normal» et 10 pour la catégorie «abonné». Dès que ce nombre maximal est atteint pour un client donné, tout nouveau prêt doit être impossible ; tout client qui n a pas restitué un document avant sa date limite de restitution ne peut plus faire de Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 5

53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 nouvel emprunt tant qu il n a pas régularisé sa situation, ceci même si le nombre maximal d emprunts n est pas atteint. Pour ce faire, à chaque demande d emprunt, le système vérifie s il est à jour dans ses restitutions ; si ce n est pas le cas, l emprunt n est pas autorisé. l ensemble des fiches d emprunt est parcouru chaque jour afin de repérer s il existe des documents pour lesquels la date limite de restitution est dépassée. Pour chacune de ces fiches trouvées, la date de rappel de la fiche est mise à la date du jour, le client concerné est marqué et la médiathèque envoie une lettre de rappel que nous considérons hors système. Les fiches ayant fait l objet d un rappel font l objet d une relance hebdomadaire. le tarif des emprunts dépend du document et du client. Le tarif du document est fixé par son type : 0, 5 e pour un livre, 1 e pour un CD audio et 1, 5 e pour un DVD. La règle pour les clients «à tarif normal» est de payer le montant fixé pour chaque document emprunté (indiqué auparavant). Le tarif appliqué aux clients «à tarif réduit» est la moitié du «tarif normal». Les «abonnés» réglant une cotisation annuelle empruntent les documents gratuitement ; la durée des emprunts dépend du document et du client. Chaque type de document est empruntable pour une durée dite nominale : 2 semaines pour un DVD, 4 semaines pour un CD audio et 6 semaines pour un livre. Ensuite, la durée de prêt est modifiée selon la catégorie de client : aucun changement la durée nominale pour un client à tarif normal, la moitié de cette durée pour un client à tarif réduit et le double de cette durée pour un abonné ; un client peut changer de statut. Par exemple, un client abonné devient un client à tarif normal si son abonnement n est pas renouvelé à la date anniversaire. De la même façon, un client à tarif réduit devient un client à tarif normal si aucun justificatif n est fourni à la date anniversaire. Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 6

3 Spécification 3.1 Acteurs et cas d utilisation La première étape consiste à bien comprendre le système à étudier. Dans le cadre de l exercice, cela consiste à lire attentivement l énoncé. Cette lecture doit permettre de délimiter les contours du système à réaliser : la méthode générale consiste à retrouver les «acteurs» qui interagissent avec lui. Il est très important de fixer des frontières au problème. Ensuite, nous recherchons les fonctionnalités du système par la définition de ses «cas d utilisation». Dans le cadre de ce module, il s agit de rechercher les principales fonctions attendues du système. Nous nous limitons aux cas d utilisation gérant les clients et les documents. Pour réaliser le diagramme de cas d utilisation à partir de l analyse du texte : rechercher les acteurs, rechercher les fonctionnalités du système accessibles aux acteurs, ce qui vous permettra de dessiner le diagramme de cas d utilisation. Les personnes ayant accès aux fonctionnalités du système sont les employés de la médiathèque et les clients de la médiathèque. Ce sont les deux types d «acteur» de ce système. Les différentes opérations qui leur sont accessibles ont été symbolisées dans deux diagrammes de cas d utilisation. Dans les deux figures, nous lions les deux acteurs par une généralisation spécialisation pour indiquer que les employés de la médiathèque ont accès à toutes les fonctionnalités des clients, mais que l inverse n est pas vrai. Le premier est spécialisé dans les cas d utilisation associés à la partie qui gère les clients dans l application. Le second diagramme de cas d utilisation représente les cas d utilisation associés à la partie qui gère les documents et les emprunts dans l application. Le dernier diagramme de cas d utilisation ajoute divers autres cas d utilisation pour manipuler les entités du système. 3.1.1 Version Xfig Employé ajouter catégorie client modifier catégorie client supprimer catégorie client inscrire client changer client de catégorie afficher caractéristiques client modifier caractéristiques client renouveler inscription client résilier client changer adresse consulter emprunts client Client Figure 1 Diagramme de cas d utilisation portant sur les clients Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 7

ajouter une audio Employé ajouter un livre ajouter une vidéo rendre consultable document rendre empruntable document retirer document emprunter document restituer document trouver les emprunts en retard afficher les statistiques consulter catalogue documents Client Figure 2 Diagramme de cas d utilisation portant sur les documents lister documents lister clients lister fiches d emprunt lister localisations lister genres Employé ajouter localisation supprimer localisation ajouter genre supprimer genre Figure 3 Diagramme de cas d utilisation portant sur d autres manipulations des entités du système Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 8

3.1.2 Version PlantUML Figure 4 Diagramme de cas d utilisation portant sur les clients Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 9

Figure 5 Diagramme de cas d utilisation portant sur les documents Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 10

Figure 6 Diagramme de cas d utilisation portant sur d autres manipulations des entités du système Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 11

3.1.3 Version Umlet ajouter catégorie client modifier catégorie client supprimer catégorie client inscrire client changer client de catégorie Employé afficher caractéristiques client modifier caractéristiques client renouveler inscription client résilier client changer adresse Client consulter emprunts client Figure 7 Diagramme de cas d utilisation portant sur les clients Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 12

ajouter une audio ajouter un livre ajouter une vidéo rendre consultable document rendre empruntable document Employé retirer document emprunter document restituer document trouver les emprunts en retard afficher statistiques Client consulter catalogue documents Figure 8 Diagramme de cas d utilisation portant sur les documents lister documents lister clients lister fiches d'emprunt lister localisations lister genres Employé ajouter localisation supprimer localisation ajouter genre supprimer genre Figure 9 Diagramme de cas d utilisation portant sur d autres manipulations des entités du système Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 13

3.1.4 Version Papyrus Figure 10 Diagramme de cas d utilisation portant sur les clients Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 14

Figure 11 Diagramme de cas d utilisation portant sur les documents Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 15

Figure 12 Diagramme de cas d utilisation portant sur d autres manipulations des entités du système Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 16

3.2 Priorités, préconditions et postconditions des cas d utilisation Les priorités des cas d utilisation pour le sprint 1 sont choisies avec les règles de bon sens suivantes : pour retirer une entité du système, elle doit y être. La priorité de l ajout est donc supérieure ou égale à la priorité du retrait ; pour lister les entités d un type donné, elles doivent y être. La priorité de l ajout est donc supérieure ou égale à la priorité du listage ; il est a priori possible, c.-à-d. sans raison contraire, de démontrer la mise en œuvre d un sous-ensemble des fonctionnalités du système, et plus particulièrement la prise en compte des principales règles de gestion, sans les retraits ou les listages. la possibilité de lister aide au déverminage de l application pendant les activités d exécution des tests de validation. Par conséquent, les cas d utilisation d ajout sont a priori de priorité «haute», ceux de listage de priorité «moyenne», et ceux de retrait de priorité «basse». Haute n 1 basse basse Haute n 2 basse Moyenne basse basse basse basse Voici les précondition et postcondition des cas d utilisation portant sur «clients» : ajouter une catégorie client précondition: catégorie client avec ce nom inexistante postcondition: catégorie client avec ce nom existante modifier les informations d une catégorie client précondition: catégorie client avec ce nom existante postcondition: informations de la catégorie client changées supprimer une catégorie client précondition: catégorie client avec ce nom existante postcondition: catégorie client avec ce nom inexistante inscrire un client précondition: informations sur le client bien formées ( null vide) catégorie client existante client avec ces nom et prénom inexistant postcondition: client existant changer client catégorie précondition: client avec ces nom et prénom existant nouvelle catégorie existante catégorie client nouvelle catégorie client postcondition: client avec nouvelle catégorie existante afficher les caractéristiques du client précondition: client avec ces nom et prénom existant postcondition: vraie (pas de modification de l état du système modifier les caractéristiques d un client précondition: client avec ces nom et prénom existant nouvelles informations bien formées ( null = vide) postcondition: informations du client changées renouveler inscription client précondition: client avec ces nom et prénom existant postcondition: date d inscription = date du jour date de renouvellement = date du jour + 1 an résilier un client précondition: client avec ces nom et prénom existant client sans emprunt postcondition: client inexistant changer adresse précondition: client avec ces nom et prénom existant adresse bien formées ( null = vide) postcondition: adresse du client changée Moyenne Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 17

consulter emprunt client précondition: client avec ces nom et prénom existant postcondition: vraie (pas de modification de l état du système Haute n 3 Haute n 4 Haute n 5 Haute n 6 Haute n 7 basse Haute n 8 Haute n 9 Moyenne Moyenne basse Moyenne Moyenne Voici les précondition et postcondition des cas d utilisation portant sur «clients» : ajouter un audio précondition: document avec ce code inexistant informations bien formées ( null = vide) postcondition: nouvel audio ajouter un livre précondition: document avec ce code inexistant informations bien formées ( null = vide) postcondition: nouveau livre ajouter une vidéo précondition: document avec ce code inexistant informations bien formées ( null = vide) postcondition: nouvelle vidéo rendre consultable un document précondition: document avec ce code existant document empruntable document non emprunté postcondition: document consultable rendre empruntable un document précondition: document avec ce code existant document non empruntable postcondition: document empruntable retirer un document précondition: document avec ce code existant document non emprunté 1 postcondition: document inexistant emprunter un document précondition: client inscrit, sans emprunt en retard, et pas au maximum des emprunts document existant, empruntable et non emprunté postcondition: document emprunté nombre d emprunts en cours du client incrémenté restituer un document précondition: document existant postcondition: document non emprunté nombre d emprunts en cours du client correspondant décrémenté trouver les emprunts en retard d un client précondition: client existant postcondition: vraie (pas de modification de l état du système) afficher les statistiques d un client précondition: client existant postcondition: vraie (pas de modification de l état du système) consulter catalogue documents précondition: vraie (pas de contrainte d exécution) postcondition: vraie (pas de modification de l état du système) Voici les précondition et postcondition des derniers cas d utilisation : lister documents précondition: vraie (pas de contrainte d exécution) postcondition: vraie (pas de modification de l état du système) lister clients 1. Que se passe-t-il si le document est emprunté et perdu Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 18

précondition: vraie (pas de contrainte d exécution) postcondition: vraie (pas de modification de l état du système) Moyenne Moyenne Moyenne Haute n 10 basse Haute n 11 basse lister fiches d emprunts précondition: vraie (pas de contrainte d exécution) postcondition: vraie (pas de modification de l état du système) lister localisations précondition: vraie (pas de contrainte d exécution) postcondition: vraie (pas de modification de l état du système) lister genres précondition: vraie (pas de contrainte d exécution) postcondition: vraie (pas de modification de l état du système) ajouter localisation précondition: informations de localisation bien formées ( null = vide) localisation avec cette salle et ce rayon inexistante postcondition: nouvelle localisation supprimer localisation précondition: localisation avec cette salle et ce rayon existante postcondition: localisation inexistante ajouter genre précondition: informations de genre bien formées ( null vide) genre avec ce nom inexistant postcondition: nouveau genre supprimer genre précondition: genre avec ce nom existant postcondition: genre inexistant 3.3 Préparation des tests de validation du cas d utilisation Emprunter un document Nous préparons maintenant les tests de validation correspondant au cas d utilisation Emprunter document. Données d entrée client : peut être inscrit ou non ; emprunts : déja effectués par le client existe-t-il un emprunt en retard? le nombre d emprunts déja effectués correspond-il au nombre maximum de ce client? quatre états possibles. Remarque : le client inscrit peut être de trois types (Abonné, TarifNormal ou TarifRéduit), ce qui a une influence sur le nombre maximum d emprunts possibles. Il faut en tenir compte pour les jeux de tests. C est pour cela qu il est nécessaire de réaliser trois jeux de test minimum aux colonnes 3 et 7. document : existe, empruntable ou consultable, déjà emprunté ou disponible. Données de sortie En sortie, le système indique si l emprunt accepté ou refusé. Remarque : la définition des jeux de tests de validation pour le cas d utilisation Emprunter document permet de soulever au moins les questions suivantes (à poser au client) : un abonné qui n est pas à jour de sa cotisation peut-il tout de même emprunter un document? doit-il être considéré comme un client au tarif normal tant qu il n a pas renouvelé son abonnement? ou doit-il se réabonner avant de pouvoir emprunter un document? Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 19

D une manière générale, la préparation des jeux de tests de validation permet de lever les ambiguïtés et les vides de la spécification. Plus les tests sont préparés tôt et moins les corrections coûtent cher. Table de décisions Dans cette table de décisions nous noterons : 1 : lorsque la condition exprimée sur la ligne est vraie, 0 : lorsque la valeur de la condition est fausse, x : lorsque la valeur de la condition n influence pas le résultat. 1 2 3 4 5 6 7 Client inscrit 0 1 1 x x x 1 Emprunts sans retard x 0 1 x x x 1 du client < max x x 0 x x x 1 Document existant x x x 0 1 1 1 empruntable x x x x 0 1 1 disponible x x x x x 0 1 Emprunt accepté 0 0 0 0 0 0 1 Nombre minimum de jeux de tests 1 1 3 1 1 1 3 Figure 13 Table de décision du cas d utilisation «emprunter un document» Interprétation de la table de décisions Certaines conditions dépendent du type du client, en particulier celle portant sur le nombre maximum d emprunts, c est pourquoi nous avons trois jeux de tests dans les colonnes 3 et 7. Colonne 1 : si le client est non inscrit, les autres champs relatifs au client ne sont pas significatifs. De plus, quel que soit l état du document, il ne doit pas pouvoir être emprunté. Colonne 2 : la donnée client en retard est prépondérante, cela signifie que, quel que soit l état des autres entrées du jeu de tests, l emprunt est refusé. Colonne 3 : le client a atteint sont nombre maximum d emprunts, quel que soit le type de document, il ne peut emprunter. Le type du client influence le nombre maximum d emprunts c est pourquoi nous devons faire trois jeux de tests. Colonne 4 : le document est inexistant, ses états sont donc non significatifs et l emprunt doit être refusé quelles que soient les valeurs des états du clients. Colonne 5 : Colonn 6 : le document existe mais est consultable seulement. le document existe, il est empruntable mais il est déja emprunté. Colonne 7 : le document existe, il est empruntable et disponible. Les conditions sur le client doivent permettre l emprunt. Le client existe, il n a pas d emprunt en retard et il n est pas au nombre maximum de sa catégorie. Nous avons au minimum trois jeux de tests, un par type de client. Le jeu de tests de la colonne 1 correspond à un abonné. Entrées : Abonné à jour de sa cotisation avec un nombre d emprunts en cours inférieur à 10 et aucun emprunt n ayant dépassé sa date limite ; Document empruntable. Sortie : Emprunt accepté (tester si le nombre d emprunt en cours a été correctement incrémenté de 1 après l opération ne relève pas des tests de validation mais des tests unitaires et d intégration). Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 20

4 Conception préliminaire 4.1 Listes des classes candidates et de leurs attributs Voici les listes des classes candidates et de leurs attributs. Médiathèque Catégorie de client Client Document Audio (appelée «CD audio» dans le cahier des charges) Vidéo (appelée «DVD» dans le cahier des charges) Livre Localisation Fiche d emprunt Genre Il est facile de voir la généralisation spécialisation Document qui contient les attributs communs à ses classes enfant : Audio, Vidéo et Livre. Concernant les clients, comme nous désirons qu ils puissent changer de catégorie, nous préférons introduire une classe Catégorie de client et ne pas mettre de généralisation spécialisation pour la classe Client. En effet, si nous avions organisé les clients dans une hiérarchie de classes : Client en classe parente, et Abonné, Tarif réduit et Tarif Normal en classes enfants, alors pour changer un client de catégorie il aurait fallu le supprimer puis le recréer comme une instance d un autre type. Cette dernière méthode n est pas naturelle. Les attributs suivants sont repris de l énoncé : Médiathèque nom : string Client nom : string prénom : string adresse : string dateinscription : string daterenouvellement : string CatégorieClient nbempruntsmax : integer cotisation : float coeftarif : float coefdurée : float Document code : string titre : string auteur : string année : string empruntable : boolean Genre nom : string nbemprunts : integer Audio classification : string Vidéo durée : integer mentionlégale : string Livre nombrepage : integer FicheEmprunt dateemprunt : date datelimite : date daterappel : date Localisation salle : string rayon : string 4.2 Premières opérations des classes Les opérations suivantes sont reprises de l énoncé : Médiathèque ajoutercatégorieclient modifiercatégorieclient supprimercatégorieclient inscrireclient changerclientcatégorie affichercaractéristiquesclient modifiercaractéristiquesclient renouvelerinscriptionclient résilierclient changeradresseclient consulterempruntsclient ajouteraudio ajouterlivre ajoutervidéo rendreconsultabledocument rendreempruntabledocument retirerdocument emprunterdocument restituerdocument trouverempruntsenretard afficherstatistiques Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 21

consultercataloguedocuments FicheEmprunt calculer le tarif vérifier les emprunts Client bloquer/débloquer pouvoir emprunter changer une adresse Document localiser être empruntable Vidéo afficher la mention légale Comme indiqué dans l introduction, la classe Médiathèque regroupe la plupart des opérations. D un point de vue analyse, cette classe joue le rôle d interface utilisateur pour le système (patron de conception «Façade»). 4.3 Diagramme de classes Le diagramme de classes obtenu lors d une première analyse à partir de l énoncé du problème est donné dans les figures qui suivent. Dans ces diagrammes : les opérations ne sont pas mentionnées ; l absence de multiplicité sur les liens signifie une multiplicité «1» ; les attributs dont le nom est souligné sont des attributs de classe (la valeur est commune à toutes les instances de cette classe), les autres attributs sont des attributs d instance (chaque instance possède une valeur qui lui est propre). Le diagramme de classes comprend également une interface. Empruntable donne le comportement (ensemble d opérations) des documents vis-à-vis de l emprunt (le tarif et la durée de prêt en fonction du type de document). Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 22

4.3.1 Version Xfig salle:string rayon:string Localisation * nom:string Médiathèque * Genre Document << interface >> Empruntable * * Audio classification:string nbempruntstotal:integer=0 DURÉE:integer=4*7 TARIF:double=1.0 Livre nombrepage:integer nbempruntstotal:integer=0 DURÉE:integer=6*7 TARIF:double=0.5 Vidéo duréefilm:integer mentionlégale:string nbempruntstotal:integer=0 DURÉE:integer=2*7 TARIF:double=1.5 * CategorieClient posséder *est rangé nom:string nbemprunts:integer=0 code:string titre:string auteur:string année:string empruntable:booléen=f /emprunté:booléen=f nbemprunts:integer=0 duréeemprunt():integer tarifemprunt():double concerner 0..1 * nom:string prenom:string adresse:string Client * concerner dateinscription:date daterenouvellement:date nbempruntseffectues:integer=0 /nbempruntsdepasses:integer=0 /nbempruntsencours:integer=0 coderéduction:integer * nomcat: string nbempruntsmax:integer cotisation:double coeftarif:double coefdurée:double codereductionactif:boolean appartenir * FicheEmprunt dateemprunt:date datelimite:date daterappel:date /dépassé:booléen /tarif:double enretard:booleen Figure 14 Diagramme de classes Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 23

4.3.2 Version PlantUML Figure 15 Diagramme de classes Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 24

4.3.3 Version Umlet Médiathèque nom: String * Genre nom: String nbemprunts: Integer = 0 * * Localisation salle: String rayon: String «interface» Empruntable dureéemprunt(): Integer tarifemprunt(): Double FicheEmprunt dateemprunt: Date datelimite: Date daterappel: Date /dépassé: Booléen /tarif: Double posséder estrangé * * «abstract» Document code: String titre: String auteur: String année: String empruntable: Booléen = F /emprunté: Booléen = F nbemprunts: Integer = 0 * c o n c e rner 0..1 * c o n c e rner Audio classification: String nbempruntstotal: Integer = 0 DURÉE: Integer = 4 * 7 TARIF: Double = 1.0 Vidéo duréefilm: Integer mentionfilm: String nbempruntstotal: Integer = 0 DURÉE: Integer = 2 * 7 TARIF: Double = 1.5 Livre nombrepage: Integer nbempruntstotal: Integer = 0 DURÉE: Integer = 6 * 7 TARIF: Double = 0.5 * CatégorieClient nomcat: String nbempruntsmax: Integer cotisation: Double coeftarif: Double coefdurée: Double coderéductionactif: Booléen * Client nom: String prénom: String adresse: String dateinscription: Date daterenouvellement: Date nbempruntseffectués: Integer = 0 /nbempruntsdépassés: Integer = 0 /nbempruntsencours: Integer = 0 coderéduction: Integer enretard: Booléen * appartenir Figure 16 Diagramme de classes Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 25

4.4 Diagrammes de communications et de séquence 4.4.1 Opération mettre consultable de la classe Médiathèque Version Xfig Les figures suivantes présentent les diagrammes de communications et de séquence de l opération mettre consultable. Ces premiers diagrammes de communications et de séquence montrent la syntaxe de ces diagrammes dans un cas d utilisation très simple. L interaction débute par un message émis par l acteur à destination de l instance de la classe Médiathèque, qui coordonne les appels aux objets du système. metconsultable(code) 1:d=chercherDocument(code):Document m:médiathèque 2:mettreConsultable()[d!=null] d:document Figure 17 Diagramme de communications de l opération mettre consultable m:médiathèque d:document metconsultable(code) d=chercherdocument(code):document opt [d!=null] mettreconsultable() Figure 18 Diagramme de séquence de l opération mettre consultable Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 26

Version PlantUML Figure 19 Diagramme de séquence de l opération mettre consultable Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 27

Version Umlet :Employé m:médiathèque d:document metconsultable(code) d=chercherdocument(code): Document opt [d!= null] mettreconsultable() Figure 20 Diagramme de séquence de l opération mettre consultable Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 28

4.4.2 Opération emprunter de la classe Médiathèque Lors d un emprunt (création d une instance de FicheEmprunt), le client fournit son identification et le document qu il souhaite emprunter (classe Médiathèque). Ensuite, il faut vérifier si l emprunt est possible : document empruntable et non emprunté, c est-à-dire si le client n a pas d emprunt dépassé et si son nombre maximal de documents empruntés n est pas atteint. Le tarif est ensuite calculé selon le type de client et le type de document. L opération emprunter peut être découpée en deux. Dans un premier temps, il faut vérifier que l emprunt peut être effectué, puis, si les conditions de création sont toutes vérifiées, il faut créer la fiche d emprunt. Les actions sont les suivantes : 1. validation de l emprunt détermine (i) si le client peut emprunter, (ii) si le document est empruntable et (iii) non emprunté, 2. création d une fiche d emprunt détermine (i) la date de retour du prêt qui est indiquée au client, (ii) met à jour le client et le document, et (iii) détermine et affiche le coût de l emprunt. Toutes ces étapes sont illustrées par les diagrammes de communications et de séquence qui suivent. Dans ces diagrammes, les options suivantes ont été prises : les deux diagrammes traitent de l emprunt d un seul document. Dans le cas d un emprunt de plusieurs documents à la fois, soit la procédure complète doit être répétée, soit le message initial contient la liste des documents à emprunter et les messages sont itératifs ; l interaction commence par une phase de recherche du document et du client dans la médiathèque. Le reste du diagramme suppose qu ils sont présents ; le message peutemprunter() demande au client s il peut emprunter : client non marqué (pas dans l état EnRetard, voir le DME des figures qui suivent) et nombre maximal d emprunt non atteint. Ce message ne vérifie pas les emprunts en cours : nous supposons que la procédure de vérification journalière est lancée par exemple le matin, ce qui garantit que les emprunts sont possibles toute la journée. Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 29

Version Xfig g:genre emprunter(nom, prénom, code) 6.3.1:bg=emprunter():booléen 1:c=chercherClient(nom, prénom):client 4:cd1=estEmpruntable():bool [c!=null et cc et d!=null] 5:cd2=estEmprunte():bool [c!=null et cc et d!=null et cd1] 3:d=chercherDocument(code):Document [c!=null et cc] 2:cc=peutEmprunter()[c!=null] d :Document m:médiathèque c :Client :CatégorieClient 6:constructeurFE(c,d) [c!=null et d!=null et cc et cd1 et!cd2] 2.1:nbem=getNbEmpruntsMax():int 6.2.1:cD=getCoefDurée():double 6.6.1:cT=getCoefTarif():double 6.1:dn=dureeEmprunt():int 6.3:bd=emprunter():booléen 6.5:tn=tarifEmprunt():double <<new>> f:ficheemprunt 6.2:dateLimite=dateRetour(dateEmprunt,dn):date 6.4:bc=emprunter(f):booléen 6.6:tarif=sommeDue(tn):double Figure 21 Diagramme de communications de l opération emprunter Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 30

m:mediathèque c:client d:document g:genre emprunter(nom,prénom,code) c=chercherclient(nom,prénom):client d=chercherdocument(code):document :CatégorieClient opt [c!=null et d!=null] cc=peutemprunter():bool nbem=getnbempruntsmax():int cd1=estempruntable():bool cd2=estemprunte():bool opt <<create(c,d)>> [cc et cd1 et non cd2] f:ficheemprunt dn=dureeemprunt():int datelimite= dateretour( dateemprunt,dn):date cd=getcoefduree():double bd=emprunter(f) :booléen bc=emprunter():booléen tn= tarifemprunt():double bg=emprunter():booléen tarif= sommedue(tn):double ct=getcoeftarif():double Figure 22 Diagramme de séquence de l opération emprunter Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 31

Version PlantUML Figure 23 Diagramme de séquence de l opération emprunter Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 32

Version Umlet :Employé m:médiathèque c:client :CatégorieClient d:document :Genre emprunter(nom,prénom,code) d=chercherclient(nom,prénom): Client opt [c!= null] cc=peutemprunter(): Booléen nbem=getnbempruntsmax(): Integer opt [cc] d=chercherdocument(code): Document opt [d!= null] cd1 = estempruntable(): Booléen cd2 = estemprunté(): Booléen opt [cd1 et non cd2] «create(c,d)» f:ficheemprunt dn=duréeemprunt(): Integer datelimite=dateretour(dateemprunt,dn): Date cd=getcoefdurée(): Double bd=emprunter(f): Booléen emprunter(): Booléen bc=emprunter(): Booléen tarif=sommedue(tn): Double ct=getcoeftarif(): Double tn=tarifemprunt(): Double Figure 24 Diagramme de séquence de l opération emprunter Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 33

4.4.3 Opération restituer de la classe Médiathèque Les figures 12 et 13 représentent le diagramme de communications et le diagramme de séquence de l opération restituer. La première phase de l opération restituer consiste à retrouver par le message correspondre la fiche d emprunt associée au client et au document (la phase de recherche du client et du document n a pas été mentionnée pour des soucis de clarté : elle est similaire à celle de la recherche de l emprunt). Ensuite, le client est mis à jour par le message restituer avec le booléen dépassé indiquant s il est vrai qu il s agit d une restitution en retard. Ainsi, le client peut effectuer des emprunts si son nombre de documents empruntés non restitués est nul. De la même façon, le document est mis à jour par le message restituer qui modifie son attribut empruntable. Version Xfig Parcours de la collection "FicheEmprunts", la fiche d emprunt "e" est la fiche trouvée restituer(c,d) d :Document 1:*[trouvé]trouvé=correspond(c,d):boolean :Médiathèque c :Client :FicheEmprunt 2:restituer()[trouvé] 3:destructeur()[trouvé] 2.2:restituer() <<delete>> e:ficheemprunt 2.1:restituer(depasse) Figure 25 Diagramme de communications de l opération restituer Parcours de la collection "FicheEmprunts", la fiche d emprunt "e" est la fiche trouvée <<delete>> :Mediathèque :FicheEmprunt e:ficheemprunt c:client d:document restituer(c,d) loop(1,max,trouvé) trouvé=correspond(c,d):boolean opt restituer() [trouvé] restituer(depasse) destructeur() restituer() Figure 26 Diagramme de séquence de l opération restituer Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 34

Version PlantUML Figure 27 Diagramme de séquence de l opération restituer Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 35

Version Umlet :Employé m:médiathèque :FicheEmprunt e:ficheemprunt c:client d:document restituer(c,d) loop(1,max,trouvé) trouvé=correspondre(c,d): Booléen opt restituer() [trouvé] restituer(dépassé) restituer() destructeur() Figure 28 Diagramme de séquence de l opération restituer Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 36

4.5 Préparation des tests d intégration 4.5.1 Préparation des tests sur les associations Nous prenons par exemple l association les classes Genre et Document. Les tests suivants sont envisageables : multiplicité de Genre vers Document : tester que plusieurs documents peuvent avoir le même genre, tester qu un genre peut exister sans qu aucun document ne fasse référence à ce genre, tester qu un document ne peut avoir qu un seul genre, création d un Document : tester qu un document est créé avec un et un seul genre, tester qu un document ne peut pas être créé si le genre auquel il se référe n existe pas, destruction d un Document : tester que la destruction d un document ne supprime pas le genre associé, tester que la destruction du seul document ayant un genre g ne détruit pas le genre g, destruction d un Genre : tester que la destruction d un genre ne peut être réalisée que lorsqu aucun document ne référence ce genre. 4.5.2 Préparation des tests sur les agrégations Nous prenons l exemple de l agrégation entre les classes Médiathèque et Document en supposant que la composition entre les deux classes dans le diagramme de classes est remplacée par une agrégation : multiplicité : tester qu une médiathèque existe même lorsqu elle ne contient pas de document, tester qu une médiathèque peut posséder plusieurs documents, création : tester qu un document peut être créé sans être rattaché à une médiathèque (c est une agrégation et non une composition), tester qu une médiathèque peut être créée sans créer de document, destruction : tester que la destruction de la médiathèque ne supprime pas les documents, tester que la destruction de tous les documents n entraîne pas la destruction de la médiathèque. 4.5.3 Préparation des tests sur les compositions Les compositions signifient qu il existe une relation forte entre les deux parties. Contrairement aux agrégations, pour les compositions, la création d un objet composant ne peut être réalisée que de manière simultanée avec la création de l objet composé (ou du moins, s il est créé après l objet composé ajout dans une collection la création se fait dans la classe composée). Réciproquement, la destruction du composé entraîne la destruction de ses composants. Dans notre cadre de programmation en JAVA, ces tests peuvent être négligés du fait de l utilisation d un ramasse miettes. 4.5.4 Préparation des tests sur les interactions Ces tests se préparent en étudiant les diagrammes d interaction, c est-à-dire les diagrammes de communication ou les diagrammes de séquence. Nous prenons l exemple des diagrammes qui présentent la coordination par la classe FicheEmprunt des interactions «emprunter» puis «restituer». En considérant les classes FicheEmprunt, Document et Client, nous préparons les tests suivants : l emprunt n est pas autorisé car le document n est pas empruntable : création d un document (uniquement consultable), création d un client, essai de création d une fiche emprunt avec vérification que la tentative a avortée et que les états du client (statistiques) et du document n ont pas été modifiés, l emprunt est rendu à temps : création d un document, mise du document à empruntable, Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 37

création d un client, création d une fiche d emprunt, restitution du document et vérification que la restitution est correcte du côté du document (le document peut être emprunté à nouveau) et du côté du client (le nombre d emprunt en cours a diminué), l emprunt est rendu en retard : la séquence est similaire à celle du test d intégration précédent avec un appel à Datutil.addAuJour(...) pour avancer artificiellement l horloge, un appel à verifier() de la classe FicheEmprunt pour tester si l emprunt est en retard, et si verifier() a retourné la valeur vrai (c est un emprunt en retard), un appel à premierrappel() pour marquer le client en retard. l emprunt n est pas autorisé car le document est déjà emprunté : la séquence est similaire à celle du test d intégration précédent avec l essai d emprunt du même document par un second client (précédemment créé) pour tester que la tentative a avortée et que les états du client (statistiques) et du document n ont pas été modifiés, Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 38

5 Conception détaillée La classe Médiathèque est la façade du système. Cette classe n étant pas très complexe ; nous n aurons dans notre étude de cas qu une instance de la classe ; le comportement du système dépend peu de l état de l objet de cette classe ; par conséquent, nous choisissons de ne pas construire de diagramme de machine à états pour la classe Médiathèque. Nous n aurons pas non plus d invariant et pas d opération invariant(). 5.1 Description de la classe Médiathèque Mediathèque < attributs > nom : String < attributs «association» > lesdocuments : collection de Document lesclients : collection de Client lesemprunts : collection de FicheEmprunt lescatégories : collection de Catégorie leslocalisations : collection de Localisation lesgenres : collection de Genre < constructeur > + constructeur(string nom) + destructeur() < operations «cas d utilisation» > + ajouteraudio(string code, String salle, String rayon, String titre, String auteur, String annee, String nomgenre, String classification) : boolean + ajouterlivre(string code, String salle, String rayon, String titre, String auteur, String annee, String nomgenre, int nombrepage) : boolean + ajoutervidéo(string code, String salle, String rayon, String titre, String auteur, String annee, String nomgenre, int duréefilm, String mentionlegale) : boolean + metempruntable(string code) : boolean + metconsultable(string code) : boolean + retirerdocument(string code) : boolean + emprunter(string nom, String prenom, String code) + restituer(string nom, String prenom, String code) + inscrire(client client) + ajoutercatégorieclient(string name, integer max, double cot, double coef- Durée, double coeftarif, boolean coderéducused) + résilier(string nom, String prenom) + changercatégorie(string nom, String prénom, String nomcat) + changercatégorie(string nom, String prénom, String nomcat, integer code- Réduc) + changercoderéduc(integer) + vérifier() < opérations > + getnom() : String < opérations pour les nouveaux cas d utilisation > + listerclients() + listercatégories() + listerdocuments() + listerficheemprunts() + listergenres() + listerlocalisations() + ajouterlocalisation(string salle, String rayon) : boolean + supprimerlocalisation(string salle, String rayon) : boolean existedocument(localisation) : boolean Télécom SudParis Denis Conan, Chantal Taconet, Christian Bac Janvier 2016 CSC4102 39