Skip to main content Link Menu Expand (external link) Document Search Copy Copied
Light mode Dark mode

Diagrammes de paquetages

Visualiser, spécifier, construire et documenter de grands systèmes implique la manipulation d’un grand nombre de classes, interfaces, composantes, noeuds, diagrammes et autres éléments.
Il est donc utile de regrouper les éléments communs en paquetages afin de pouvoir les comprendre et les manipuler plus facilement.

Représentation

Un simple paquetage est représenté ainsi:

Il y a deux façons de représenter le contenu des paquetages:

À l’intérieur du paquetage À l’aide de relations

Relations

Containment Indique que le paquetage A contient l’élément B.
Import Indique que le paquetage A importe les éléments du paquetage B. Donc, A aura accès au contenu de B. Cette relation est transitive, donc si A «import» B, alors tout paquetage qui importe A aura aussi accès aux éléments de B.
Access Indique que le paquetage A importe les éléments du paquetage B avec une visibilité privée. Ainsi, cette relation n’est pas transitive; si A «access» B, alors un paquetage qui importe A n’aura pas accès aux éléments de B.
Merge Indique que le paquetage A fusionne le paquetage B en fonction des règles suivantes:
  • Les membres privés d'un paquetage ne sont pas fusionnés.
  • Si des classes ont le même nom et le même type, alors l'élément source ajoute conceptuellement les caractéristiques de l'élément cible à ses propres caractéristiques, ce qui donne un élément qui combine les caractéristiques des deux dans le paquetage résultant (similaire à une généralisation).
  • Les classes qui n'existent que dans les paquetages fusionnés restent inchangés et sont ajoutés au paquetage résultant.
  • Si deux sous-paquetages porte le même nom existe dans les paquetages fusionnés, une autre fusion est lancée entre les deux sous-paquetages.
  • Toutes les importations de paquetage des paquetages fusionnés deviennent des importations du paquetage résultant.
  • Les sous-paquetages des paquetages fusionnés sont ajoutés au paquetage résultant s'ils n'existent pas déjà.

Visibilité

Les éléments d’un paquetage peuvent être publics ou privés.
La visibilité publique indique que cet élément est utilisable en dehors du paquetage.
La visibilité privée indique le contraire : seulement les autres éléments du même paquetage peuvent utiliser l’élément privé.
Un élément public est indiqué par un signe plus. Un élément privé est indiqué par un signe moins.

Importer et accéder aux paquetages

Il est possible d’importer des éléments d’un paquetage à l’autre. Pour ce faire, il faut qu’un paquetage <<import>> un autre paquetage, ce qui lui permettra d’accéder à toutes les classes de ce dernier. Par exemple:

Dans ce cas-ci, le PayrollSystem pourra accéder aux classes présentes dans le paquetage EmployeeTimeSheet.

Par défaut, les éléments importés sont publics, c’est-à-dire qu’ils peuvent être accédés par d’autres paquetages qui importeraient, dans notre cas, PayrollSystem. Il est possible d’importer des éléments de manière privée avec l’annotation <<access>>, c’est-à-dire qu’ils ne seront accessibles que par le paquetage qui les importe. Par exemple:

Fusionner les paquetages

L’UML offre la possibilité de fusionner des paquetages. Ce mécanisme plutôt complexe est rarement utilisé en industrie.
Vous pouvez trouver plus de détails sur ce sujet dans la section 3.4. Merging Packages du livre UML 2.0 in a Nutshell de Pilone et Pitman.

Exemple

Voici un exemple complet d’un diagramme de paquetages basé sur le cas d’étude PolyAuto.