Aller au contenu

Méta-modèle du Diagramme de Collaboration/Communication

Diagramme de classes du diagramme de Communication

Si vous maitrisez le diagramme de classes, vous allez mieux comprendre comment est construit un diagramme de Séquences avec les éléments qui le composent et les relations entre eux. Ce type de diagramme permet de montrer comment les objets collaborent entre eux pour réaliser une opération, en mettant l’accent sur les liens plutôt que sur la chronologie (contrairement au diagramme de Séquence).

Le diagramme de communication (anciennement “collaboration”) est une vue structurelle des interactions. Personnellement, j’ai gardé l’ancienne appellation.

Explications

Rôles de chaque élément

Exemple simple (instanciation du méta-modèle)

Scénario : Lecture d’un fichier

Exercice

À partir des informations ci-dessous :

Scénario : Impression d’un document

  1. L’utilisateur clique sur “Imprimer”.
  2. L’application envoie la commande à un GestionnaireImpression.
  3. Celui-ci demande le fichier au SystèmeDeFichiers.
  4. Il envoie ensuite le flux au PiloteImprimante.
  5. Le PiloteImprimante imprime et renvoie un message de succès.

Questions :

  1. Identifiez les objets (participants)
  2. Listez les messages en les numérotant
  3. Dessinez le diagramme de collaboration/communication
  4. Vérifiez la cohérence avec le méta-modèle

Conclusion

Dans un diagramme de Collaboration/Communication, chaque message a une numérotation hiérarchique qui reflète la logique interne. Le diagramme met l’accent sur les connexions (liens entre les objets). Il n’y a pas d’axe temporel vertical comme dans le diagramme de Séquence. Il est pratique pour identifier les dépendances entre objets avant le passage au code.

Bonus : Code PlantUML du diagramme de classes

@startuml
' ============================================================
'  Méta-modèle UML — Diagramme de Communication (FR)
' ============================================================

hide empty methods
hide empty fields
skinparam classAttributeIconSize 0
skinparam wrapWidth 240
skinparam maxMessageSize 120
title Méta-modèle UML  Diagramme de communication (FR)

class Interaction {
  + nom : Chaîne
}

class Participant {
  + nom : Chaîne
  + rôle : Chaîne
}

class LienCommunication {
  + identifiant : Chaîne
}

class Message {
  + nom : Chaîne
  + ordre : Entier
  + direction : "→"
}

class SpécificationExécution {
  + durée : Temps [0..1]
}

class FragmentCombiné {
  + opérateur : TypeFragment
}

enum TypeFragment {
  alt
  loop
  opt
  par
}

Interaction "1" *-- "1..*" Participant : contient >
Participant "0..*" o-- "0..*" LienCommunication : connecte >
LienCommunication "1" *-- "0..*" Message : transporte >
Message "0..1" --> "0..1" SpécificationExécution : déclenche >

note top of Interaction
  Vue structurelle des échanges entre objets.
  Montre les liens de communication et la numérotation des messages.
end note

note bottom of Message
  Message numéroté : 1, 1.1, 1.2  selon la séquence logique.
end note

note right of LienCommunication
  Représente une association entre deux participants
  permettant l'envoi d'un message.
end note
@enduml


Correction Exercice

Version PlantUML

@startuml
title Corrigé — Impression d'un document

object Utilisateur
object Application
object GestionnaireImpression
object SystèmeDeFichiers
object PiloteImprimante

Utilisateur -> Application : 1: imprimer()
Application -> GestionnaireImpression : 1.1: lancerImpression()
GestionnaireImpression -> SystèmeDeFichiers : 1.1.1: obtenirFichier()
GestionnaireImpression -> PiloteImprimante : 1.2: envoyerFlux()
PiloteImprimante -> Application : 1.3: retourSuccès()
@enduml