CHAPITRE 5: DIAGRAMME DE
CLASSE & DIAGRAMME OBJET
Dr. Rania MZID
DÉFINITION
Diagramme au cœur de l’analyse et de la conception
orientées objet
Abstraction
Abstraire = ignorer / cacher des caractéristiques non
significatives
Ne garder que les caractéristiques d’une classe
importantes pour l’intervenant
Encapsulation comme mécanisme d’abstraction
En analyse, montrer le « quoi », puis, en conception,
détailler en ajoutant les éléments pour le « comment »
Par exemple, l’analyse spécifie que tel élément est un
ensemble, la conception précise que c’est une liste doublement
chaînée
DÉFINITION/CLASSE
Structure statique d’un système
Classes (ensembles d’objets) (Encapsulation/Privé)
Relations entre classes (ensembles de liens entre objets)
Classe = famille d’objets ayant les mêmes
caractéristiques et le même comportement
Attributs = caractéristiques (données membres,
informations, propriétés)
Opérations = comportement (méthodes, fonctions,
procédures, messages, services)
PLUSIEURS NIVEAUX DE PRÉCISION
La notation UML autorise à représenter une classe
uniquement avec son nom, ou avec son nom et ses
attributs, ou avec son nom et ses opérations, ou encore
avec les trois caractéristiques
Simplifié
Uniquement le nom de la classe
NomClasse
Intermédiaire
Nom de la classe/les attributs
NomClasse
attribut1
attribut2
...
PLUSIEURS NIVEAUX DE PRÉCISION
Complet
Nom de la classe
Noms des attributs (types)
Noms des méthodes(type de retour)
Exemple
NomClasse
- attribut1 : type1
attribut2 : Type2 = valeur
+ operation1 (in arg1 : Type) :
tReturn
operation2 () : void
NOTATION
Attributs
<visibilité> <nomAttribut> : <type> = <valeur par défaut>
Opérations
<visibilité> <nomOpération> (listeParamètres) : <typeRetour>
Paramètres
<direction> <nom>: <type>
direction : in, out, inout
NomClasse
- attribut1 : type1
attribut2 : Type2 = valeur
+ operation1 (in arg1 : Type) : Integer
operation2 () : void
VISIBILITÉ
Visibilité = degré de protection
+ : publique (accessible à toutes les classes)
# : protégé (accessibles uniquement aux sous-classes)
- : privé (inaccessible à tout objet hors de la classe)
Pas de visibilité par défaut !
NomClasse
+ attributPublic : type1
attributProtégé : Type2
- attributPrivé : type3
+ operationPublique () : tReturn
operationProtegee () : void
- operationPrivee () : void
ATTRIBUTS ET OPÉRATIONS DE CLASSE
Par défaut, les attributs et les opérations sont dits des
attributs et des opérations d’instances. Pour un
attribut, cela signifie que chaque objet possède sa
propre valeur, c’est-à-dire son propre espace mémoire
pour mémoriser sa valeur
Un attribut de classe est un attribut partagé par
toutes les instances de la classe, c’est-à-dire l’espace
mémoire d’un attribut de classe est un espace partagé
par toutes les instances / objets de la classe n’ayant
pas leur propre espace mémoire de cet attribut de
classe.
ATTRIBUTS ET OPÉRATIONS DE CLASSE
Les attributs de classe existent indépendamment de la
présence d’instances de la classe. En conséquence, les
opérations de classe peuvent aussi être appelées
indépendamment de l’existence d’instances de la
classe.
Dans le diagramme de classe, les attributs et les
opérations de classe se différencient des attributs et
des opérations d’instance par le fait qu’ils sont
Advertisement
soulignés
ATTRIBUTS ET OPÉRATIONS DE CLASSE
Exemple : Le nombre total de participations est une caractéristique
des personnes (classe), donc applicable à Julien Dupont (objet)
getNbTotalParticipations()
L’opération
utilise
l’attribut nbTotalParticipations connue par la classe.
la
valeur
de
Cette opération peut être appliquée directement à la classe Personne et
bien sûr aussi aux objets / instances de Personne
ATTRIBUTS ET OPÉRATIONS DE CLASSE
Exemple (niveau code)
j.nom
j.nbTotalParticipations
Personne.nbTotalParticipations // attribut de classe
j.getNbTotalParticipations()
Personne.getNbTotalParticipations() //méthode de classe
ATTRIBUTS DÉRIVÉS
Attribut dérivé = attribut dépendant d’autres
attributs
Propriété redondante, dérivée d’autres propriétés
déjà allouées
Notation : /nomAttribut
C’est une indication importante pour ceux qui implantent
les attributs dérivés demandent un
l’application car
traitement spécial : leur valeur change à chaque fois que la
valeur des attributs à partir desquels ils sont calculés change.
Un attribut dérivé peut donner lieu à une opération
qui encapsulera le calcul effectué
ATTRIBUTS DÉRIVÉS
Exemple
Le prix TTC est un attribut dérivé car il est calculé á
partir du prixHT et la valeur du TVA
Commande
- numero : Integer
+ prixHT : UnlimitedNatural
/ prixTTC : UnlimitedNatural
- TVA : UnlimitedNatural = 19.6
Commande
- numero : Integer
+ prixHT : UnlimitedNatural
/ prixTTC : UnlimitedNatural
- TVA : UnlimitedNatural = 19.6
+ calculerPrixTTC () : UnlimitedNatural
LES RELATIONS ENTRE LES CLASSES
Association (binaire) = relation entre (deux) classes
L’association exprime une connexion sémantique entre
deux class
Une association possède un nom constitué
classiquement d’un verbe conjugué (la plupart du temps
au présent).(le sens de l’association est optionnel )
NOM DE RÔLE
Nom de rôle = indication sur la participation de
la classe à l’association
Le rôle décrit comment une classe voit une autre
classe à travers une association
Une association a par essence 2 rôles, selon le
sens dans lequel on la regarde
Usage : Forme nominale
Classe1
Rôle1
Classe2
Rôle2
NOM DE RÔLE
Exemples
MULTIPLICITÉ
Multiplicité = contrainte sur le nombre d’objets associés
Chaque extrémité d’une association possède une multiplicité
ou cardinalité
Chaque rôle porte une indication de multiplicité : nombre
d’objets de la classe considérée pouvant être liés à un objet de
l’autre classe
Classe1
Rôle1
m1
m2
Rôle2
Classe2
Valeur :
1
0..1
M .. N
*
0 .. *
1 .. *
signification :
Un et un seul
Zéro ou un
De M à N (entiers naturels)
De zéro à plusieurs
De zéro à plusieurs
D'un à plusieurs
MULTIPLICITÉ
Exemple : Une personne organise 0 ou plusieurs scrutins, et
un scrutin est organisé par 1 personne
« Un employeur emploie plusieurs personnes »
Advertisement
Société
SonEmployeur
1
*
SesEmployés
Personne
« Un employé est employé par un seul employeur »
NAVIGABILITÉ D’UNE ASSOCIATION
Qualité d’une association qui permet le passage d’une classe
vers une autre
Par défaut, on peut naviguer dans les 2 sens
Classe1
Classe2
Classe1
Classe2
On peut limiter la navigabilité (contrainte sur
l’implémentation). En général, ce choix se fait dans la phase
de conception
AGRÉGATION
Agrégation = une association exprimant un couplage
fort
A-UN, EST-UNE-PARTIE-DE
o Agrégation partagée
o La création (resp. la destruction) des composants est indépendante de
la création (resp. la destruction) du composite.
o Un objet peut faire partie de plusieurs composites à la fois
AGRÉGATION
Agrégation = une association exprimant un couplage
fort
A-UN, EST-UNE-PARTIE-DE
o Composition
o Attributs contenus physiquement par l’agrégat
o La création (resp. la destruction) du composite entraîne la création
(resp. la destruction) des composants.
o Un objet ne fait partie que d’un seul composite à la fois
CLASSE ASSOCIATION/ASSOCIATION N-AIRE
Classe association : Ensemble d’attributs qualifiant la relation
Etudiant
lesÉtudiants
*
*
Matière
SesMatières
Moyenne
Association N-aire : Contrainte qui exprime que les multiples
branches de l’association s’instancient simultanément en un
même lien
Enseignant
<< assoc. Ternaire>>
Cours
Début
Fin
Salle
Étudiant
GÉNÉRALISATION/SPÉCIALISATION
(HÉRITAGE)
Factorisation de caractéristiques (attributs et opérations)
EST-UN, EST-UNE-SORTE-DE
Mécanisme de réutilisation
La classe parente rassemble donc les attributs et les opérations
communes des classes initiales qui deviennent des classes
enfants
GÉNÉRALISATION/SPÉCIALISATION
(HÉRITAGE)
Généralisation
Spécialisation
CompteBancaire
-crédit : int
-débit : int
+déposer (argent :int)
+retirer (argent :int)
+donner-solde():int
CompteÉpargne
-taux :int
+calculerIntérêts():int
GÉNÉRALISATION/SPÉCIALISATION
(HÉRITAGE)
Propriétés de généralisation
Non-réflexive, non-symétrique, transitive
A
Impossible !!!
A
C
B
Impossible !!!
A
B
GÉNÉRALISATION/SPÉCIALISATION
(HÉRITAGE)
Héritage multiple
GÉNÉRALISATION/SPÉCIALISATION
(HÉRITAGE)
Héritage multiple (critique)
• Cette possibilité n’existe pas dans tous les langages de
programmation orientés objet (tel que Java)
• Utilisation déconseillée en modélisation car l’équipe de
développement peut choisir un langage ne proposant pas
cette possibilité.
• Dans ce cas, le diagramme de classes doit alors être
adapté, compliquant ainsi la traçabilité depuis le modèle
Advertisement
d’analyse vers l’implantation.
GÉNÉRALISATION/SPÉCIALISATION
(HÉRITAGE)
Généralisation et redéfinition d’opérations
Adapter le comportement aux classes dérivées
CLASSE ABSTRAITE
UML permet de spécifier une classe de manière
incomplète en ne définissant pas certaines opérations.
pas
classes dites abstraites, n’étant
complètement spécifiées, ne peuvent pas être
instanciées
Ces
Opération incomplète qui a besoin de sa classe fille
pour fournir une implémentation ; on écrit son nom en
italique.
CLASSE ABSTRAITE
Exemples
Forme
-Nom : String
+Calc-surface()
+Get-nom()
Un Média n’existe qu’en tant
que Livre, Texte, Graphique
ou Vidéo
INTERFACE
Une interface n’est pas une classe, c’est une liste
d’opérations
Une interface, comme une classe abstraite, ne
peut pas servir à créer un objet
Une interface exprime un savoir-faire, un contrat
à respecter par les classes qui « réalisent » cette
interface
La notion d’interface n’existent pas dans tous les
langage de programmation (tel que C++)
INTERFACE
Exemple :
INSTANCIATION
Instanciation = création d’un objet à partir d’une classe
Objet = instance de classe
Exemple
DIAGRAMME OBJET (DÉFINITION)
Ils modélisent
les
apparaissent sur les diagrammes de classe
instances d’éléments
qui
Ils montrent un ensemble d’objets et leurs relations à
un moment donné.
– Instances nommées
bouton1:Rectangle
– Instances anonymes
:Cercle
– Instances avec valeurs
d’attributs
bouton3:Rectangle
nom : string=“bouton-poussoir”
longueur : real=13.5
largeur : real=3.2
DIAGRAMME OBJET (LIEN)
o Une association est une abstraction des liens qui
existent entre les objets instances des classes
associées.
o Les associations se représentent de la même manière
que les liens
Université
une association
Étudiant
Mulhouse : Université
un lien
un lien
Pierre-Alain : Étudiant
Jean-Jacques : Étudiant
Strasbourg : Université
un lien
Laurence : Étudiant
DIAGRAMME OBJET (EXEMPLE)
Enseignant
enseigne
*
1..*
Matière
Dupont:Enseignant
Martin:Enseignant
Duval:Enseignant
Génie-Logiciel:Matière
Réseaux:Matière
Système:Matière
APPLICATION
Question : Donner les diagrammes (d’objets
et/ou de classes) correspondant aux situations
suivantes :
Un polygone est constitué de points. Un point
possède une abscisse et une ordonnée .
APPLICATION
La France est frontalière de l’Espagne.
APPLICATION
La France est frontalière de l’Espagne.
APPLICATION
Un client demande une réparation. Une réparation
Advertisement
est effectuée par un mécanicien. Elle nécessite des
compétences. Un mécanicien possède des
compétences.
APPLICATION
Mohamed Ali affronte George Foreman dans un
combat de boxe.
APPLICATION
Les cinémas sont composés de plusieurs salles qui
projettent des films à une heure déterminée
APPLICATION
Un fichier est accessible par un utilisateur selon
des droits d’accès
APPLICATION
Tous les jours, le facteur distribue des recommandés
dans une zone géographique qui lui est affectée. Les
habitants sont aussi associés à une zone géographique.
Les recommandés sont de deux sortes : lettres ou colis.
Comme plusieurs facteurs peuvent intervenir sur la
même zone, on souhaite, pour chaque recommandé, le
facteur qui l’a distribué, en plus du destinataire.
APPLICATION
APPLICATION
La classe Date a pour responsabilité de maintenir
les informations relatives a une date : le jour, le mois
et l'année.
La classe Date offre les services suivants:
isBefore évalue si la date est antérieure a une date
donnée.
isAfter évalue si la date précède a une date donnée.
parse permet d'initialiser les champs d'une date a partir
d'une chaine de caractères de la forme DD-MM-YYYY.
APPLICATION: CORRECTION
EXERCICE 1
Une
est
équipe d’informatique
composée de
développeurs. Elle travaille pour une entreprise et
possède un identifiant et un logo. Une entreprise est
caractérisée par un label et un site. On peut calculer
á tout moment le chiffre d’affaire de cette entreprise.
Un développeur est caractérisé par le numéro de sa
carte d’identité, son nom, son prénom et son émail, il
utilise un ordinateur qui lui est personnel. Un
développeur peut être un programmeur spécialisé
dans un ou plusieurs langages de programmation, ou
un
concepteur expert dans une méthode de
développement .Les développeurs écrivent le code. Les
concepteurs dialoguent avec les utilisateurs et créent
les modèles.
EXERCICE 1 (SOLUTION)
EXERCICE 2
Soit le diagramme de classe suivant :
EXERCICE 2
Construire un diagramme d’objets à partir de ce
diagramme pour modéliser une situation comprenant
3 gangsters répartis sur 2 organisations qui sont en
train de se battre, habitant le même lieu.
Aperçu global de
la solution
Il faut ajouter les
avec
attributs
leurs valeurs
EXERCICE 2
Construire un diagramme d’objets à partir de ce
diagramme pour modéliser une situation comprenant
3 gangsters discutant lors d’une réunion, appartenant
à la même organisation et habite chacun dans une
région
Aperçu global de
la solution
Il faut ajouter les
attributs
avec
leurs valeurs
EXERCICE 3 (A FAIRE)
Un hôtel est caractérisé par son nom, adresse, catégorie et
il est composé d’au moins de deux chambres. Chaque
chambre est caractérisée par le nombre de lits qu’elle
contient, son prix, son numéro et elle dispose d’une salle
d’eau : douche ou bien baignoire. Un hôtel héberge des
personnes. Un hôtel peut employer du personnel et il est
impérativement dirigé par un directeur. On ne connait que
les numéros de la carte d’identité, les noms et les prénoms
des employés, du directeur et des occupants. Certaines
personnes sont des enfants et d’autres des adultes (faire
travailler des enfants est interdit).On veut pouvoir savoir
qui occupe quelle chambre et à quelle date. Pour chaque
jour de l’année, on veut pouvoir calculer le loyer de chaque
chambre en fonction de son prix et de son occupation (le
loyer est nul si la chambre est inoccupée). La somme de ces
loyers permet de calculer le chiffre d’affaire de l’hôtel entre
deux dates.
EXERCICE 3 (SOLUTION)