Diagramme de collaboration

Transcription

Diagramme de collaboration
IFT2255
Génie logiciel
Chapitre 6. Analyse orientée objets
Diagramme de collaboration
Julie Vachon et Houari Sahraoui
Diagramme de collaboration
1.
2.
3.
4.
5.
6.
Introduction
C ll b ti – partie
Collaboration
ti statique
t ti
Collaboration – partie dynamique
Modes d’interaction
Création et destruction dynamiques
Notation utilisée
p.2
1
6.7.1. Introduction
„
„
Diagramme illustrant les interactions entre les
instances d’un
d un logiciel en mettant l’accent
l accent sur
l’organisation structurelle des objets participants
(et non pas sur l’ordre temporel des messages)
Diagramme généralement utilisé pour
… Décrire
en détail le déroulement d’un cas d’utilisation,
i.e., décrire la conception
p
d’un scénario d’un cas
d’utilisation
… Collaboration
„
„
Ensemble d’instances qui interagissent ensemble pour
réaliser une tâche commune
Ensemble de liens (pertinents) existant entre ces instances
p.3
Collaboration
„
Partie statique
… Illustre
Ill t
lles iinstance
t
(d
(des classes)
l
) ett lles liliens
(instances d’associations) impliqués dans la
réalisation d’une collaboration donnée
leLivre :Livre
unMembre: Emprunteur
mb
:MembreBiblio
unExemplaire
:Exemplaire
p.4
2
Collaboration
„
Partie dynamique
… Illustre
Ill t
les
l iinteractions
t
ti
(l
(les messages
envoyés par les instances) nécessaires pour
réaliser la tâche décrite par la collaboration
leLivre :Livre
unMembre: Emprunteur
1.2.1. est_emprunté(self)
1. emprunter(cetExemplaire)
cetExemplaire
:Exemplaire
mb
:MembreBiblio
1.2. emprunter(mb)
1.1. okPourEmprunter()
p.5
6.7.2. Collaboration
Partie statique (i.e., sans interactions)
„
Éléments composant une collaboration
…
Objets : instance d’une classe
„
„
…
Liens : instances d’associations
d associations du diagramme de classes
„
…
Rectangle avec étiquette de la forme nomObjet:nomClasse ou
:nomClasse
Uniquement les instances pertinentes, i.e., interagissant dans le cas
d’utilisation ou le scénario
Uniquement les instances d’associations pertinentes pour la
collaboration
Acteurs : acteurs participant au cas d’utilisation ou scénario
„
L’acteur initiant un cas d’utilisation est appelé initiateur
p.6
3
6.7.3. Collaboration
Partie dynamique
„
„
no: message
Ajout des messages sur les liens
Indique les messages à côté des liens
appropriés sur le diagramme de collaboration
… La
flèche est issue de l’émetteur et pointe vers le
destinataire
… L’association correspondante dans le diagramme de
classes doit être navigable dans la même direction
… Le destinataire doit pouvoir comprendre le message
(opération appropriée ?)
p.7
Représentation des interactions
„
Numéro du message : en mode procédural, lorsqu’un
objet
j O reçoit
ç un message,
g le numéro de ce message
g
est utilisé comme préfixe pour tous les messages
envoyés par O par la suite… jusqu’à ce que O réponde à
ce message.
„
En général, les messages de retour n’apparaissent pas
explicitement dans les diagrammes de collaboration
Types de messages
„
…
…
„
Synchrone
Simple / asynchrone
Aussi : garde, itération, etc.
p.8
4
Représentation des interactions
„
„
Remarques
Comme le diagramme de séquence,
séquence le diagramme
de collaboration permet de découvrir de nouvelles
propriétés de classes
peut servir à compléter et développer le
diagramme de classes
… Ajout
„
d’opérations
d opérations, d’associations
d associations, etc.
etc
Le diagramme de classes doit être mis à jour pour
demeurer « correct » et « cohérent » avec les
diagrammes de séquence et de collaboration
p.9
6.7.4. Modes d’interaction
„
Identiques aux diagrammes de séquence
… Flot
de contrôle (un seul en mode procédural ;
plusieurs possibles en mode concurrent)
… Activation (déclenchée par réception d’un message
en mode procédural ; constante en mode concurrent)
… Types de messages: synchrone, asynchrone / simple
… Numérotation des messages
„
„
„
Préfixée (pour les chaînes d’appel en mode procédural)
Séquentielle
Avec étiquette (messages concurrents)
p.10
5
6.7.5 Création et destruction
dynamiques
„
Ajout d’une contrainte ({new} ou {destroyed})
après l’étiquette dans le rectangle représentant
l’instance
… Si
au cours des interactions représentées par le
diagramme de collaboration, une instance est créée
puis détruite,
détruite on utilise la contrainte {transient}
„
Utilisation des messages de création et de
destruction d’instance : new, destroy
p.11
Création et destruction dynamiques
Exemple
1: n : = obtenirNom()
:Etudiant-Msc
: Recteur
{destroyed}
3 : destroy()
2: new Etudiant-PhD(n)
:Etudiant-PhD {new}
p.12
6
6.7.6. Notation utilisée
„
On peut utiliser (comme pour les
diagrammes de séquence)
… Messages
„
Ex. :
[i=0] 1: a(),
… Messages
„
avec garde (condition)
[i=1] 1: b()
avec clause itérative
Ex. : 1: ∗[i:=1..n] a()
p.13
Notation utilisée
Exemple – Message avec garde
:Ordinateur
1.
imprimer(fichier)
:Queue_d’impressions
[imprimante occupée]
1.1. ajouter(fichier)
:ServeurImprimante
:Imprimante
[imprimante libre] 1.1.
imprimer(fichier)
p.14
7
Notation utilisée
Concurrence
„
„
„
Le message 1 est un message asynchrone itératif
Les messages 2 et 3 sont des messages synchrones séquentiels
Les messages 4.a. et 4.b. sont des messages asynchrones
concurrents
4.a: envoyer(piste)
1. ∗alerte()
:Pompiers
t:TourDeContrôle
3: déplacer(piste,parking)
b:Boeing
4.b. atterrir(piste)
2. déplacer(piste,parking)
a1:Avion
état = à_terre
position = piste
a2:Avion
état = à_terre
position = piste
p.15
Notation utilisée
Autre exemple
1. monter_étage(n)
:Ascenseur
1.2. actionner(n)
1.1. monter()
1.1.1.b. fermer()
:Cabine
:Porte
:Moteur
1.1.1.a. allumer()
:Lumière
p.16
8
Notation utilisée
Résumé
:A
:A
:A
[cond]1: message()
1: message()
:B
:B
Message
Message conditionnel
:B
Message avec retour
:A
:A
1: *[i:=1..n] message()
1: res:= message()
:A
1.a: m1()
2: m4()
1: m1()
1.b: m2()
1.1: m2()
BB
:B
Itération
:C
:B
:B
:C
1.2: m3()
Invocations synchrones
Concurrence
p.17
9