Chapitre 4
Modélisation selon l’axe statique:
Diagramme de classes et
d’objets
1
• Introduction au Génie Logiciel (GL)
• Définitions
• Qualités d’un logiciel
• Crise du logiciel
• Processus de développement
• Modélisation orientée objet
• Concepts du paradigme orientée objet
• Présentation du langage UML
• Types de diagrammes UML
• Modélisation fonctionnelle
• Diagramme de cas d’utilisation
• Modélisation statique
• Diagramme de classe
• Diagramme d’objet
• Modélisation dynamique
• Diagramme d’activité
• Diagramme de séquence
• …
2
…
Rappel sur les diagrammes UML
Axe de Modélisation Statique
(ce que le système EST)
Diagramme de Classes
Diagramme d’Objets
Diagramme de Composants
Diagramme de Déploiement
Fonctionnel Dynamique
(ce que le système FAIT) (Comment le système EVOLUE)
Diagramme d'Etats-Transitions
Diagramme de cas d’utilisation Diagramme d'Activité
Diagramme de Séquence
Diagramme de Collaboration
3
Diagramme de Classes
• Représentation de la structure interne du logiciel et
des liens entre les entités qui le composent
• Utilisé principalement en phase de Conception
DCL = Classes + Relations
4
Diagramme de Classes
• Classe: Famille d’objets de même nature (mêmes
caractéristiques & même comportement)
Nom de la classe
attributs
opérations
Possibilité d’ajouter des compartiments (e.g., Exceptions)
5
Diagramme de classes
Plusieurs niveaux de détails
Possibilité d’omettre attributs et/ou opérations
6
• Déclaration des attributs d’une classe:
<visibilité> [/] <nom attribut> :
<type> [ '['<multiplicité>']' [{<contrainte>}] ] [ = <valeur init> ]
<Visibilité> : + (public), # (protégé), ∼ ou rien (package), - (privé)
[/] : précède un attribut dérivé
<nom_attribut> : nom de l’attribut
<type>: nom de classe, nom d’interface, type de donnée
<multiplicité>: nombre de valeurs que l’attribut peut contenir (Par défaut: 1,1 i.e. 1 et 1
seule valeur). Exp: matieresL2[1,7] peut indiquer de 1 à 7 noms de matières.
<contrainte> : préciser si les valeurs sont ordonnées ({ordered}) ou pas ({list})
maClasse
Remarque:
Attribut souligné = Variable de classe -compteur: int = 0
+date_naissance: date
#salaire: float
+/moyenne: float
+nbrPersonne: int
7
Exemples de classes
Personne
Nom : String
Adresse: String
Date_naissance: Date
Email: String
/ Age: Integer
Age = Date actuelle – Date naissance
8
Déclaration des opérations d’une classe
<visib> <nom méth> ([<param 1>, ... , <param N>]) :
[<type renvoyé>] [{<propriétés>}]
• <visibilité> : + (public), # (protégé), ∼ ou rien (package), - (privé)
• <nom méthode> : nom de l’opération
• <param_1>, ... , <param_N>: liste des paramètres
• <type renvoyé>: type du résultat renvoyé
• <propriétés>: contraintes, exceptions, préconditions…
Remarque:
Opération soulignée = méthode de classe
Possibilité de surcharger une opération : même nom mais paramètres différents
Syntaxe de définition d’un paramètre
[<direction>] <nom param>:<type> ['['<multipl>']'] [=<val par déf>]
Compte
in, out, inout
-solde: float
in (par défaut): passage par valeur (modifications du +créditer(m:float)
param ne sont pas disponibles pour l'appelant) +débiter(m:float)
out : pas de valeur d'entrée et la valeur finale est +getSolde(): float
disponible pour l'appelant +fixeTauxTVA(float) 9
Classe/Méthode abstraite
Méthode abstraite on connaît sa
signature mais pas la manière dont elle peut être
réalisée Ecrire son nom en italique
ou rajouter le stéréotype
Classe abstraite peut contenir des <<abstract>>
méthodes abstraites ou lorsqu’une classe parent
contient une méthode abstraite non encore
implémentée
-Impossible d’instancier une classe abstraite
-Pour les interfaces <<Interface>>
10
Correspondances UML – Code
11
Correspondances UML - Code
12
Relations entre classes: Association
• Association binaire
• Rôle: Nomme l’extrémité d’une association, permet d’accéder aux
objets liés par l’association à un objet donné
• Multiplicité: Contraint le nombre d’objets liés par l’association
13
Relations entre classes: Association
• Multiplicité ou cardinalité: Nombre d’objets de la classe B
associés à un objet de la classe A
14
Relations entre classes: Association
Association réflexive
Association multiple
15
Relations entre classes: Association
• Association n-aire = reliant plus de deux classes
NB. Les associations n-aires ne sont pas recommandées, il est préférable
d’utiliser des classes-association et relations binaires
16
Relations entre classes: Association
Classe association
• Se connecte à deux ou plusieurs classes
• Peut posséder des attributs et des opérations
17
Relations entre classes: Association
Classe association
18
Relations entre classes: Association
Classe association
Equivalence
19
Relations entre classes: Association
Classe association
Equivalence
20
Relations entre classes: Héritage
• Factoriser les propriétés/opérations communes entre classes
• Organiser en arborescence (super classe et sous-classes)
• Classe spécialisée comporte des attributs/méthodes supplémentaires
super-classes
spécialisation généralisation
sous-classes
21
L’héritage multiple est possible en UML (une classe
possède plusieurs classes parents)
Véhicule
Bateau Avion
Hydravion
22
Relations entre classes: Agrégation/Composition
• Objectif Eviter la répétition des associations « Contient »
• Indicateurs: est une partie de, se compose, contient, comporte, inclut,
comprend …
• « se compose/est composé de » n’implique pas forcément une
composition
• Composition = Agrégation forte
23
-La destruction de l’objet composé
entraine celle des composants
-L’objet composant ne peut pas exister
(n’est pas utile) sans l’objet composite
-Un objet appartient à au plus un
composite à la fois
Ou 0..1
-A un instant donné, un objet agrégé peut
appartenir à plusieurs agrégats
- Création/destruction de l’agrégat est
indépendante de la création/destruction
de ses éléments
24
Agrégation/Composition
• Est-ce que la destruction de l'objet composite implique nécessairement la
destruction des objets composants (les composants n'ont pas d'autonomie
vis-à-vis des composites) ?
• Lorsque l'on copie le composite, doit-on aussi copier les composants ?
Si on répond par OUI à ces deux questions Composition
25
26
27
28
29
Passage vers le relationnel
Association 1 à * Mettre une référence dans la table placée dans l’extrémité *
Association * à * (avec ou sans classe association) Création d’une nouvelle table
qui a une clé composée + les attributs de l’éventuelle classe association
Passage vers le relationnel
Fusionner les deux classes dans une seule table
Association 1 à 1
Garder deux tables en référençant une par l’autre
Passage vers le relationnel
Composition/Agrégation : Mettre une référence dans les classes composantes
Passage vers le relationnel
-Les classes filles n’ont pas beaucoup d’attributs Garder la classe mère
et remplacer les classes filles par un attribut
Héritage
-Les classes filles ont beaucoup d’attributs Garder les classes filles en
dupliquant les attributs
Elaboration d’un DCL
• Identifier les classes
• Etablir les associations
• Définir les attributs/méthodes
• Simplifier et optimiser le modèle (classes
redondantes, associations ternaires, héritages…)
34
Diagramme d’objet (DOB)
• Objets (instances de classes) + Liens (instances d’associations)
• Liens : nom souligné et pas de multiplicité
-Donner une vue sur l’état du système à un moment donné
Objectifs
-Illustrer un exemple du diagramme de classe
Diagramme évoluant avec l’exécution du logiciel :
• Création/suppression des objets
• Modification de l’état des objets (valeurs des attributs)
• Modification des relations entre objets
35
Représentation des objets
• L’objet est représenté par un rectangle, contenant le nom de
l’objet suivi du signe « : » et du nom de sa classe, le tout
étant souligné d’un trait
• Il est également possible de représenter un objet sans lui
donner de nom
• On peut également faire apparaître des valeurs d’attributs
• Le compartiment des opérations n’est pas utile
• Groupes d’objets instances d’une même classe:
36
Diagramme d’objets (DOB)
• Le DCL modélise les règles et le DOB modélise des faits.
DCL DOB
37
Représentation des liens entre objets
DCL DOB
38
Cohérence DCL / DOB
39
Cohérence DCL / DOB
40
Exemples
Considérons les phrases suivantes :
1. Une personne peut avoir plusieurs voitures.
2. Un répertoire contient des fichiers.
3. Une pièce contient des murs.
4. Les imprimantes et claviers sont des périphériques
d’entrée/sortie.
Déterminez la relation appropriée (généralisation, composition,
agrégation ou association) dans chaque phrase.
41