ObjectOriented Software Engineering Practical Software Development using UML

  • Slides: 48
Download presentation
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 8: Modelling Interactions

Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 8: Modelling Interactions and Behaviour © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour

8. 1 Diagrammes d’interaction Les diagrammes d’interaction sont utilisés pour modéliser les aspects dynamiques

8. 1 Diagrammes d’interaction Les diagrammes d’interaction sont utilisés pour modéliser les aspects dynamiques d’un système • Ils aident à visualiser comment le système exécute ses tâches. • Un diagramme d’interaction est souvent construit à partir d’un diagramme de classes et d’un cas-type —L’objectif est de montrer comment un ensemble d’objets peut réaliser une tâche demandée par un acteur © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 2

Interactions et messages • Un diagramme d’interaction montrent comment un ensemble d’objets et d’acteurs

Interactions et messages • Un diagramme d’interaction montrent comment un ensemble d’objets et d’acteurs communiquent ensemble afin: —de réaliser un cas-type —de réaliser une certaine fonctionnalité • L’ensemble des différentes étapes à accomplir s’appelle une interaction. • Un diagramme d’interaction montre différents types de communication entre objets, acteurs et sous-systèmes: —E. g. appel à des méthodes, information envoyés sur un réseau —Ceux-ci sont appelés messages. © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 3

Les éléments se trouvant dans un diagramme d’interaction • Des instances de classes —Représentés

Les éléments se trouvant dans un diagramme d’interaction • Des instances de classes —Représentés par des rectangles comme dans les diagrammes d’instances • Acteurs —Représentés par des personnages-allumettes comme dans les diagramme de cas-type • Messages —Représentés par des flèches horizontales © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 4

Création d’un diagramme d’interaction Un diagramme de classes et des cas-type doivent d’abord être

Création d’un diagramme d’interaction Un diagramme de classes et des cas-type doivent d’abord être élaborés • Il existe deux sortes de diagramme d’interaction —Diagramme de séquence —Diagramme de collaboration © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 5

Un exemple de diagramme de séquence © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and

Un exemple de diagramme de séquence © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 6

Diagramme de séquence Un diagramme de séquence montre la séquence temporelle d’échange de message

Diagramme de séquence Un diagramme de séquence montre la séquence temporelle d’échange de message entre l’acteur et les objets réalisant une certaines tâche • Les objets sont disposés horizontalement • L’acteur qui initie l’interaction se trouve généralement à l’extrême gauche • La dimension verticale représente le temps • Une ligne verticale, appelée ligne de vie, est accrochée à chaque objet ou acteur • La ligne de vie s’épaissie pour devenir une boite d’activation lorsque l’objet est actif, i. e. , durant la période d’activation. • Un message est représenté par une flèche joignant deux boites d’activation. —Un message a un nom et peut aussi avoir une liste d’arguments et une valeur de retour. © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 7

Encore le même exemple, avec plus de détails © Lethbridge/Laganière 2001 Chapitre 8: Modelling

Encore le même exemple, avec plus de détails © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 8

Diagramme de séquence – avec des messages répétés • Une itération à travers plusieurs

Diagramme de séquence – avec des messages répétés • Une itération à travers plusieurs objets s’indique à l’aide d’un astérisque précédent le nom du message © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 9

Diagramme de séquence – destruction d’un objet • Un X à la fin d’une

Diagramme de séquence – destruction d’un objet • Un X à la fin d’une ligne de vie indique l’objet a été détruit © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 10

Diagramme de collaboration – un exemple © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and

Diagramme de collaboration – un exemple © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 11

Diagramme de collaboration Un diagramme de collaboration illustre comment les objets coopèrent dans la

Diagramme de collaboration Un diagramme de collaboration illustre comment les objets coopèrent dans la réalisation d’une interaction • Un diagramme de collaboration est un graphe dont les objets sont les sommets. • Des liens de communication sont ajoutés entre ces objets • Les messages sont associés à ces liens. —Représentés par des flèches • L’ordonnancement temporel est indiqué à l’aide d’une numérotation © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 12

Encore le même exemple, avec plus de détails © Lethbridge/Laganière 2001 Chapitre 8: Modelling

Encore le même exemple, avec plus de détails © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 13

Liens de communication • Un lien de communication existe entre 2 objets lorsqu’à un

