Vous êtes sur la page 1sur 3

Polytech Paris-Sud UML

3
e
anne Anne 2012-2013
TD 3
Diagrammes de squence

lments de correction
Passer une commande Pour passer une commande, le client fournit son numro de tl-
phone (qui va permettre de lidentier) et le contenu de sa commande quon reprsente sous
la forme dune liste de couples (nom dune pizza, quantit).
Le systme commence par vrier que le client existe dans la base des clients et conserve
lobjet client qui lui correspond.
Le systme vrie ensuite que la commande est faisable (elle peut tre fabrique dans un
Point Pizza qui fait toutes les pizzas spciales demandes) puis cre la commande dans le
systme et en indique le numro et le prix au client.
Pour vrier que la commande est faisable, le systme rcupre la liste des Points Pizza
pour chaque spcialit de la commande puis vrie que lintersection de ces listes nest pas
vide, cest--dire quil existe au moins un Point Pizza qui peut satisfaire la commande. Cest
une faon de faire un peu nave, on peut trouver dautres mthodes.
Le systme cre ensuite une commande en crant les objets DtailsCommande correspon-
dant chaque pizza (avec lattribut tat initialis enAttente) et en ajoutant chaque couple
(pizza,dtails) lobjet commande cr. Il attribue ensuite le client la commande puis ajoute
la commande aux commandes du client. Il conserve lobjet commande cr (quand on cre un
objet, on le renvoie ncessairement celui qui la cr) puis il renvoie le numro et le prix de
la commande au client.
1
: RapidPizza
: Client
commander(tl,
liste[nomPizza,qt])
Pizza
estSpciale(nomPizza)
true
Pour chaque
pizza nomPizza
de la liste
PointsPizza(nomPizza)
listePP
vrifierCompatibilit(liste[listePP])
true
c : Commande
Commande(client,
liste[nom,qt])
commande
id, prix
Pour chaque
pizza p de la liste
d : DtailsCommande
tailsCommande(qt)
d
tails initialiss avec
tatPlat ! en"ttente
a#outer(p,d)
true
client : Client
a#outerCommande(this)
Client
chercher(tl)
client
Pizza
chercher(nom)
p
attribuer(client)
2
Notier lavancement dune pizza Lorsquun coordinateur souhaite notier ltat davan-
cement dune pizza, il doit donner le numro de commande et le nom de la pizza. Si son tat
est enAttente, il passera automatiquement enCours, sil est enCours, il passera prte. Le
systme recherche la commande correspondant au numro, puis la commande cherche la pizza
correspondante et met son tat jour. On peut ne rien renvoyer (juste OK) ou bien renvoyer
le nouvel tat de la pizza.
Il faudrait dautres diagrammes pour montrer les dirents cas derreur (la commande
nexiste pas, la commande est dj prte, la pizza nexiste pas dans cette commande, la pizza
est dj prte).
Un cas particulier intressant est celui o la pizza dont on met jour ltat est la dernire
pizza de la commande tre prte. On pourrait montrer limpact sur le statut de la commande
correspondante, qui doit automatiquement passer prte dans ce cas.
: RapidPizza
: Coordinateur
avancement(id,nomPizza)
Commande
chercherCommande(id)
com
com : Commande
avancement(nomPizza)
chercher(nomPizza)
p
p : Pizza
avancement()
tat
tat
tat
tat passe de
enAttente enCours
ou de enCours
prte
3

Vous aimerez peut-être aussi