5 - Diagramme de Classe
5 - Diagramme de Classe
5 - Diagramme de Classe
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
1
Diagramme de classes
Plan
Classe / Objet
Attributs / Méthodes
2
Plan
Classe / Objet
Attributs / Méthodes
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».
3
Plan
Classe / Objet
Attributs / Méthodes
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é
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.
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.
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
6
Classe UML -> Classe Java
Plan
Classe / Objet
Attributs / Méthodes
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
Plan
Classe / Objet
Attributs / Méthodes
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
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)
9
Associations
Rôle d’une association
o Décrit le rôle d’une classe dans une association
10
Associations bidirectionnelles (2/3)
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.
12
Association réflexive
o Une association réflexive est une relation entre deux instances d’une même classe
o Association n-aire est une association qui relie plus de deux classes :
13
Associations Navigables
o Utiliser ArrayList si vous devez respecter un ordre et récupérer les objets à partir d’un indice
entier
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.
15
Plan
Classe / Objet
Attributs / Méthodes
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).
16
Agrégation (2/2)
o Une agrégation s’implémente comme une associations simple.
Plan
Classe / Objet
Attributs / Méthodes
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
Composition (2/2)
o Une composition s’implémente comme une association unidirectionnelle.
18
Plan
Classe / Objet
Attributs / Méthodes
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
19
Plan
Classe / Objet
Attributs / Méthodes
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.
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é
Généralisation/Spécialisation
Spécialisation
Généralisation
21
Héritage
Plan
Classe / Objet
Attributs / Méthodes
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 :
23
Classe abstraite (3/3)
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 :
24
Interface
Utilisation d’interfaces
o La classe ClasseImplem fournit la capacité de réaliser l’opération dont ClasseReq a besoin
25
Utilisation d’interfaces
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
26
Interface en Java
Exercice
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
Solution
28