Éléments Fondamentaux des Diagrammes de Classes et Diagrammes Objets

Page 1 sur 54Lecteur de document UniversityLib

Éléments Fondamentaux des Diagrammes de Classes et Diagrammes Objets

Modélisation Orientée Objet (MOOC) · lab

Voir tous les documents en programmation

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

Publicité

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 »

Publicité

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

Publicité

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

Publicité

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)