Liens de communication • Un lien de communication existe entre 2 objets lorsqu’à un moment il est possible d’envoyer un message d’un objet à un autre. • Plusieurs situations peuvent rendre cet échange possible: 1. Les classes sont en association - Il s’agit là de la situation la plus commune - Si tous les messages sont envoyés dans la même direction, l’association peut alors être rendue unidirectionnelles © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 14

D’autres liens de communication possibles 2. Le récepteur est contenu dans une variable locale

D’autres liens de communication possibles 2. Le récepteur est contenu dans une variable locale de la méthode émettrice - Ceci se produit fréquemment lorsque l’objet a été créé par la méthode émettrice ou lorsqu’un résultat précédent a retourné un objet. - Le stéréotype a utiliser est «local» ou [L]. 3. Une référence à l’objet récepteur a été reçu comme paramètre par la méthode émettrice - Le stéréotype a utiliser est «parameter» or [P]. © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 15

D’autres liens de communication possibles 4. Le récepteur est un objet global - Ceci

D’autres liens de communication possibles 4. Le récepteur est un objet global - Ceci se produit lorsque la référence à l’objet peut être obtenue à l’aide d’une méthode statique - Le stéréotype a utiliser est «global» , ou [G] 5. Les objets communiquent à travers un réseau - Nous suggérons d’utiliser «network» . © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 16

Comment choisir entre un diagramme de séquence et un diagramme de collaboration Les diagrammes

Comment choisir entre un diagramme de séquence et un diagramme de collaboration Les diagrammes de séquence • Rendent explicite la séquence temporelle dans l’interaction —Les cas-type ont aussi un tel ordre temporel —Les diagrammes de séquence constituent donc le choix naturel lorsque l’interaction est construite à partir d’un cas-type. • Facilite une écriture détaillée des messages —Moins d’espace est généralement disponible dans un diagramme de collaboration © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 17

Comment choisir entre un diagramme de séquence et un diagramme de collaboration Diagramme de

Comment choisir entre un diagramme de séquence et un diagramme de collaboration Diagramme de collaboration • Peuvent être vus comme la prolongation d’un diagramme de classes —Préférable lorsque l’interaction est déduite du diagramme de classes —Sont aussi très utiles pour valider des diagrammes de classes © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 18

Diagramme de collaboration et patron de conception Un diagramme de collaboration peut être utilisé

Diagramme de collaboration et patron de conception Un diagramme de collaboration peut être utilisé pour représenter différents aspects d’un patron de conception © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 19

8. 2 Diagrammes d’état Un diagramme d’état décrit le comportement d’un système, d’une partie

8. 2 Diagrammes d’état Un diagramme d’état décrit le comportement d’un système, d’une partie d’un système ou d’un objet. • A tout instant, un système ou un objet se trouve dans un certain état. —Être dans un état donné signifie que le système se comportera d’une façon spécifique en réponse aux événements se produisant. • Certains événements vont provoquer des changements d’états —Dans ce nouvel état, le système se comportera de façon différente. • Un diagramme d’état est un graphe dans lequel les états sont des nœuds et dont les arcs représentent les transitions. © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 20

Exemple de diagramme d’état • tic-tac-toe XWin XTurn Tie OWin OTurn © Lethbridge/Laganière 2001

Exemple de diagramme d’état • tic-tac-toe XWin XTurn Tie OWin OTurn © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 21

Les états • A tout instant, le système se trouve dans un état •

Les états • A tout instant, le système se trouve dans un état • Il demeura dans cet état jusqu’à l’occurrence d’un événement provoquant un changement d’état • Un état se représente à l’aide d’un rectangle arrondi contenant le nom de cet état • États spéciaux: —Un disque noir représente l’état initial —Un disque noir entouré d’un cercle représente un état final © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 22

Transitions • Une transition représente un changement d’état en réponse à un événement —Cette

Transitions • Une transition représente un changement d’état en réponse à un événement —Cette transition est considérée instantanée • L’étiquette associée à une transition est l’événement causant ce changement d’état © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 23

Diagramme d’état – un exemple avec conditions et délais © Lethbridge/Laganière 2001 Chapitre 8:

Diagramme d’état – un exemple avec conditions et délais © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 24

Diagramme d’état – un exemple avec transition conditionnelle © Lethbridge/Laganière 2001 Chapitre 8: Modelling

