QUI ?

Les diagrammes de cas d’utilisation modélisent à QUOI sert le système.

Le système est composé d’objets qui interagissent entre eux et avec les acteurs pour réaliser ces cas d’utilisation :

Chaque nouveau diagramme répond à une question différente :

Diagrammes d’objets

Les objets sont les éléments constitutifs du système, avec leurs données propres et des moyens de de traitement pour réaliser les services attendus.

Attention : non corformité avec la représentation des objets en UML de ce schéma issu d’un TD préliminaire.

Diagrammes de classes

Les classes sont des types d’objets.

Objets

Objets du monde réel :

Objets informartiques

En informatique, les objets ne désignent pas de éléments matériels concrets.

Un objet est un conteneur, qui possède sa propre existence et incorpore des données et des mécanismes en rapport avec une chose tangible. C’est le concept central de la programmation et de la conception orientée objet.

Objets informatiques

Objets en UML

Syntaxe du nom des objets : nom:Type

Classes

Une classe définit un type d’objet.

Une classe déclare donc des propriétés communes à un ensemble d’objets :

Exemples de propriétés :

Représentation d’une classe en UML

Une classe est composée d’un nom, d’attributs et d’opérations.

Concepts et instance

Une instance est la concrétisation d’un concept abstrait.

Instanciation d’une classe :

Instanciation d’une association :

Attributs d’une classe

Syntaxe (entre accolades, les mentions optionnelles) :

{-,#,+,~} nomAttribut : TypeAttribut {[multiplicité]} {=valeurInitiale}

Exemples :

Encapsulation

L’encapsulation est un principe de conception consistant à protéger le coeur d’un système des accès intempestifs venant de l’extérieur.

En UML, les modificateurs d’accès permettent de définir la visibilité des propriétés :

Il n’y a pas de visibilité par défaut.

Opérations d’une classe

Syntaxe (entre accolades, les mentions optionnelles) :

{-,#,+,~} nomOpération ({LISTE_PARAMS}) {:valeurRetour}

avec pour LISTE_PARAMS, les paramètres séparés par des virgules. Chaque paramètre s’écrit :

nomParamètre : TypeParamètre

Exemples :

Notation abrégée d’une classe

Si une classe est déjà définie, il est possible de la représenter simplement, sans ses propriétés.

Relations entre classes

Association

Une association est une relation structurelle entre objets.

La flèche indique ici que la relation est uni-directionnelle : les objets de classe Article connaissent ceux de la la classe Commentaire auxquels il sont liés, mais pas l’inverse.

Association bi-directionnelle

Certaines associations sont bi-directionnelles mais comme une telle association est plus complexe à implémenter, on prefère l’aviter autant que possible.

L’absence de flèche indique ici que l’on peut accéder aux catégories à partir des articles qui leur sont liés, et inversement.

Multiplicités

Les multiplicités permettent de contraindre le nombre d’objets intervenant dans les instanciations des associations. On en place de chaque côté des associations.

Ici, le 1..5 s’interprète comme à un objet donné de la classe Article, on doit associer au minimum 1 objet de la classe Categorie et on peut en associer au maximum 5.

Ecriture des multiplicités

Certaines écritures possibles :

Exemples :

Rôles

On peut donner à une classe un rôle dans uns association. C’est surtout utile quand plusieurs associations concernent les mêmes classes en qu’en conséquence, de mêmes objets peuvent être liés par des modalités différentes.

Ici, des adresses peuvent être liées aux clients :

Classe-association

Pour faire porter des informations par une association, on emploie une classe-association.

Graphiquement, on la relie à l’association avec des pointillés.

Relations est une partie de

Les objets correspondant aux attributs d’une classe font partie des objets de la classe en question :

Expression des compositions avec des relations

Il est possible de représenter plus explicitement les relations de composition entre classes.

De manière équivalente à la définition d’attributs, on peut utiliser des compositions unidirectionnelles et

Les compositions peuvent aussi être bi-directionnelles, mais il n’y a alors plus d’aquivalence avec les attributs : on retient la notion de partie.

Compositions et associations classiques

Il faut remplir deux critères pour décider d’une composition au lieu d’une association classique :

Traduction Java de la notion d’attribut

Un attribut est implémenté en Java par une variable d’instance de même nom.

1
2
3
4
5
6
class Article {
    protected designation : String
    protected prix : float
    ...
    (opérations)
}

Une multiplicité maximale supérieure à 1 en UML donne lieu en Java à un tableau ou à une collection.

Modificateurs d’accès

UML Java
+ public
- private
# protected
~ package

Compositions unidirectionnelles

1
2
3
4
5
class Article {
    ...
    Commentaire[] avis ;
    ...
}

Les compositions unidirectionnelles sont implémentées par des variables d’instance en Java

Associations unidirectionnelles

Les associations sont représentées comme des compositions, c’est à dire avec des attributs.


Module d’UML