Exo Complet
Exo Complet
Exo Complet
9 janvier 2007
1 Sujet
1.1 But
Analyse et conception d’un système de gestion du fonds de CD audios, de K7 vidéo et de livres
d’une médiathèque, et du prêt de ce fond à ses clients.
1
– Les K7 ont 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 devra être disponible
lors de l’emprunt de la K7 pour permettre un éventuel contrôle.
– Les livres ont un genre (« roman », « policier »...) 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).
Le système de gestion doit prévoir toute opération d’ajout et de suppression de clients et de do-
cuments. 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. D’autre part, les formats de la plupart des informations sont libres (chaînes de
caractères) ; le système devra toutefois veiller à la cohérence des informations stockées (im-
possibilité d’avoir deux clients ou deux documents avec le même nom, emprunter deux fois le
même document, etc.).
2
cette durée pour un abonné).
2 Questions du BE1-2 :
À partir de l’analyse du texte :
– rechercher les acteurs ;
– rechercher les fonctionnalités du système accessibles aux acteurs ;
– faire le diagramme de cas d’utilisation ;
– rechercher les classes de ce problème ;
– construire un diagramme de classes de ce problème ;
– décrire les premières opérations de chaque classe ; noter les opérations internes et celles
nécessitant la collaboration avec d’autres classes ;
– décrire les premiers attributs des classes : type, valeur par défaut...
– vérifier que le système «fonctionne» : en partant des cas d’utilisation, vérifier que la naviga-
tion entre les classes (associations et opérations) permet de réaliser ce qui est demandé.
3
3 Méthodologie
Conseil 1 Il est préférable de sur-spécifier le modèle d’analyse avec beaucoup de classes mé-
tier ; il sera plus facile de les regrouper plus tard que de trouver celles que l’on aura ignorées.
Il faut rechercher les noms qui correspondront le plus souvent aux classes métier, et les verbes
qui les relient qui correspondront aux associations ; attention toutefois à certains verbes (comme
le verbe être) qui peuvent correspondre à des attributs ou à des opérations. La méthode ha-
bituelle consiste à établir des listes exhaustives puis à les trier/sélectionner (suppression des
classes métier trop vagues ou non pertinentes, éliminer les noms ou verbes inutiles (bruits in-
troduits lors de la rédaction du texte qui ne sont pas significatifs du problème), faire la chasse
aux synonymes...) afin de ne garder que celles utiles à la résolution.
Conseil 2 Une autre manière de trouver ces classes métier sont les « cas d’utilisation » : les
classes métier seront les noms et les verbes utilisés dans les descriptions des actions effectuées
par les acteurs.
Conseil 3 Si un nom est associé à une valeur (nombre, texte...) dans le monde réel, alors il
s’agit certainement d’un attribut. Dans le doute, en faire une classe métier.
Remarquez que, partant d’un énoncé, cette méthode d’analyse n’est pas une fin en soi : les
limites sont celles apportées par un texte ; cela nécessite un dialogue avec le « client ». Enfin,
il est important de bien choisir le nom des classes métier et des associations : on retrouve en
général des noms pour les classes métier et des verbes pour les associations.
4
voyage). En partant des classes et des associations trouvées précédemment, il faut construire un
schéma (représentation graphique) dans lequel les classes seront représentées par des rectangles
et les associations par des traits pleins. Il faut ajouter à ce schéma des informations concernant
les classes et les associations.
Nous vous conseillons de :
– construire un premier diagramme de classes à partir des noms obtenus dans la phase précé-
dente ;
– par étapes successives, enrichir ce diagramme par les associations à l’aide des verbes obte-
nus ;
– affiner le diagramme en éliminant les associations redondantes 2 en simplifiant le schéma dès
lors qu’il respecte les spécifications de l’énoncé ;
– dernier conseil : ne chercher les généralisations et spécialisations qu’à la fin, lorsque les
classes sont déjà bien établies.
La notation UML doit être respectée impérativement. Elle conditionne la compréhension du
schéma par l’équipe de développement (ou du correcteur accessoirement).
Il n’y a pas, dans cette phase, d’information à ajouter concernant les classes (classe abstraite,
visibilité, etc.).
Concernant les associations, il faut rechercher les relations simples, les relations d’agégation
et de composition et les relations de spécialisation/généralisation.
Ensuite, il faut trouver la multiplicité (cardinalité) de chaque relation qu’il faut porter sur le
schéma. La notation est la suivante : min..max où :
– max peut être omis, auquel cas la multiplicité est exactement min,
– max peut prendre la valeur * qui signifie une limite non bornée (par exemple 2..* signifie 2
ou plus)
– la notation 0..* peut être abrégée en *
– la multiplicité 1 est généralement omise pour des raisons de lisibilité.
Conseil 4 Un critère de validité d’un attribut est qu’il doit être simple (type/valeur) : par
exemple, date, nombre, texte... Dans le cas contraire, en faire une classe métier. D’autre part,
les classes métiers doivent être reliées avec des associations et non avec des attributs.
Vous devez réfléchir sur le choix de la classe où placer les attributs. En cas de doute, il faut
éventuellement analyser de nouveau la relation. Quelquefois, la solution consiste à ajouter une
classe d’association (ce cas peut se présenter dans cet exercice avec la classe Emprunt). Il ne
2
Le cas des associations ou attributs dérivés n’est pas pris en compte à ce niveau de l’analyse ; ils seront
précédés par le caractère « / » dans le diagramme de classes.
5
faut pas évoquer les problèmes de visibilité publique ou privée pour les attributs : cela sera vu
lors de la conception/implémentation.
Pensez à qualifier les atributs de classes (par opposition aux attributs d’instance). Il y en a un
certain nombre qui ne sont pas forcément évident à détecter avant d’aborder la phase dynamique
de l’analyse.
Concernant les opérations, le niveau de détail devra rester faible afin de ne pas empiéter sur la
phase de conception.
6
4 Glossaire objet
Acteur Abstraction d’une entité extérieure au système qui interagit avec lui. Il participe à un
« use case » pour accomplir une tâche dans un but général.
Association (figure 1)
Relation durable entre deux (ou plus) classes qui décrit les connexions entre leurs ins-
tances. Elle est caractérisée par une multiplicité (cardinalité).
fournisseur factures
Fournisseur Facture
1 établir 0..*
nom: String monTTC: Double
monMoy: Double tauxTVA: Double
F IG . 1 – Association UML
Client
nom: String
prénom: String
F IG . 2 – Attribut d’objet
UML : L’identificateur doit commencer par une lettre minuscule. Les attributs sont pla-
cés avec les opérations dans un rectangle accolé au rectangle de la classe à laquelle ils
appartiennent.
7
Attribut de classe (figure 3)
Attribut commun à l’ensemble des instances de la classe.
Client
nom : String
monMoy: Double
F IG . 3 – Attribut de classe
UML : L’identificateur doit commencer par une lettre minuscule et être souligné.
Classe (figure 4)
Ensemble d’objets ayant les mêmes attributs, les mêmes opérations, les mêmes méthodes,
les mêmes relations et la même sémantique. Une classe représente un concept à l’intérieur
du système à modéliser. Une classe possède un nom, une liste d’opérations et une liste
d’attributs. En définissant les propriétés de tous les objets qui lui sont associés, la classe
est la réalisation d’un type.
Client
F IG . 4 – Classe
UML : La classe est représentée par un rectangle avec 1, 2 ou 3 compartiments (un pour
le nom de la classe, un deuxième pour les attributs et le dernier pour les opérations) ; le
nom de la classe doit commencer par une lettre majuscule.
Composition ou agrégation (figure 5)
L’agrégation est une relation entre classes de type agrégat/agrégé. Une instance (l’agré-
gat) est composée de un ou plusieurs objets (agrégé). La composition est une relation plus
restrictive que l’agrégation : elle lie les durées de vie des objets ; le composé a la respon-
sabilité totale de ses composants et un composant ne peut pas exister sans son composé.
L’agrégation est quelquefois appelée « composition par référence » et la composition
(agrégation forte) est appelée « composition par valeur. »
1 contenir 1
Véhicule Moteur
F IG . 5 – Agrégation
UML : La relation est représentée par un trait plein avec un losange placé du côté de
l’agrégé (avec un losange plein en cas de composition).
8
État (figure 6)
Chaque objet ayant un comportement peut se trouver à un moment donné dans une situa-
tion donnée satisfaisant certaines conditions ou réalisant certaines actions en réaction à
des évènements ; cette situation est appelée état. Il possède un nom et se caractérise par
une certaine stabilité et/ou une certaine durée.
En panne
Evnt[garde]/ Action 1 entrée / Action 2 Evnt[garde]/Action 5
faire / Action 3
sortie / Action 4
état initial
état terminal
UML : L’état d’un objet d’une classe se représente par un rectangle aux bords arrondis
ayant un ou deux compartiments : le premier contient le nom de l’état et le deuxième
contient les transitions internes.
Généralisation/Spécialisation (figure 7)
Relation entre classes de type est-un ou est-une-sorte-de. La généralisation permet de
factoriser des attributs ou des opérations, et donc de simplifier le diagramme de classes.
La spécialisation entraîne une partition d’une classe en sous-classes disjointes. La classe
la plus générale (la moins spécialisée) est appelée « superclasse » ou « classe mère » ; la
classe la moins générale (la plus spécialisée) est appelée « sous-classe », « classe fille »
ou « classe dérivée ».
Figure Polygone
F IG . 7 – Généralisation
UML : La relation est représentée par une flèche dirigée de la classe particulière vers la
classe générale ; cette flèche doit avoir une tête dont le triangle est non plein.
Instance (figure 8)
Objet en tant qu’élément d’une classe. L’instanciation est le mécanisme de création d’ob-
jets. Une instance possède son propre nom et sa propre valeur.
UML : Une instance est représentée par un rectangle et son identificateur doit commencer
par une minuscule. Le nom porté dans le rectangle doit être de la forme nom_objet : Nom_classe
et doit être souligné. Une flèche en trait pointillé relie la classe à ses instances.
Interface (figure 9)
Classe qui regroupe un comportement particulier : ensemble d’opérations visibles exté-
rieurement. Elle ne possède pas d’attribut. La classe qui réalise une interface doit fournir
une implantation de chacune des opérations de l’interface.
9
Client
dupont : Client
F IG . 8 – Instance d’objet
« Interface »
Affichable
Figure
F IG . 9 – Interface
UML : Une interface a la même représentation graphique que la classe exceptée que le
nom de la classe doit être en italique ou précédée de la mention « interface » (sur la ligne
du dessus). La réalisation d’une interface se note par un trait pointillé terminé par un
triangle blanc.
Méthode Implantation d’une opération en spécifiant son algorithme.
Objet Un objet est une instance d’une classe. Il possède une identité qui permet de le distinguer
des autres objets. Il est défini par des informations stockées dans des attributs et des
comportements réalisés par des opérations.
Opération (figure 10)
Une opération spécifie une transformation de l’état de l’objet cible ou une requête qui
retourne une valeur à l’appelant de l’opération. Elle possède un nom, une éventuelle liste
de paramètres et un éventuel type de retour. Elle possède également l’indication de sa
visibilité (voir Attribut).
UML : L’identificateur doit commencer par une lettre minuscule et être suivi de paren-
10
Facture
ajouterProduit(): Boolean
calculMontant (p: Produit): Double
modiferTaux (t: Double): Double
F IG . 10 – Opération
thèses ouvrante et fermante ; les paramètres seront placés entre les parenthèses et on in-
diquera le type de retour éventuel. Les opérations sont placées dans un rectangle accolé
sous le rectangle des attributs de la classe à laquelle ils appartiennent.
Type De même que la classe, un type est un ensemble d’objets similaires avec des attributs et
des opérations identiques ; spécification d’un domaine pour lequel un comportement est
applicable, qui peut être prédéfini ou applicatif.
Use case Spécification de séquence d’actions qu’un système peut réaliser en interaction avec
des « acteurs » extérieurs.
11