Chapitre 5 - Modéliser Les Données Du Projet Par Un Diagramme de Classes - Etd
Chapitre 5 - Modéliser Les Données Du Projet Par Un Diagramme de Classes - Etd
Chapitre 5 - Modéliser Les Données Du Projet Par Un Diagramme de Classes - Etd
10 heures
CHAPITRE 5
Modéliser les données du projet par un
diagramme de classes
Diagramme de classes
▪ La modélisation par les cas d’utilisation (comme expliqué au chapitre 4) donne des descriptions fonctionnelles du système
futur du point de vue des acteurs, avec une description dynamique des scénarios d’exécution.
▪ La conception objet demande principalement une description structurelle, statique, du système à réaliser sous forme d’un
ensemble de classes logicielles, éventuellement regroupées en packages.
▪ Le diagramme de classes est considéré comme le plus important de la modélisation orientée objet, il est le seul obligatoire
lors d'une telle modélisation.
▪ Il permet de fournir une représentation abstraite des objets du système qui vont interagir pour réaliser les cas
d'utilisation. Il est important de noter qu'un même objet peut très bien intervenir dans la réalisation de plusieurs cas
d'utilisation.
▪ C’est une vue statique, car on ne tient pas compte du facteur temporel dans le comportement du système.
▪ Le diagramme de classes permet de modéliser les classes du système et leurs relations indépendamment d'un langage de
programmation particulier.
PARTIE 1
données, la sécurité,
etc.
Encapsulation
▪ L'encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d'une structure (vue
interne de l’objet) en empêchant l'accès aux données par un autre moyen que les services proposés.
▪ Ces services accessibles aux utilisateurs de l'objet définissent ce que l'on appelle l'interface de l'objet (vue externe de
l’objet).
▪ L'encapsulation permet de garantir l'intégrité des données contenues dans l'objet.
PARTIE 1
Visibilité
▪ L'encapsulation permet de définir des niveaux de visibilité des éléments d'un conteneur.
▪ La visibilité déclare la possibilité pour un élément de modélisation de référencer un élément qui se trouve dans un espace de
noms différent de celui de l'élément qui établit la référence.
▪ Elle fait partie de la relation entre un élément et le conteneur qui l'héberge
▪ Le conteneur peut être :
• un paquetage, • élément non encapsulé visible par tous.
public
• une classe
+
• ou un autre espace de noms.
▪ Il existe quatre visibilités prédéfinies : • élément encapsulé visible seulement dans la classe.
protected
#
• élément encapsulé visible dans la classe et dans les
private sous-classes .
PARTIE 1
-
• élément encapsulé visible dans les classes du même
package paquetage.
~
Visibilité private
Visibilité public
Remarque
• Dans une classe, le marqueur de visibilité se situe au niveau de chacune de ses caractéristiques (attributs et
opérations). Il permet d'indiquer si une autre classe peut y accéder.
Démonstration de la visibilité
PARTIE 1
▪ Exemple : L’attribut sous-titre est optionnel : tous les livres n’ont pas de sous-titre, alors qu’ils ont un titre, une langue, etc.
UML indique ce caractère optionnel en ajoutant une multiplicité [0..1] derrière l’attribut
Livre
- titre : String
- sous-titre : String [0..1]
- ISBN : int
- langue : String
PARTIE 1
Figure 26 :
Attributs d’une classe Livre avec multiplicité
Méthodes d’instance
▪ Dans une classe, une opération (même nom et mêmes types de paramètres) doit être unique.
▪ Quand le nom d'une opération apparaît plusieurs fois avec des paramètres différents, on dit que l'opération est surchargée
▪ Syntaxe de déclaration d’une méthode:
de données prédéfini
• Les propriétés (<propriétés>) correspondent à des contraintes ou à des informations
complémentaires comme les exceptions, les pré-conditions, les post-conditions ou encore
l’indication qu’une méthode est abstraite (abstract), etc.
• in : paramètre d'entrée passé par valeur. Les modifications du paramètre ne sont pas
PARTIE 1
▪ La méthode getTime(heures : int, minutes : int) : void → L’appelant de la méthode veut récupérer les valeurs
des attributs heures et minutes.
▪ La direction des paramètres sera alors out : getTime(out heures : int, out minutes : int) : void
▪ Un attribut de classe n’appartient pas à un objet en particulier mais à toute la classe (il n’est pas instancié avec l’objet).
▪ Il garde une valeur unique et partagée par toutes les instances de la classe.
▪ Une méthode de classe ne peut manipuler que des attributs statiques et ses propres paramètres
▪ Graphiquement, un attribut ou une méthode de classe est représenté par un nom souligné.
PARTIE 1
Attributs dérivés
▪ Un attribut dérivé est un attribut dont la valeur peut être calculée à partir d’autres informations disponibles dans le
modèle, par exemple d’autres attributs de la même classe, ou de classes en association.
▪ Cet attribut, qui pourrait donc être considéré comme redondant, est néanmoins gardé par l’analyste s’il correspond à un
concept important aux yeux de l’expert métier.
▪ Il est noté en UML avec un « / » avant son nom et suivi d’une contrainte permettant de le calculer
PARTIE 1
Cardinalité
▪ La multiplicité indique le nombre de valeur que l’attribut peut contenir. L’attribut est souvent un tableau de valeurs statique
ou dynamique (collection).
▪ La multiplicité se note entre crochets [] après le type de valeur que contient l’attribut.
▪ On peut préciser la multiplicité également pour un paramètre de méthode
Cardinalité Signification
au niveau de la signature
0..1 Zéro ou une fois
▪Exemple : Une station météo doit relever la 1..1 Une et une seule fois
température à intervalle de temps régulier. 0..* (ou *) De zéro à plusieurs fois
Elle doit pouvoir stocker 100 relevés.
1..* De une à plusieurs fois
m..n Entre m et n fois
Constructeurs et destructeurs
▪ Les stéréotypes peuvent être utilisés pour identifier des opérations particulières comme :
• les constructeurs : stéréotype « create »
• et le destructeur : stéréotype « destroy ».
▪ Dans UML, les constructeurs et les destructeurs sont des méthodes spéciales qui ont le même nom que la classe (Formalisme
Java)
Constructeur
Destructeur
PARTIE 1
Remarque
• Un stéréotype est un mot-clé inventé par les utilisateurs.
• Il existe des stéréotypes définis comme <<include>>, <<create>>, etc.
• Mais on peut créer notre propre mot-clé
Modèles de classe
▪ Les modèles (templates) sont une fonctionnalité avancée de l’orientée objet.
▪ Un modèle est une classe paramétrée qui permet ainsi de choisir le type des attributs au besoin suivant le paramètre précisé,
dans le coin supérieur droit dans un rectangle dont les côtés sont en pointillés.
▪ Ces modèles de classes sont particulièrement utiles pour toutes les collections qui stockent des valeurs d’un même type, soit
sous forme de tableaux dynamiques ou de listes.
▪ Exemple : La classe vector
PARTIE 1
Relation de dépendance
▪ La dépendance est la forme la plus faible de relation entre classes.
▪ Une dépendance entre deux classes autorise simplement une classe à utiliser des
objets d’une autre classe
▪ Il s’agit d’une relation transitoire, au sens où la première interagit brièvement avec
la seconde sans conserver à terme de relation avec elle (liaison ponctuelle).
▪ La dépendance Notation UML : représentée par un trait discontinu orienté, reliant
les deux classes. La dépendance est souvent stéréotypée par <<use>> (<<utilise
un>>) <<use>>
• Une classe utilise un objet d'une autre classe comme argument dans la signature d’une
méthode
PARTIE 1
▪ Par contre, l’association est une relation plus forte. Elle indique qu’une classe est en relation avec une autre pendant un
certain laps de temps.
▪ La ligne de vie des deux objets concernés ne sont cependant pas associés étroitement (un objet peut être détruit sans que
l’autre le soit nécessairement).
▪ Notation UML : L’association est représentée par un simple trait continu, reliant les deux classes. Le fait que deux instances
soient ainsi liées permet la navigation d’une instance vers l’autre, et vice versa (chaque classe possède un attribut qui fait
référence à l’autre classe).
▪ Il existe plusieurs types d’associations :
Associations
entre classes
PARTIE 1
▪ Une association binaire est matérialisée par un trait plein entre les classes,
▪ Si on veut implémenter l’association dans un langage orienté objet, chaque classe de l’association contiendra une référence
(ou un pointeur) de l'objet de la classe associée sous la forme d’un attribut.
▪ Exemple
PARTIE 1
Implémentation
Nom de Multiplicité
Rôle Navigabilité
l’association (cardinalité)
PARTIE 1
• Une personne travaille pour 1 entreprise et une entreprise emploie 1 ou plusieurs personnes
• L’extrémité du côté de la classe Produit est navigable : chaque objet commande contient une liste de produits.
PARTIE 1
▪ Une association réflexive (ou récursive) : lie une classe avec elle-même
PARTIE 1
▪ Exemple :
Une voiture est composée d’un châssis. Il ne peut pas être utilisé pour une autre voiture
PARTIE 1
▪ L’agrégation indique qu’un objet A possède un autre objet B, mais contrairement à la composition, l’objet B peut exister
indépendamment de l’objet A.
▪ La suppression de l’objet A n’entraîne pas la suppression de l’objet B.
▪ Elle se représente par un losange vide du coté de l’objet conteneur
▪ Exemple :
Une voiture est composée de 4 roues et un moteur. Ils peuvent être utilisés pour une autre voiture
PARTIE 1
Relation d’héritage
▪ Le mécanisme d’héritage permet de mettre en relation des classes ayant des caractéristiques communes (attributs et
méthodes) en respectant une certaine filiation.
▪ L’héritage indique qu’une classe B est une spécialisation d’une classe A. La classe B (appelé classe fille, classe dérivée ou
sous classe) hérite des attributs et des méthodes de la classe A (appelée classe mère, classe de base ou super classe).
▪ Notation : Il se représente par un triangle vide afin d’indiquer le sens de la généralisation (inverse de la spécialisation).
▪ Exemple :
PARTIE 1
Classe concrète
Classes abstraites
▪ Exemple :
Classe abstraite
PARTIE 1
Relation de réalisation
▪ Comme l'interface n'a qu'un objectif de spécification, au moins un élément d'implémentation (une classe) doit lui être
associée.
▪ La relation de réalisation permet de mettre en relation une classe avec son implémentation.
▪ Graphiquement, la réalisation se représente par un trait discontinu terminé par une flèche triangulaire parfois, mais pas
nécessairement, stéréotypé <<realize>>
Méthodes de
l’interface à définir
PARTIE 1
▪ Attention : Une classe qui réalise (implémente) une interface est dans l'obligation de définir les méthodes décrites par
l'interface (notion de contrat à respecter) comme lorsqu'une classe concrète redéfinie les méthodes abstraites héritées de
sa classe parente abstraite.