Vous êtes sur la page 1sur 10

Ch3 : Diagrammes des classes

Introduction
Le diagramme de classe est le diagramme le plus important de la modélisation orientée
objet. Il décrit la vue statique du système (pas de facteur temporel).

Un système est composé d'objets qui interagissent entre eux pour réaliser les cas
d'utilisation.

Le diagramme de classe permet de représenter la structure interne du système en


fournissant une représentation abstraite des objet 3s dont le système est composé et des
liens entre eux.

1. Notion d’objet

Dans la modélisation orientée objet, le système est décrit par un ensemble d’objets
pouvant communiquer entre eux. Un objet est alors une entité concrète ou abstraite du
système.

Chaque objet possède des propriétés (ou attributs) et des opérations.

Nom de l’objet

MonLivretA : Compte

Attributs Numéro =12563


Devise =DTN
Solde =5645,23 Etat (valeurs des attributs)
Déposer (montant :float)
Opérations Retirer (montant :float)
Solde() : float
a- Attribut

Un attribut est une propriété élémentaire d’un objet. Pour chaque objet, l’attribut prend
une valeur.

b- Opération

Une opération est une fonction applicable à un objet. Une opération permet de décrire le
comportement d’un objet.

2. Notion de classe

Une classe est un regroupement d'objets de même nature (mêmes attributs + mêmes
opérations). On dit que chaque objet est une instance de la classe.

Exemple :

1
Nom de la classe
MonCompteTN : Compte
attributs
Numéro =12563
Devise =DTN Compte
Solde =5645,23
Déposer (montant :float) Instances de Numéro : int
Retirer (montant :float) Devise :devise
Solde() : float Solde :float
Déposer (montant :float)
Retirer (montant :float)
MonCompteFR : Compte Solde() : float
Numéro =58465
Devise =Euro
Solde =14200.02
Déposer (montant :float) opérations
Retirer (montant :float)
+ Solde() : float

3. Associations entre classes

Multiplicité
Personne Compte
Nom :string Numéro :int
1..2
Prénom : string * Devise :devise
Adresse :string propriétaire Solde :float
Naissance :date soncomptes Déposer (montant :float)
possède
ouvrirCompte (init :float) Retirer (montant :float)
Solde() : float
Rôles Nom de l’association

Une association permet de décrire un lien statique bidirectionnel entre classes. Une
association indique donc qu'il peut y avoir des liens entre des instances des classes associées.
Les liens peuvent être étiquetés par des verbes ou expressions permettant d’en saisir le sens.

Le rôle est un rôle spécifique d’une classe dans l’association

Il est possible d’exprimer les cardinalités sur le lien d’association. La multiplicité contraint le
nombre d'objets liés par l'association.

Attention : Pas d'attribut dont le type est une classe du diagramme

Compte
Numéro :int
Devise :devise
Solde :float
Propriétaire : personne
Déposer (montant :float)
Retirer (montant :float)

2
Solde() : float

Mais plutôt une association vers cette classe

Personne Compte
Nom :string Numéro :int
Prénom : string 1 possède * Devise :devise
Adresse :string Solde :float
Propriétaire Déposer (montant :float)
Naissance :date
ouvrirCompte (init :float) Retirer (montant :float)
Solde() : float

a- Cardinalité

Nombre d'objets de la classe B associés à un objet de la classe A.

Ou cardinalité x peut être :

n : exactement n

n,m,p : Exactement n ou m ou p
n..m : Entre n et m
n..* : Au moins n
* :Plusieurs (0 ou plus)

c- Association Multiple

Deux classes peuvent etre reliées par une ou plusieurs associations.

b- Association Réflexive

3
4. Navigablité

Orientation d'une association

● Restreint l'accessibilité des objets

● Depuis un A, on a accès aux objets de B qui lui sont associés, mais pas l'inverse

Exemple1 : liste chainée

Par défaut, les associations sont navigables dans les deux sens (pas de flèche).

Exemple 2 :

Personne Copie d’examen


Nom 1 produit 1..5 Numéro copie
Prénom note

A une personne sont associées ses copies d’examen mais l’inverse n’est pas possible
(retrouver directement l’auteur de la copie d’examen, notamment avant la correction de la
copie).

5. Classe-association

Une classe d’association permet de paramétrer une association entre deux classes par une
classe afin de décrire soit des attributs, soit des opérations propres à l’association. Elle est liée
à l’association par un trait en pointillé.

Équivalence en termes de classes et d'associations


4
6. Associations n-aires
C’est une association reliant plus de deux classes. Elle se représente en utilisant un losange
permettant de relier toutes les classes concernées.
Exemple d’association ternaire :,
Projet
Code projet

*
Personne Entreprise
nom * * Nom entreprise
Prenom

Affectation
Date début
Date fin
Une classe-association Affectation peut etre ajoutée pour décrire les attributs (date début, date
fin) propres à l’association de dimention 3. Cette classe-association est reliée par un trait en
pointillé au losange de connexion.

7. Agrégation
- Une agrégation est une association particulière entre classes :
 Dissymétrique : une classe prédominante sur l'autre
 Relation de type composant-composite
