Diagramme de classes

Un article de Wikipédia, l'encyclopédie libre.

Le diagramme de classes est un schéma utilisé en génie logiciel pour présenter les classes et les interfaces d'un système ainsi que les différentes relations entre celles-ci. Ce diagramme fait partie de la partie statique d'UML car il fait abstraction des aspects temporels et dynamiques.

Une classe décrit les responsabilités, le comportement et le type d'un ensemble d'objets. Les éléments de cet ensemble sont les instances de la classe.

Une classe est un ensemble de fonctions et de données (attributs) qui sont liées ensembles par un champ sémantique. Les classes sont utilisées dans la programmation orientée objet. Elles permettent de modéliser un programme et ainsi de découper une tâche complexe en plusieurs petits travaux simples.

Les classes peuvent être liées entre elles grâce au mécanisme d'héritage qui permet de mettre en évidence des relations de parenté. D'autres relations sont possibles entre des classes, chacune de ces relations est représentée par un arc spécifique dans le diagramme de classes.

Elles sont finalement instanciées pour créer des objets (une classe est un moule à objet : elle décrit les caractéristiques des objets, les objets contiennent leurs valeurs propres pour chacune de ces caractéristiques lorsqu'ils sont instanciés).

Sommaire

[modifier] Relations possibles entre classes

Ces relations ne sont pas exclusives au diagramme de classe, elles peuvent également s'appliquer à l'ensemble des diagrammes statiques.

T' hérite de T
T' hérite de T
Héritage 
principe de division par généralisation et spécialisation, représenté par un trait reliant les deux classes et dont l'origine (classe mère) se distingue de l'autre l'extrémité (classe fille) par un triangle.
navigabilité des associations 1- Bidirectionnelle 2- Mono-directionnelle, Invocation de méthode 3- interdit une association
navigabilité des associations
1- Bidirectionnelle
2- Mono-directionnelle, Invocation de méthode
3- interdit une association
Association 
connexion sémantique entre deux classes (relation logique). Une association peut être nommée. L'invocation d'une méthode est une association. Elle peut être binaire, dans ce cas elle est représentée par un simple trait, ou n-aires, les classes sont reliées à un losange par des traits simple. Ces relations peuvent être nommée. L'association n'est utilisée que dans les diagramme de classe.
multiplicité : identique aux cardinalités du système Merise, sert à compter le nombre minimum et maximum d'instances de chaque classe dans la relation liant 2 ou plusieurs classes.
navigabilité : indique si on pourra accéder d'une classe à l'autre. Si la relation est entre les classes A et B et que seulement B est navigable, alors on pourra accéder à B à partir de A mais pas vice versa. Par défaut, la navigabilité est dans les 2 sens.
Composition
Composition
Composition 
Composition avec cycle de vie dépendant (on dit que la classe composée est détruite lorsque la classe mère disparait).
Agrégation
Agrégation
Agrégation 
association avec relation de subordination, représentée par un trait reliant les deux classes et dont l'origine se distingue de l'autre l'extrémité (la classe subordonnée) par un losange. Une des classes "regroupe" d'autres classes.
Dépendance

[modifier] Schéma d'une classe

Une classe est représentée par un rectangle séparée en trois parties :

  • la première partie contient le nom de la classe
  • la seconde contient les attributs de la classe
  • la dernière contient les méthodes de la classe

Exemple :

[modifier] Seconde partie : les attributs

Pour définir un attribut, il faut préciser son nom suivi du caractère « : » et du type de l'attribut.

Le modificateur d'accès de l'attribut doit précéder le nom et peut prendre les valeurs suivantes :

Caractère Rôle Description
+ accès public Tous les objets et les classes ont accès à cet attribut.
# accès protégé Seules les classes issues de classes filles (héritage) ont accès à cet attribut.
- accès privé Seule la classe elle-même a accès à cet attribut.

Les attributs privés et protégés ne sont accessibles qu'à travers des méthodes publiques (getters et setters).

[modifier] Troisième partie : les méthodes

Les modificateurs sont identiques à ceux des attributs :

Caractère Rôle
+ accès public
# accès protégé
- accès privé

Les paramètres de la méthode peuvent être précisés en les indiquant entre les parathèses sous la forme nom : type.

Si la méthode renvoie une valeur son type doit être précisé après un signe « : ».

[modifier] Exemple de code

Certains logiciels fonctionnalité d'IDE permettent d'obtenir les fichiers contenant les classes directement utilisables à partir de ces diagrammes. En java, l'héritage d'une classe se définie avec le mot clef "extend" tandis que l'implémentation d'une interface "implement". Attention en java il n'existe pas d'héritage multiple

Le code source Java suivant correspond au schéma UML de animal :

/* Déclaration des classes*/
 
public class Animal
 {
   public String nom= "animal";
   protected double champProtected = 0;
   private boolean champPrive = false;
 
   public Animal {};
   public modifierNom(String newNom){this.nom=newNom};
 }
 
public class Son
 {
   private string nomFichier;
   public Son (String fichier) {this.nomFichier=fichier};
   public lire {};
   public stop {};
 }
 
 
public class Chat extends Animal                //Héritage
 { 
   public Son cri;                             //Composition
   public Chat (String nom){modifierNom(nom) ;cri=New Son("miaulement.ogg")};
 }
 
public class Animalerie
{
  ...
  private Chat[] members = new Chat[5];               // Agrégation
  ...
};

[modifier] Voir aussi

Exemple de diagramme de classe
Exemple de diagramme de classe

[modifier] Article connexes

[modifier] Liens externes