Diagramme d’état – un exemple avec transition conditionnelle © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 25

Les activités dans les diagramme d’état • Une activité peut être lancée lorsque le

Les activités dans les diagramme d’état • Une activité peut être lancée lorsque le système se trouve dans un état —Une activité a une durée —En réponse à la terminaison de l’activité, le système peut effectuer un changement d’état —Les transitions peuvent aussi se produire lorsque l’activité est en cours: - L’activité se termine alors et le changement d’état s’effectue © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 26

Diagramme d’état – un exemple avec activité © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions

Diagramme d’état – un exemple avec activité © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 27

Les actions dans un diagramme d’état • Une action se réalise de façon instantanée

Les actions dans un diagramme d’état • Une action se réalise de façon instantanée —Lorsqu’une transition se produit —Lorsque le système entre dans un certain état —Lorsque le système sort d’un certain état © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 28

Diagramme d’état – un exemple avec actions © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions

Diagramme d’état – un exemple avec actions © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 29

Diagramme d’état – un autre exemple © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and

Diagramme d’état – un autre exemple © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 30

Sous-états et diagrammes imbriqués Un diagramme d’état peut être imbriqué dans un autre. •

Sous-états et diagrammes imbriqués Un diagramme d’état peut être imbriqué dans un autre. • Les états dans un diagramme interne sont des sous-états © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 31

Diagramme d’état – un exemple avec sousétats © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions

Diagramme d’état – un exemple avec sousétats © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 32

8. 3 Diagrammes d’activité • Un diagramme d’activité est similaire à un diagramme d’état.

8. 3 Diagrammes d’activité • Un diagramme d’activité est similaire à un diagramme d’état. —Les transitions sont causées par la terminaison d’une activité. • Un diagramme d’activité —peut servir à mieux comprendre la succession des étapes qu’un système doit accomplir afin de réaliser une certaine tâche —peut aussi servir à mieux comprendre les cas-type et la façon dont ils sont interreliés —est le plus souvent associé à plusieurs classes • L’une des forces diagrammes d’activité est de représenter des activités concurrentes. © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 33

Un exemple de diagramme d’activité © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour

Un exemple de diagramme d’activité © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 34

Représentation de la concurrence • La concurrence dans un diagramme d’activité se représente à

Représentation de la concurrence • La concurrence dans un diagramme d’activité se représente à l’aide de points de rencontre, de fourchettes et de rendez-vous. —Une fourchette (fork) a une transition entrante et plusieurs transitions sortantes - L’exécution se sépare alors en différents fils d’exécution —Un rendez-vous a plusieurs transitions entrantes et sortantes - Lorsque toutes les transitions entrante ont été effectué alors seulement peuvent être lancée les transitions sortantes © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 35

Représentation de la concurrence —Un point de rencontre (join) a de multiples transitions entrantes

Représentation de la concurrence —Un point de rencontre (join) a de multiples transitions entrantes et une transition sortante - La transition sortante s’effectue lorsque toutes les transitions entrantes se sont produites - Chacune des transitions entrantes s’effectue dans un fil d’exécution distinct. - Lorsque qu’une transition entrante se produit, le fil correspondant est bloqué jusqu’à ce que les autres transitions soient complétées. © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 36

Allées Un diagramme d’activité est souvent associé à plusieurs classes • Le partitionnement des

Allées Un diagramme d’activité est souvent associé à plusieurs classes • Le partitionnement des activités à travers les différentes classes peut être explicitement montré à l’aide d’allées (swimlanes) © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 37

Diagramme d’activité – un exemple avec allées © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions

Diagramme d’activité – un exemple avec allées © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 38

8. 4 Implémenter une classe à l’aide de diagrammes d’activité et d’état • Les

8. 4 Implémenter une classe à l’aide de diagrammes d’activité et d’état • Les diagrammes d’état et d’activité sont utilisés pour les éléments plus complexes du système —Pas toutes les classes justifient l’utilisation de tels diagrammes • L’utilisation conjointe de diagrammes d’interaction, d’activité et d’état peuvent aider à concevoir la bonne implémentation. • Ceci est particulièrement vrai lorsque le comportement d’une classe, d’un sous-système est distribué parmi plusieurs cas-type • Un diagramme d’état est utile lorsque différentes conditions produisent une réponse différentes aux même événements © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 39

