Accueil
   
   
   
   
 

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


Corrigé du BE1–2

Équipe enseignante

Images/logotelecomsudparis

CSC 4002

Octobre 2015

Revision : 1499

    suivant 


1 Corrigé-type

Il s’agit de gérer dans un logiciel les prêts de documents dans une médiathèque.

1.1 Analyse de texte

Pour trouver les acteurs, les fonctionnalités et les classes, on utilise la technique de l’analyse du texte qui décrit le problème posé.

1.2 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 sur la figure 1 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 sur la figure 2 représente les cas d’utilisation associés à la partie qui gère les documents et les emprunts dans l’application.


Figures/usecase_client

Figure 1: Diagramme de cas d’utilisation portant sur les clients



Figures/usecase_document

Figure 2: Diagramme de cas d’utilisation portant sur les documents


Ces diagrammes sont utiles notamment pour trouver la classe Médiathèque (point d’entrée du système) et ses opérations.

1.3 Liste 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

1.4 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
    • 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 »).

1.5 Diagramme de classes

Le diagramme de classes obtenu lors d’une première analyse à partir de l’énoncé du problème est donné dans la figure 3. Dans ce diagramme :

  • 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).


Figures/diaclas-simplifie

Figure 3: Diagramme de classes directement obtenu de l’analyse du cahier des charges


Le diagramme de classes de la figure 4 est celui que nous utilisons dans la suite des bureaux d’étude. C’est celui que nous obtenons en raffinant le premier diagramme de classes avec l’utilisation des concepts avancés des diagrammes de classes :

  • navigabilité des associations,
  • composition,
  • attribut dérivé,
  • attribut de classe pour les statistiques,
  • classe abstraite,
  • interface.

Comme indiqué lors du cours, vous n’êtes pas censé obtenir un diagramme avec ce niveau de précision.

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).


Figures/diaclas

Figure 4: Diagramme de classes complets