- Il existe deux types d'agrégation :
 Agrégation faible
 Composition

a- Agrégation faible
Appelée aussi Agrégation par référence
- Le composite fait référence à ses composants
- La création ou destruction du composite est indépendante de la création ou destruction de
ses composants
- Un objet peut faire partie de plusieurs composites à la fois
Exemple
- Une pièce est composée de murs
- Un mur peut être commun à plusieurs pièces

5
b- Composition
Appelée aussi Agrégation par valeur
- Le composite contient ses composants
-La création ou destruction du composite entraîne la création ou destruction de ses
composants
- Un objet ne fait partie que d'un composite à la fois
Exemple
- Un mur est composé de briques
- Une brique n'appartient qu'à un mur

8. Hiérarchie de classes

Principe : Regrouper les classes partageant des attributs et des opérations et les organiser en
arborescence

- Spécialisation : raffinement d'une classe en une sous-classe

- Généralisation : abstraction d'un ensemble de classes en super-classe

Compte
Numéro :int
Devise :devise Super-classe
Solde :float
Spécialisation Déposer (montant :float)
Retirer (montant :float)
Solde() : float généralisation

CompteEpargne
CompteCourant Numéro :int
Numéro :int Devise :devise
Devise :devise Solde :float
Solde :float plafond : float
Sous-classes
découvertAutorisé : float taux : float
fraisDécouvert : float Déposer (montant :float)
Déposer (montant :float) Retirer (montant :float)
Retirer (montant :float) Solde() : float
Solde() : float calculerIntérêts() : float

6
Héritage : Construction d'une classe à partir d'une classe plus haute dans la hiérarchie (partage
des attributs, opérations, contraintes...)

Exemple : les classes CompteCourant et CompteEpargne sont des classes héritant de la classe
Compte.

9. Classe abstraite

C’est une classe sans instance car certaines opérations sont non définies.

Exemples

1. La classe « compte » est une classe abstraite càd une Classe sans instance.
Elle représente seulement une base pour les classes héritées.
2. On ne peut pas calculer la surface d'une forme sans savoir de quelle forme il
s'agit

10. Polymorphisme

Définition :

 Poly : plusieurs
 Morphisme : Forme

C’est la définition d'une opération abstraite dans les classes héritant d'une classe abstraite

Opération polymorphe : Opération définie dans différentes sous-classes mais opération


spécifique à la sous-classe

Exemple1 :

Surface(x :float,y :float) :float surface(r: float):float

7
Exemple2 :

Véhicule

seDéplacer()

Véhicule Véhicule Véhicule

seDéplacer() seDéplacer() seDéplacer()

seDéplacer() seDéplacer() seDéplacer()

{print(« sur les rails »)} {print(« sur la route »)} {print(« sur l’eau »)}

11. Les interfaces

- Le rôle d’une interface est de regrouper un ensemble d’opérations assurant un service


cohérent offert par une classe Le concept d’interface est essentiellement utilisé pour classer
les opérations en catégories sans préciser la manière dont elles sont implémentées..
- Une interface est définie comme une classe, avec les mêmes compartiments. On ajoute le
stéréotype << interface >> avant le nom de l’interface.
- Elle n’est pas une classe, ne peut pas servir à créer des objets.
- Toutes les opérations sont abstraites

Représentation :

 On utilise une relation de type réalisation entre une interface et une classe qui
l’implémente (flèche d’héritage en pointillés).

 On utilise une relation de type utilisation entre une interface et une classe qui l’utilise
(flèche simple en pointillés).

 Les classes implémentant une interface doivent implémenter toutes les opérations décrites
dans l’interface.

Exemple :

8
12. Notations avancées

Les notations complètes des attributs, et opérations d’une classe sont les suivantes :

 Attributs :

[visibilité] [dérivé] nomAttribut [: type] [= valeur par défaut]

 Opérations

[visibilité] nomOpération [(liste Paramètres)] [: typeRetour]

Paramètre

[direction] nom : type [= valeur par défaut]

Direction

in | out | inout (par défaut : in)

Visibilité

+ : public, accessible partout, à toutes les classes

# : protégé, accessible uniquement aux sous-classes

- : privé, accessible uniquement dans la classe

* Il n’y a pas de visibilité par défaut en UML ; l’absence de visibilité n’indique ni un

attribut public ni privé, mais seulement que cette information n’est pas fournie.

* Attribut dérivé : Peut être calculé à tout moment à partir des autres attributs

9
Evaluation : Chercher l’erreur :

1.
Eviter les associations redondantes :
- Le vol d’un bagage est obtenu à partir du passager
- Les bagages d’un vol sont obtenus à partir des passagers
Possibilité de spécifier que l’association Bagage-Vol est dérivée...

2.
Navigabilité : En l’absence de réservations, on ne peut accéder ni aux chambres ni aux clients

Modéliser ces phrases :

 Une école dispose d’au moins une salle de cours. Dans chaque salle, on trouve des
chaises et un vidéo-projecteur fixé au plafond.

 Compléter l’exemple précédent en indiquant qu’une salle est composée d’une seule
porte et de plusieurs fenêtres.

10

Vous aimerez peut-être aussi