Qu’est-ce qu’un diagramme de classes ?

En génie logiciel, un langage de modélisation unifié (UML) diagramme de classes est un diagramme structurel statique qui décrit la structure d’un système en montrant ses classes, leurs attributs, leurs opérations (ou méthodes) et les relations entre les objets.

Class diagram in UML diagram hierarchy

Objectifs des diagrammes de classes

  1. Afficher la structure statique des classificateurs dans le système
  2. Fournit une notation fondamentale pour les autres diagrammes structurels UML
  3. Très utile pour les développeurs et les autres membres de l’équipe
  4. Les analystes métiers peuvent utiliser les diagrammes de classes pour modéliser les systèmes du point de vue métier

Les diagrammes de classes UML se composent de :

  • Un ensemble de classes
  • Un ensemble de relations entre les classes

Qu’est-ce qu’une classe ?

Une description d’un groupe d’objets ayant des rôles similaires, notamment :

  • Fonctionnalités structurelles (attributs) : définissent ce que les objets de la classe « connaissent »
    • Représente l’état de l’objet
    • Décrit la structure ou les caractéristiques statiques de la classe
  • Fonctionnalités comportementales (opérations) : définissent ce que les objets de la classe « peuvent faire »
    • Définissent la manière dont les objets interagissent
    • Décrivent le comportement ou les caractéristiques dynamiques de la classe

Notation de classe

La notation de classe se compose de trois parties :

  1. Nom de classe
    • Le nom de classe apparaît dans la première compartiment.
  2. Attributs de classe
    • Les attributs sont affichés dans le deuxième compartiment.
    • Le type est indiqué après deux points.
    • Les attributs correspondent aux variables membres (membres de données) dans le code.
  3. Opérations de classe (méthodes)
    • Les opérations sont indiquées dans le troisième compartiment. Elles représentent les services fournis par la classe.
    • Le type de retour apparaît après deux points à la fin de la signature de la méthode.
    • Les types de paramètres apparaissent après deux points suivant le nom du paramètre.
    • Les opérations correspondent aux méthodes de classe dans le code.

Simple class

Représentation graphique de la classe MaClasse comme indiqué ci-dessus :

  • MaClasse possède 3 attributs et 3 opérations
  • Le paramètre p3 de op2 est de type entier
  • op2 retourne un flottant
  • op3 retourne un pointeur (indiqué par *) vers Class6

Relations entre classes

Une classe peut être impliquée dans une ou plusieurs relations avec d’autres classes. Les relations peuvent être des types suivants : (reportez-vous à l’image de droite pour les représentations graphiques).

Type de relation Diagramme
Héritage (ou généralisation) :

  • Représente une relation « est-un ».
  • Les noms de classes abstraites sont indiqués en italique.
  • SubClass1 et SubClass2 sont des spécialisations de SuperClass.
  • Ligne pleine avec une flèche ouverte pointant du sous-classe vers la superclasse.
Inheritance
Association simple:

  • Un lien structurel entre deux classes équivalentes.
  • Une association existe entre Class1 et Class2.
  • Ligne pleine reliant les deux classes.
Simple association
Aggrégation:

  • Un type particulier d’association représentant une relation « partie-de ».
  • La classe2 est une partie de la classe1.
  • Plusieurs instances de la classe2 (indiquées par *) peuvent être associées à la classe1.
  • Les objets de la classe1 et de la classe2 ont des cycles de vie indépendants.
  • Diamant ouvert à l’extrémité de la classe composite.
Aggregation
Composition:

  • Un type particulier d’aggrégation où les parties sont détruites lorsque l’ensemble est détruit.
  • Les objets de la classe2 vivent et meurent avec la classe1.
  • La classe2 ne peut pas exister indépendamment.
  • Diamant plein à l’extrémité de la classe composite.
Composition
Dépendance:

  • Existe entre deux classes si un changement dans la définition d’une classe peut entraîner un changement dans l’autre (mais pas inversement).
  • La classe1 dépend de la classe2.
  • Ligne pointillée avec une flèche ouverte.
Dependency

Noms de relation

  • Les noms de relation sont écrits au milieu de la ligne d’association.
  • Les bons noms de relation ont un sens lorsqu’ils sont prononcés :
      • « Chaque feuille de calcul contient quelques cellules »

    <li>Expression évalue à une valeur »

  • Ils ont souvent une petite flèche indiquant le sens de lecture, par exemple, l’expression évalue à une valeur, mais la valeur ne s’évalue pas à l’expression.

Relationship name

Relation – Rôles

  • Le rôle définit le but de la direction dans une association.
  • Le rôle est écrit à l’extrémité de la ligne d’association et décrit le rôle joué par une classe dans cette relation.
    • Par exemple, Cellule est liée à Expression. La nature de la relation est que Expression est la formule de la cellule.

Visibilité des membres de classe

Dans la conception orientée objet, la visibilité des attributs et des opérations est représentée. UML définit quatre types de visibilité : public, protégé, privé, et paquet.

Les symboles +, -, # et ~ placés avant les noms d’attribut et d’opération indiquent la visibilité :

  • + indique un attribut ou une opération public
  • – indique un attribut ou une opération privé
  • # indique un attribut ou une opération protégé
  • ~ indique un attribut ou une opération de paquet

Exemple de visibilité de classe

Simple class

Dans l’exemple ci-dessus :

  • attribute1 et op1 de MyClassName sont publics
  • attribute3 et op3 sont protégés
  • attribute2 et op2 sont privés

