Logo UML Diagrammes de classes UML

UML est une norme complexe de description de programmes informatiques développée par un consortium d'entreprises et de laboratoires, l'OMG. La norme officielle 1.5 est disponible sur leur site. Une nouvelle norme 2.0 est aussi en développement. Ces spécifications sont particulièrement techniques et indigestes.

Ce langage compte pas moins de douze différents types de diagrammes permettant de décrire l'architecture et le fonctionnement d'un programme informatique. L'apprentissage de l'utilisation de ce langage de formalisation nécessiterait un cours complet. De plus, il existe de subtiles différences entre les versions du langage. Nous ne vous demandons pas d'apprendre tout cela par vous-même !

Dans le cadre du projet, il ne vous est demandé qu'un seul type de diagramme : le diagramme de classe, qui présente les relations entre vos différentes classes. Il n'est pas non plus exigé que vos diagrammes respectent parfaitement la syntaxe UML ; il suffit qu'ils ressemblent à des diagrammes de classe et que votre architecture soit compréhensible.

Introduction aux diagrammes de classe

L'un des intérêts majeurs d'UML est son indépendance vis-à-vis du langage choisi pour l'implémentation, avec pour seule contrainte qu'il soit orienté objet (par exemple Java, mais aussi C++, Eiffel, Objective C, OCaml, SmallTalk, Ruby, C#, ...). Ne vous attachez donc pas trop aux exemples Java fournis.

Commentaires
Représentation d'un commentaire.

N'importe quelle information qui ne rentre pas vraiment dans les catégories suivantes, par exemple un morceau de code d'implémentation.


Classes
Représentation d'une classe.

La représentation contient trois compartiments :

  1. le nom contient le nom de la classe et d'autres informations de documentation telles que vous les mettriez dans la javadoc. Les guillemets identifient des stéréotypes comme « abstract ». Le + est un modificateur d'accès :
    • + public
    • # protégé
    • - privé
  2. les attributs peuvent aussi être représentés à l'aide d'une relation d'aggrégation. Est-il nécessaire de rappeler que tous les attributs à l'exception des constantes doivent être privés ?
  3. les opérations sont les définitions des méthodes : nomDeMéthode (paramètres): typeDeRetour. Les opérations abstraites apparaissent en italiques.

Voir un exemple Java pour ce diagramme.


Associations
Représentation d'une association.

Une association est une relation entre deux classes. On la décrit à l'aide :

Voir un exemple Java pour ce diagramme.


Héritage (généralisation / spécialisation)
Représentation d'un héritage.

Une flèche triangulaire vide décrit une dérivation. La classe dérivée est la classe de base, mais avec des propriétés additionnelles ou modifiées. Elle spécialise ou étend la superclasse plus générale.


Héritage d'interface (spécifie / raffine)
Représentation d'une
           implémentation.

Une flèche d'héritage en tirets indique qu'une classe raffine ou implémente une interface.

L'interface elle-même est indiquée soit en précisant le stéréotype « interface » dans le nom de la classe, soit en utilisant des coins arrondis.


Classe interne
Représentation d'une classe interne.

Marque la présence d'une classe interne à une autre.


Dépendance
Représentation d'une dépendance.

Une classe utilise une autre classe, mais sans que la ressource soit un membre de l'utilisateur. Si la classe de ressource est modifiée, il y a peut-être des méthodes à modifier dans l'utilisateur. La ligne est souvent stéréotypée par « crée » ou « modifie ».


Aggrégation (contient)
Représentation d'une aggrégation.

La destruction du tout ne détruit pas les parties.


Composition (possède)
Représentation d'une composition.

La destruction du tout détruit les parties. Rare en Java.


Cette introduction est bien sûr incomplète mais devrait vous suffire. La lecture des chapitres concernant les diagrammes de classes du cours cité précédemment vous apportera plus de détails si vous le souhaitez.

Schéma du projet

Voici le diagramme de classe du squelette fourni pour le projet (aussi disponible en PDF) :

Diagramme de classes du projet.

Outils de dessin UML