5 - Diagramme de Classe

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 28

5- Diagramme de Classes

Pr. Abdelhay HAQIQ ([email protected])

Digramme de classes
o Diagramme de classes est considéré comme le plus important de la modélisation orientée
objet.
o Alors que le diagramme de cas d’utilisation montre un système du point de vue des acteurs, le
diagramme de classes en montre la structure interne.
o La description du diagramme de classes est centrée sur trois concepts :
– Le concept d’objets
– Le concept de classes d’objets comprenant des attributs et des opérations (méthodes)
– Les différents types de relations entre classes.
o Le diagramme de classes n’indique pas comment utiliser les opérations : c’est une description
purement statique d’un système en terme de :
– Classes d'objets
– Relations entre classes
– Associations
– Agrégation/composition
– Héritage

Pr. Abdelhay HAQIQ UML 2

1
Diagramme de classes

Pr. Abdelhay HAQIQ UML 3

Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 4

2
Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 5

Classe et Objet
o Classe : une description d’un ensemble
d’objets qui partagent les mêmes propriétés
et comportements. Une classe possède des
attributs ou des méthodes «de classe».

o Objet : est une instance d’une classe. Une


entité concrète avec une identité bien définie
qui encapsule un état et un comportement.
L’état est représenté par des valeurs d’attribut
et le comportement par des méthodes.

Pr. Abdelhay HAQIQ UML 6

3
Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 7

Attribut (1/3)
o Un attribut représente les caractéristiques d’une classe ou d’un objet.
o Il est définit par :
– Visibilité de l’attribut : Public + ; Protected # ; Private –
– Nom de l’attribut qui doit être unique dans la classe
– Type de l’attribut
– Initialisation de l’attribut
o Lorsqu’un attribut peut être dérivé ou calculé à partir d'autres attributs, il
est précédé d’un /
o Syntaxe d’un attribut : visibilité [/] nom : type[= valeur initiale]
o On distingue deux types d'attributs :
– Attribut d'instance (ou d’objet) : la valeur de l’attribut est propre à l’objet
– Attribut de classe (ou statique) :
La valeur est la même pour tout objet de la classe
Un attribut statique est souligné

Pr. Abdelhay HAQIQ UML 8

4
Attribut (2/3)
o Initialisation des attributs: Lors de la déclaration d’un attribut on peut lui attribuer une
valeur par défaut.

o Attributs de classes : ce sont des attributs particuliers qui ont la même valeur pour toutes les
instances de la classe. L’exemple fondamental est un attribut qui compte le nombre d’objets
instanciés de la classe.

Pr. Abdelhay HAQIQ UML 9

Attribut (3/3)
o Attributs dérivés : attributs dont la valeur peut être calculée à partir d’autres attributs et de
formules de calcul. Il est représenté avec un « / » devant le nom.

o Pour désigner l’identifiant d’une classe, on utilise le stéréotype « id »

Pr. Abdelhay HAQIQ UML 10

5
Méthode
o Une méthode représente le comportement d’une classe ou d’un objet.
o Elle est définit par :
– Visibilité : Public + ; Protected # ; Private –
– Genre de le méthode: constructeur, getter, setter …
– Nom de la méthode
– Liste des arguments avec leurs types et éventuellement leurs valeurs par
défaut
– Le type du résultat retourné
o Syntaxe d’une méthode :
[«stéréotype»] visibilité nom([arg : type[=val_defaut]]) : type_retour
o On distingue deux types de méthodes :
– Méthode d'instance (ou d’objet) : le comportement est propre à l’objet
– Méthode de classe (ou statique) :
Le comportement est le même pour tout objet de la classe
Une méthode statique est soulignée

Pr. Abdelhay HAQIQ UML 11

Visibilité des membres (Attributs/Classes)