Les autorisations d’accès pour les différents membres de la classe sont indiquées ci-dessous :

Niveau d’accès Public (+) Privé (-) Protégé (#) Paquetage (~)
Membres de la même classe Oui Oui Oui Oui
Membres des classes dérivées Oui Non Oui Oui
Membres de toute autre classe Oui Non Non Même paquetage uniquement

Multiplicité

La multiplicité indique combien d’objets d’une classe participent à une relation. Elle peut être exprimée comme suit :

  • Exactement 1 – 1
  • Zéro ou un – 0..1
  • Beaucoup – 0..* ou *
  • Un ou plusieurs – 1..*
  • Nombre exact – par exemple, 3..4 ou 6
  • Relation complexe – par exemple, 0..1, 3..4, 6* signifie tout nombre sauf 2 ou 5

Exemple de multiplicité

  • Exigence : Un étudiant peut s’inscrire à plusieurs cours, et plusieurs étudiants peuvent s’inscrire à un seul cours.
  • Dans l’exemple ci-dessous, le diagramme de classes (gauche) décrit le modèle statique de la requête ci-dessus, tandis que le diagramme d’objets (droite) montre un instantané de l’inscription aux cours (instance du diagramme de classes) pour les cours d’ingénierie logicielle et de gestion de bases de données.

Object diagram

Exemple d’agrégation – Ordinateur et composants

  • L’agrégation est un cas particulier d’association représentant une hiérarchie « contient ».
  • L’agrégation est la classe parente, le composant est la classe enfant.

Aggregation example

Exemple d’héritage – Classification des cellules

  • L’héritage est un autre cas particulier d’association représentant une hiérarchie « type de ».
  • L’héritage simplifie le modèle d’analyse en introduisant une taxonomie.
  • Les sous-classes héritent des attributs et des opérations de la superclasse.

Inheritance example

Diagramme de classes – Exemple d’outil de diagramme

Les diagrammes de classes peuvent inclure des notes attachées aux classes ou aux relations. Les notes sont affichées en gris.

Class diagram example

À partir de l’exemple ci-dessus, nous pouvons interpréter le diagramme comme suit :

  1. Shape est une classe abstraite. Elle est affichée en italique.
  2. Shape est une superclasse. Circle, Rectangle et Polygon héritent de Shape. Autrement dit, un cercle est une forme. Il s’agit d’une relation de généralisation/héritage.
  3. Il existe une association entre DialogBox et DataController.
  4. Shape fait partie de Window. Il s’agit d’une relation d’agrégation. Shape peut exister sans Window.
  5. Point fait partie de Circle. Il s’agit d’une relation de composition. Point ne peut pas exister sans Circle.
  6. Window dépend d’Event. Mais Event ne dépend pas de Window.
  7. Les attributs de Circle sont radius et center. C’est une classe concrète.
  8. Les méthodes de Circle sont area(), circum(), setCenter() et setRadius().
  9. Le paramètre radius dans Circle est de type float.
  10. La méthode area() dans Circle retourne une valeur double.
  11. Les attributs et méthodes de Rectangle sont masqués. Certaines autres classes du diagramme masquent également leurs attributs et méthodes.

Gestion des systèmes complexes – Diagrammes de classes multiples ou un seul diagramme ?

Lors de la modélisation de systèmes complexes ou de grands domaines métier, de nombreuses entités doivent être prises en compte. Devons-nous utiliser plusieurs diagrammes de classes ou un seul ? La réponse est :

  • Il est préférable d’utiliser plusieurs diagrammes de classes plutôt que de modéliser chaque entité et ses relations sur un seul diagramme.
  • Diviser le système en plusieurs diagrammes de classes le rend plus facile à comprendre, surtout lorsque chaque diagramme est une représentation visuelle d’une partie spécifique du système.

Perspective des diagrammes de classes dans le cycle de vie du développement logiciel

Les diagrammes de classes peuvent être utilisés à différentes étapes du Cycle de vie du développement logiciel (SDLC), et généralement trois niveaux de détail différents (perspectives) sont modélisés progressivement :

Perspective conceptuelle: Le diagramme est interprété comme décrivant des choses dans le monde réel. Ainsi, si vous commencez par une perspective conceptuelle, vous dessinez un diagramme représentant des concepts dans le domaine étudié. Ces concepts se rapportent naturellement aux classes qui les implémentent. Cette perspective est considérée comme indépendante du langage.
Perspective de spécification: Le diagramme est interprété comme décrivant des abstractions logicielles ou des composants avec des spécifications et des interfaces, sans s’engager vers une implémentation spécifique. Ainsi, si vous adoptez une perspective de spécification, vous êtes en train d’étudier les interfaces logicielles plutôt que l’implémentation.
Perspective d’implémentation: Le diagramme est interprété comme décrivant une technologie spécifique et langage l’implémentation logicielle. Ainsi, si vous adoptez une perspective d’implémentation, vous êtes en train d’étudier l’implémentation logicielle.

Essayez de dessiner un diagramme de classes UML maintenant

Vous avez appris ce qu’est un diagramme de classes et comment le dessiner. Il est temps de dessiner le vôtre. Obtenez Visual Paradigm Community Edition, un outil UML gratuit, et créez votre diagramme de classes à l’aide de l’outil gratuit de diagramme de classes. Il est facile à utiliser et intuitif.
Téléchargez gratuitement

 

Leave a Reply