Analyse, Conception et Programmation par objets

Transcription

Analyse, Conception et Programmation par objets
Analyse, Conception
et Programmation par objets
Exercices “UML” : diagrammes de séquence
Centre de Calcul
Fabien Moutarde et Norbert Kajler
fmoutarde,[email protected]
60 Bd. Saint Michel 75272 Paris Cedex 06
(Dernière mise à jour le 16 septembre 2009)
1 Caisse de supermarché
On considère un logiciel de caisse de supermarché dont le fonctionnement doit être le suivant :
– il existe un unique catalogue référençant tous les articles existant dans le supermarché, avec pour
chacun leur code-barre, leur nom, et leur prix unitaire ;
– à chaque nouveau client, on crée une nouvelle facture ;
– on ajoute une ligne à une facture en lisant le code-barre d’un article, et en précisant la quantité dans
le cas où un même article se présente en plusieurs exemplaires sur le tapis de la caisse ;
– le total d’une facture est calculé au fur et à mesure de l’enregistrement des articles.
Les premières phases de l’analyse ont conduit au modèle structurel suivant :
Facture
-total : real
+ajouterItem(In codeBarre:integer ,In nombreExemplaires:integer)
+imprimerTicket()
1
Catalogue
+rechercherArticle(In codeBarre:integer):Article
1
+ligne
*
* +référence
Item
+produit
-quantité : integer
<<create>>
+Item(In article:Article ,In quantité:integer)
*
1
Article
-nom : string
-prixUnitaire : real
-code : integer
F IG . 1 – Modèle structurel
Faire le diagramme de séquence explicitant le fonctionnement normal de l’opération
ajouterItem(codeBarre, nombreExemplaires) sur une facture en cours
d’établissement, et en déduire des ajouts nécessaires au modèle structurel.
1
2
3
Correction
1 Caisse de supermarché
leCatalogue:Catalogue
:Facture
articleReconnu:Article
rechercherArticle(codeBarre)
articleReconnu
Item(articleReconnu, nombreExemplaires)
nouvelItem:Item
addProduit(articleReconnu)
quantité = nbExemplaires
addLigne(nouvelItem)
getPrix()
getPrix()
prixArticle
prixItem
total += prixItem
prixItem = quantité*prixArticle
F IG .
2 –
Diagramme de
séquence
du fonctionnement normal
ajouterItem(codeBarre, nombreExemplaires) de la classe Facture
Ce diagramme permet de mettre en évidence la nécessité d’ajouter au modèle structurel :
– une association de la classe Facture vers la classe Catalogue ;
– des opérations publiques getPrix() dans les classes Article et Item.
4
de
l’opération
Facture
-total : real
+ajouterItem(In codeBarre:integer ,In nombreExemplaires:integer)
+imprimerTicket()
*
1
+catalogue
1
Catalogue
+rechercherArticle(In codeBarre:integer):Article
1
+ligne
*
*
Item
+référence
Article
+produit
-quantité : integer
<<create>>
+Item(In article:Article ,In quantité:integer)
+getPrix():real
*
1
-prixUnitaire : real
-nom : string
-code : integer
+getPrix():real
F IG . 3 – Modèle structurel complété
5