Visibilité des attributs et méthodes :
o Un attribut ou une méthode sont dits privés (-) si leur utilisation est interdite en dehors de la
classe. Càd aucune autre classe ne peut accéder au membre
o Un attribut ou une méthode sont dits publics (+) si leur utilisation est autorisée en dehors de
la classe. Càd toute autre classe peut accéder au membre.
o Un attribut ou une méthode sont dits protégés (#) si leur utilisation est limitée à la classe et
ses descendantes (héritage), ainsi qu’aux classes du même package
o Représentation de la visibilité :
– Public : +
– Privé : -
– Protégé : #

Pr. Abdelhay HAQIQ UML 12

6
Classe UML -> Classe Java

Pr. Abdelhay HAQIQ UML 13

Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 14

7
Relations entre classes
o Les relations entre classes expriment les liens sémantiques ou structurels.
o Les relations les plus utilisées sont :
– Association

– Agrégation

– Composition

– Dépendance

– Héritage

Pr. Abdelhay HAQIQ UML 15

Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 16

8
Associations
o Une association représente une relation sémantique entre les objets d’une classe.
o Elle est représentée graphiquement par un trait plein entre les classes associées et
compléter par :
– Nom
– Rôle
– Multiplicité
– Sens de la navigation

Pr. Abdelhay HAQIQ UML 17

Associations
o Multiplicité
– Le nombre (min et max) d’objets avec lesquels participe une classe dans une association
– A l’inverse de la notation MERISE, la multiplicité est placée prêt de la classe ciblée
Notation Notation
MERISE (MCD) Une personne peut exercer une profession UML (diag. de Classes)

Une profession peut être exercée par plusieurs personnes

o Nom et sens de lecture


– Décrit la nature (signification) de l’association
– Montre la direction de lecture de l’association

Pr. Abdelhay HAQIQ UML 18

9
Associations
Rôle d’une association
o Décrit le rôle d’une classe dans une association

o Utile surtout dans deux cas :


– Lorsqu’on a plusieurs associations entre deux classes avec
des rôles différents

– Une relation réflexive : relation entre deux instances d’une


même classe

Pr. Abdelhay HAQIQ UML 19

Association bidirectionnelle (1/3)


o Une association bidirectionnelle se traduit naturellement par une paire de références, une
dans chaque classe impliquée dans l’association.

Pr. Abdelhay HAQIQ UML 20

10
Associations bidirectionnelles (2/3)

Pr. Abdelhay HAQIQ UML 21

Associations bidirectionnelles (3/3)

Pr. Abdelhay HAQIQ UML 22

11
Classe d’association (1/2)
o Une classe d’association est un type particulier d’association, qui n’est utilisé que quand un
attribut appartient à l’union des classes impliquées dans l’association.
o Dans ce cas, c’est l’association qui continent l’attribut, et non les classes liées.

Pr. Abdelhay HAQIQ UML 23

Classe d’association (2/2)


o Une classe association se traduire en Java en classe normale avec des variables de type
référence

Pr. Abdelhay HAQIQ UML 24

12
Association réflexive
o Une association réflexive est une relation entre deux instances d’une même classe

o Elle se traduit par une référence sur un objet de la même classe.

Pr. Abdelhay HAQIQ UML 25

Navigabilité restreinte/Association n-aire


o Navigabilité : Permet la réduction de la portée de l'association pour indiquer que les instances
d'une classe A ne "connaissent" pas les instances d'une B.
– Par défaut, une association est navigable dans les deux sens

o Association n-aire est une association qui relie plus de deux classes :

Pr. Abdelhay HAQIQ UML 26

13
Associations Navigables

o Utiliser ArrayList si vous devez respecter un ordre et récupérer les objets à partir d’un indice
entier

Pr. Abdelhay HAQIQ UML 27

Association qualifiée (1/2)


o Parfois on a besoin de limiter l’étendue d’une association, pour qu’elle implique un nombre
réduit d’objets, au lieu d’une multitude d’objets.
o Cette limitation doit se faire donc selon une information (souvent une clef de BD ou un
identifiant) qui va diriger le choix vers l’objet(s) ciblé(s) par l’association, et exclure les autres
objets. Cette information – qui agit comme un filtre – est appelée « le qualificatif ».
o On parle alors d’association « qualifiée ».

o Le qualificatif doit être une propriété appartenant à la Class2, non à la Class1.

Pr. Abdelhay HAQIQ UML 28

14
Association qualifiée (2/2)
o La qualification n’est pas obligatoire, elle est utilisée selon les besoins de la classe source.

o Le HashMap est utilisé pour récupérer les objets à partir d’une clé arbitraire.

Pr. Abdelhay HAQIQ UML 29

Associations avec contraintes


o Les contraintes sont des expressions qui précisent le rôle
ou la portée d'un élément de l’association.
o Les contraintes peuvent s'exprimer en langage naturel.
Graphiquement, il s'agit d'un texte encadré d'accolades.
o Les contraintes principales:
– Contrainte {ordonnée} : une relation d’ordre décrit les
objets
– Contrainte {sous-ensemble} : une collection est incluse
dans une autre collection
– Contrainte {ou-exclusif} : pour un objet donné, une
seule association est valide

Pr. Abdelhay HAQIQ UML 30

15
Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 31

Agrégation (1/2)
o L’agrégation est une relation « d’appartenance », « d’ensemble / élément » ou « agrégat /
agrégé » entre 2 classes.
o En d’autres termes, l’objet de la classe considérée comme agrégat (composé), est constitué
d’un ou plusieurs objets de la classe considérée comme agrégée (composant).

Pr. Abdelhay HAQIQ UML 32

16
Agrégation (2/2)
o Une agrégation s’implémente comme une associations simple.

Pr. Abdelhay HAQIQ UML 33

Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 34

17
Composition (1/2)
o La composition est un cas particulier d’une agrégation dans laquelle la vie des composants
(élément) est liée à celle de l’agrégat (composé) : si l’agrégat est détruit (ou déplacé), ses
composants le sont aussi.
o D’un autre côté, et contrairement à l’agrégation, une instance de composant ne peut être liée
qu’a un seul agrégat. ce qui signifie que la multiplicité de la classe composite est
obligatoirement 1

Pr. Abdelhay HAQIQ UML 35

Composition (2/2)
o Une composition s’implémente comme une association unidirectionnelle.

Pr. Abdelhay HAQIQ UML 36

18
Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 37

Dépendance
o Dépendance est une relation unidirectionnelle indiquant qu’une classe est modifiée si
l’élément dont elle dépend est lui même modifié.
– Modification de la cible => une modification de la source
– Plusieurs cas de dépendance sont possibles :
use (utilisation) : un objet de classe B est utilisé en argument d’une opération de A
create (création/instanciation) : la classe A va créer des objets de B
call (appel) : la classe A appelle une opération de B

Pr. Abdelhay HAQIQ UML 38

19
Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 39

Héritage
o L’héritage est un type spécial d’association qui décrit une sorte de généralisation /
spécification entre deux classes, l’une représente le cas général, l’autre représente le cas
spécifique.
o Elle indique qu’une classe dite classe fille spécialise une autre classe dite classe mère, i.e.
qu’elle possède les attributs et les méthodes de la classe mère plus d’autres qui lui sont
propres.
o Quand une classe C2 hérite d’une autre C1 cela permet à C2 d’hériter de tous les membres
publics et protégés sans devoir les déclarer à son tour.
o Evidemment, les membres privés ne sont pas hérités car les autres classes ne savent même
pas leur existence.

Pr. Abdelhay HAQIQ UML 40

20
Héritage
Les deux visions de l’héritage :
o Spécialisation : on étend les propriétés d’une classe à des sous-classes plus spécifiques. Cela
permet donc la réutilisation de modèles déjà existants
o Généralisation : on factorise les propriétés communes d’un ensemble de classes dans une
super-classe plus abstraite. Cela permet de gagner en généricité

Pr. Abdelhay HAQIQ UML 41

Généralisation/Spécialisation
Spécialisation

Généralisation

Pr. Abdelhay HAQIQ UML 42

21
Héritage

Pr. Abdelhay HAQIQ UML 43

Plan
Classe / Objet

Attributs / Méthodes

Relations entre classes


Association
Agrégation
Composition
Dépendance
Héritage

Classe Abstraite / Interface

Pr. Abdelhay HAQIQ UML 44

22
Classe abstraite (1/3)
Classe abstraite est une classe qui ne peut être instanciée, car elle contient des méthodes
abstraites, c’est à dire des méthodes non implémentées.
o Une classe abstraite sert essentiellement à factoriser des méthodes et attributs communs à
plusieurs classes, et ce dans une relation d’héritage
o Une méthode est dite abstraite si on connaît son entête, mais pas la manière dont elle peut
être réalisée.
o Une classe est dite abstraite lorsqu’elle définit au moins une méthode abstraite
o Une classe qui hérite d’une classe abstraite, doit définir toutes les méthodes abstraites
héritées, sinon elle doit être déclarée à son tour abstraite
o Les classes abstraites sont notées de deux manières possibles :

Pr. Abdelhay HAQIQ UML 45

Classe abstraite (2/3)


Exemple :
o Le comportement « démarrer » de la classe « Véhicule » n’est pas concret, vu que chaque
sous-type de véhicules démarre de manière différente des autres sous-types
o Le concepteur n’a donc pas d’autres choix que de déclarer cette classe abstraite, et d’imposer
aux classe filles (Voiture, Moto, …) de concrétiser la méthode abstraite (démarrer) héritée de
leur classe mère

Pr. Abdelhay HAQIQ UML 46

23
Classe abstraite (3/3)

Pr. Abdelhay HAQIQ UML 47

Interface
o Une interface est un cas particulier de classes abstraites : sans aucun attribut & dont toutes les
opérations sont abstraites.
– Contrairement à une classe abstraite, une interface ne peut avoir aucune méthode concrète.
o Les interfaces sont représentées avec le stéréotype « interface » comme ceci :

o L’association qui lie une classe à une interface est appelée « Implémentation (ou Réalisation) »
o L’implémentation est notée par une association à tête vide, dont le trait est discontinu :

o Une interface peut hériter d’une autre interface

Pr. Abdelhay HAQIQ UML 48

24
Interface

Pr. Abdelhay HAQIQ UML 49

Utilisation d’interfaces
o La classe ClasseImplem fournit la capacité de réaliser l’opération dont ClasseReq a besoin

Pr. Abdelhay HAQIQ UML 50

25
Utilisation d’interfaces

Pr. Abdelhay HAQIQ UML 51

Contraintes Interface
Contraintes liées à l’utilisation des interfaces :
o Comme les classes abstraites, les interfaces ne peuvent pas être instanciées.
o Une classe qui implémente une interface, doit définir toutes les méthodes héritées, sinon elle
doit être déclarée abstraite.
o Les attributs d’une interface ne peuvent être ni privés ni protégés, et sont obligatoirement
initialisés à leur déclaration.
o Une classe qui implémente une interface, n’a pas le droit de modifier la valeur d’un attribut
hérité.
o Les méthodes d’une interface ne peuvent être ni privées, ni protégées ni statiques

Pr. Abdelhay HAQIQ UML 52

26
Interface en Java

Pr. Abdelhay HAQIQ UML 53

Exercice

Pr. Abdelhay HAQIQ UML 54

27
Exercice
Une université souhaite gérer les cours dispensés dans plusieurs écoles. Pour cela, on dispose des renseignements
suivants :
o Chaque école possède un site Internet
o Chaque école est structurée en départements, qui regroupent chacun des enseignants spécifiques. Parmi ces
enseignants, l’un d’eux est responsable du département.
o Un enseignant se définit par son nom, prénom, tél, mail, date de prise de fonction et son indice.
o Chaque enseignant ne dispense qu’une seule matière.
o Les étudiants suivent quant à eux plusieurs matières et reçoivent une note pour chacune d’elle.
o Pour chaque étudiant, on veut gérer son nom, prénom, tél, mail, ainsi que son année d’entrée à l’école.
o Une matière peut être enseignée par plusieurs enseignants mais a toujours lieu dans la même salle de cours
(chacune ayant un nombre de places déterminé).
o On désire pouvoir calculer la moyenne par matière ainsi que par département
o On veut également calculer la moyenne générale d’un élève et pouvoir afficher les matières dans lesquelles il
n’a pas été noté
o Enfin, on doit pouvoir imprimer la fiche signalétique (nom, prénom, tél, mail) d’un enseignant ou d’un élève.
Elaborer le diagramme de classes

Pr. Abdelhay HAQIQ UML 55

Solution

Pr. Abdelhay HAQIQ UML 56

28

Vous aimerez peut-être aussi