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