Exemple © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 40

Exemple © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 40

Exemple: La classe Course. Section États: • ‘Planned’: closed. Or. Cancelled == false &&

Exemple: La classe Course. Section États: • ‘Planned’: closed. Or. Cancelled == false && open == false • ‘Cancelled’: closed. Or. Cancelled == true && registration. List. size() == 0 • ‘Closed’ (course section is too full, or being taught): closed. Or. Cancelled == true && registration. List. size() > 0 © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 41

Exemple: La classe Course. Section États: • ‘Open’ (accepting registrations): open == true •

Exemple: La classe Course. Section États: • ‘Open’ (accepting registrations): open == true • ‘Not. Enough. Students’ (substate of ‘Open’): open == true && registration. List. size() < course. get. Minimum() • ‘Enough. Students’ (substate of ‘Open’): open == true && registration. List. size() >= course. get. Minimum() © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 42

Exemple: La classe Course. Section public class Course. Section { // The many-1 abstraction-occurrence

Exemple: La classe Course. Section public class Course. Section { // The many-1 abstraction-occurrence association (Figure 8. 2) private Course course; // The 1 -many association to class Registration (Figure 8. 2) private List registration. List; // The following are present only to determine the state // (as in Figure 8. 19). The initial state is 'Planned‘ private boolean open = false; private boolean closed. Or. Canceled = false; © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 43

Exemple: La classe Course. Section public Course. Section(Course course) { this. course = course;

Exemple: La classe Course. Section public Course. Section(Course course) { this. course = course; registration. List = new Linked. List(); } public void open. Registration() { if(!closed. Or. Canceled) // must be in 'Planned' state { open = true; // to 'Open. Not. Enough. Students' state } } © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 44

Exemple: La classe Course. Section public void close. Registration() { // to 'Canceled' or

Exemple: La classe Course. Section public void close. Registration() { // to 'Canceled' or 'Closed' state open = false; closed. Or. Canceled = true; if (registration. List. size() < course. get. Minimum()) { unregister. Students(); // to 'Canceled' state } } public void cancel() { // to 'Canceled' state open = false; closed. Or. Canceled = true; unregister. Students(); } © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 45

Exemple: La classe Course. Section public void request. To. Register(Student student) { if (open)

Exemple: La classe Course. Section public void request. To. Register(Student student) { if (open) // must be in one of the two 'Open' states { // The interaction specified in the sequence diagram of Figure 8. 4 Course prereq = course. get. Prerequisite(); if (student. has. Passed. Course(prereq)) { // Indirectly calls add. To. Registration. List new Registration(this, student); } // Check for automatic transition to 'Closed' state if (registration. List. size() >= course. get. Maximum()) { // to 'Closed' state open = false; closed. Or. Canceled = true; } } } © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 46

Exemple: La classe Course. Section // Private method to remove all registrations // Activity

Exemple: La classe Course. Section // Private method to remove all registrations // Activity associated with 'Canceled' state. private void unregister. Students() { Iterator it = registration. List. iterator(); while (it. has. Next()) { Registration r = (Registration)it. next(); r. unregister. Student(); it. remove(); } } // Called within this package only, by the constructor of // Registration to ensure the link is bi-directional void add. To. Registration. List(Registration new. Registration) { registration. List. add(new. Registration); } } © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 47

8. 5 Risques et difficultés dans la modélisation des interactions et du comportement La

8. 5 Risques et difficultés dans la modélisation des interactions et du comportement La modélisation dynamique est une tâche difficile • Dans un système de grande taille, il existe de nombreux chemins que le système peut emprunter. • Il est difficile d’attribuer le bon comportement aux bonnes classes: —Le processus de modélisation devrait être supervisé par le développeur le plus expérimenté —Tous les aspects du modèle devrait être révisés attentivement. —Travailler de façon itérative: - Développer un premier diagramme de classes, puis les cas-types, les responsabilités, et ensuite les diagrammes d’interaction, d’activité et d’état; - Réviser et modifier ensuite les diagramme afin de les rendre consistants —Le fait de dessiner différents diagrammes représentant des aspects différents, mais très liés, aide à mettre en lumière les problèmes potentiels © Lethbridge/Laganière 2001 Chapitre 8: Modelling Interactions and Behaviour 48