Académique Documents
Professionnel Documents
Culture Documents
A. BOUAMARI
bouamari@univ-setif.dz
4.1 Introduction
Les diagrammes de structures (voir chapitre 2 section 4.3) peuvent être répartis en
présent chapitre décrit les diagrammes de classes et d’objets qui sont utilisés pour la
déploiement et de packages sont, quant à eux, utilisés pour la modélisation des aspects liés
Les diagrammes de classes et d’objets définissent quels sont les éléments impliqués
dans la réalisation des fonctionnalités du système et quelles sont leurs caractéristiques. Ces
éléments et les relations entre eux sont statiques, c'est-à-dire qu’ils ne changent pas au fil
du temps. Par exemple, les étudiants possèdent un nom et un numéro et suivent différentes
matières.
diagrammes visualise les instances de classes (i.e. les objets concrets) et les liens qui sont
(i.e. des valeurs concrètes affectées à ses attributs) et un comportement (i.e. les opérations
1
Figure 1 : Diagramme d’objets
objets étudiants : ab, am et fa caractérisés chacun par numéro d’inscription, nom, prénom et
date de naissance. Le système contient également trois cours : gl (Génie logiciel), se2
et le cours db dans la salle sc2. La salle n’est, cependant, pas précisée dans le cas du cours
Le diagramme de classes définit une abstraction de haut niveau pour caractériser les
différents objets du système et les liens entre ces objets. Le diagramme est utilisé dans les
ou de documentation.
2
Le niveau de détails ou d'abstraction du diagramme de classes est différent dans
détails d’implémentation. Dans la phase de conception, le modèle d’analyse est étendu aux
4.3.1 Classes
Une classe constitue le schéma de réalisation d'un ensemble d'objets similaires dans
le domaine d’étude. Les classes peuvent caractériser des éléments matériels (e.g. étudiants,
salle de cours) ou des éléments immatériels et des concepts abstraits (e.g. cours, séance,
groupes d’étudiants). Dans les langages de programmation orientés objet, les applications
classe Java.
3
Les caractéristiques pertinentes des instances d'une classe sont décrites à travers la
Les attributs permettent de stocker des informations communes pour toutes les instances
d’une classe, mais qui ont généralement des valeurs spécifiques pour chacune de ces
instances. Les opérations permettent aux objets de communiquer entre eux, d'agir et de
réagir.
4.3.2 Attributs
Un attribut possède un nom et peut avoir un type, une multiplicité, une valeur par
Les types d'attributs possibles comprennent les types de données primitifs (e.g.
Integer, String), les types de données composites (e.g. Date, Enumération) ou des classes
définies par l'utilisateur. Il est aussi possible de définir des valeurs par défaut pour les
attributs afin que le système puisse les utiliser dans le cas où les valeurs de ces attributs
Par exemple, la propriété {readOnly} signifie que la valeur de l'attribut ne peut pas être
La multiplicité d'un attribut indique le nombre de valeurs qu’un attribut peut avoir
ce qui permet de définir des ensembles ; il peut s’agir alors d’ensemble non-ordonnées et
représentée par un intervalle min..max entre crochets. S'il n'y a pas de limite supérieure
4
La spécification d'une barre oblique avant le nom d'un attribut indique que la valeur
de cet attribut est dérivée des autres attributs. Par exemple, l'âge d'une personne, qui peut
4.3.3 Opérations
Le diagramme de classe modélise uniquement les signatures des opérations que les
objets fournissent sans se préoccuper de la façon dont ces opérations sont implémentées.
En fait, des diagrammes UML spécifiques sont utilisés pour décrire le comportement des
Les opérations sont caractérisées par leur nom, leurs paramètres, le type de leur
Les rapports les plus courants entre classes peuvent avoir la forme de relations de
4.3.4.1 Dépendance
La relation de dépendance exprime le fait qu’un objet client demande des services à
un objet serveur ; il est donc dépendant de cet objet. Ainsi, une classe cliente dépend d'une
autre classe serveur si ses méthodes utilisent ou manipulent des objets de cette classe. Dans
l’exemple d’une application e-commerce (figure 3), la classe Panier dépend de la classe
Produit car la classe Panier utilise la classe Produit comme paramètre de l’opération d'ajout
de nouvelles lignes produits (items). La dépendance est représentée par une flèche en
5
Figure 3 : Représentation UML de relation de dépendance
4.3.4.2 Associations
Une association entre classes représente une abstraction des liens - d’une même
sémantique - qui existent entre objets de ces classes. Les associations décrivent les classes
peuvent ainsi accéder aux attributs et opérations des autres classes si leurs attributs et
Si l’association est dirigée (i.e. une flèche qui pointe sur l’une des deux classes), la
navigation unidirectionnelle d'un objet vers son objet partenaire est alors possible. La
navigabilité, ici, indique que l’objet connaît ses objets partenaires et peut donc accéder à
leurs attributs et opérations visibles. Une association bidirectionnelle permet d’avoir une
navigabilité dans les deux directions. Les langages de programmation objet implémentent
les associations par le biais de références aux objets associés. Une association peut être
6
Figure 4 : Représentations UML d’association et code Java correspondant
Les associations sont généralement caractérisées par une décoration avec sens de
lecture, des multiplicités et des rôles. Elles peuvent être binaires ou n-aires et peuvent
composition. Une association peut être porteuse d’information ; elle est définie alors par
une classe-association.
4.3.4.3 Héritage
L’héritage exprime une propagation automatique des données entre une classe
générale et une classe spéciale. La classe spéciale hérite de toutes les caractéristiques de la
UML définit de façon détaillée la syntaxe et la sémantique des éléments modèles des
diagrammes de classes mais ne décrit pas la manière dont ces diagrammes sont construits.
Des directives générales doivent être adoptées pour la création progressive de diagrammes
7
4.4.1 Classes d’analyse
(i.e. les principes SOLID), à savoir SRP (Single Responsibility Principle) : une classe ne doit
Le modèle (entité) contient les données pertinentes du domaine, met en œuvre les
opérations nécessaires pour accéder et modifier ces données et notifie les vues associées en
cas de modification de ce contenu. Un modèle peut être associé à plusieurs vues ; chaque
vue montre une partie ou un aspect différent du contenu global du modèle et sert comme
description du système, des classes entités (i.e. classes de données), des attributs et des
8
Les descriptions des interactions associées aux cas d’utilisation sont ensuite utilisées
pour l’identification (i) des classes de vue (i.e. affichage ou interface utilisateur), (ii) des
classes de contrôle (i.e. logique des traitements) et (iii) des opérations à mettre en œuvre.
Dans un premier temps, le modèle d’analyse établit une représentation des éléments
Ces éléments de structure représentent les concepts du domaine, les attributs des concepts
Dans une description textuelle du domaine, les noms qui font référence aux données
pertinentes du système tels que étudiant, enseignant, cours, etc. indiquent généralement
des classes. En revanche, les noms qui font référence aux acteurs externes et aux valeurs
tels que administrateur, Ahmed ou bases de données et les expressions qui indiquent les
Les opérations et les fonctions sont repérées souvent par des verbes qui expriment
des suites d’actions à exécuter qui possède un événement déclencheur et qui produisent un
résultat.
Les noms et les expressions nominales sont utilisés alors pour définir la liste des
classes candidates. Cette liste est filtrée puis épurée afin de retenir uniquement les classes
entités ; les concepts faisant référence aux attributs, valeurs d’attributs, instances, acteurs,
associations ou opérations sont tous éliminés de cette liste. La démarche d’analyse procède
ensuite à l’identification des attributs des classes entités et des associations possibles entre
ces classes.
9
Par exemple, dans le système de location de voitures, les assistants peuvent effectuer
des réservations de modèles de voitures (CarModel) pour des clients membres (Member).
Les clients membres sont identifiés par id et les modèles de voitures par name et price. Un
membre peut réserver plusieurs modèles de voitures et un modèle de voitures peut être
réservé par plusieurs membres. Une réservation (Reservation) est caractérisée par number
et date. La table 1 établit la liste des classes candidates et les classes entités résultantes.
Les attributs sont ensuite systématiquement identifiés pour chacune des classes
entités. Les associations sont repérées à partir des expressions qui indiquent des rapports
entre classes. Par exemple, l’expression "un membre peut réserver plusieurs modèles de
voitures" détermine une association entre les classes Member et CarModel. Le diagramme
de la figure 6 montre les classes entités, leurs attributs et l’association correspondants à cet
exemple.
10
Figure 6 : diagramme de classes initial
Les interactions associées aux cas d’utilisation sont modélisées avec des diagrammes
les différents objets impliqués dans l’interaction, leurs types et les messages échangés entre
ces objets pour la réalisation d’un cas d’utilisation. Le diagramme de classes est étendu au
fur et à mesure aux nouveaux éléments (classes de vue, classes de contrôle, opérations) qui
peuvent être identifiés dans la réalisation des différents cas d’utilisation du système.
11
Le diagramme de la figure 7 montre la réalisation du cas d’utilisation "consulter liste
liste réservations".
de la solution logicielle tenant compte des choix techniques tels que le type d’application
(e.g. rich client, web, mobile), le type de déploiement (e.g. client-serveur) les technologies
adoptées (e.g. CGI avec servlets), les fonctionnalités système additionnelles (e.g. logging,
permettre alors l’identification des classes additionnelles répondant à ces choix techniques
12