1. Le diagramme de classe
Université Mohamed Chérif Messadia
ــ Souk-Ahras ــ
PRÉPARER PAR :
ILHEM DAOUDI
ABDALLAH AMIRAT
2. le plan :
1 – Introduction.
2 - Objectifs du diagramme de classe.
3 - Définition d’un diagramme de classe.
4 – les classes.
4.1 - Schéma d’une classe.
4.2 - Les attributs.
4.3 - La visibilité.
4.4 - Exemple d'attributs.
3. 5 - Les méthodes.
6 - Les relations entre les classes.
6.1- Une association.
6.2 – Agrégation.
6.3 – Composition.
6.4 – Généralisation.
6.5 - La dépendance.
7 – Stéréotype.
8 – Exemples.
9 - Méta modèle.
9 – Références.
4. 1- Introduction :
Le diagramme des classes est le diagramme le plus
largement répandu dans les spécifications d'UML. Ces
dernier peuvent produire directement du code source
dans les langage informatique (C++, C #, Phyton, Java
…) via ces modèles (foward engennering). Ou bien
l’inverse (reverse engennering).
5.
6. 2 - Objectifs :
Déterminer les attributs qui seront manipulées par le
système Ces attributs sont organisées en classes .
Donner la structure statique de ces attributs .
Ce diagramme permet de décrire la structure interne de
chacune des classes •
La navigation parmi les classes est rendue possible par
l’existence d’associations qui les unissent .
7. 3 - Définition :
Le diagramme de classes est un schéma utilisé en génie logiciel pour
présenter les classes et les interfaces des systèmes ainsi que les
différentes relations entre celles-ci. Ce diagramme fait partie de la
partie statique d'UML .
Une classe décrit les responsabilités, le comportement et le type d'un
ensemble d'objets.
Les éléments de cet ensemble sont les instances de la classe.
8. 4 - Les classes :
Une classe est un ensemble de méthodes et des attributs qui sont liées
ensemble par un champ sémantique. Les classes sont utilisées dans
la programmation orientée objet. Elles permettent de modéliser
un programme et ainsi de découper une tâche complexe en plusieurs
tâche simples.
Les classes peuvent être liées entre elles avec des relations., chacune
de ces relations est représentée par un arc spécifique dans le
diagramme de classes.
9. 4.1 - Schéma d'une classe :
Une classe est représentée par un rectangle séparée en
trois parties :
la première partie contient le nom de la classe
la seconde contient les attributs de la classe
la dernière contient les méthodes de la classe
La seconde et la dernière représentent
le comportement de la classe.
10. 4.2 - les attributs :
La syntaxe d'un attribut est la suivante :
Visibilité nomAttribut [multiplicité] : typeAttribut
Nom de l'attribut
Il ne doit pas comporter d'espaces, de signes de ponctuation ou
d'accents. Pour remplacer les espaces, plusieurs conventions existent :
on peut utiliser le symbole _ ou changer la première lettre du mot en
majuscule (exemple : nom de l'objet peut
s'écrire nomObjet ou nom_objet).
11. 4.3 - Visibilité :
La notion de visibilité indique qui peut avoir accès à l'attribut.
Elle ne peut prendre que 4 valeurs possibles :
Caractère Rôle Mot clé Description
+ accès public
public
Toutes les autres classes ont accès à cet
attribut.
#
accès protégé
protected
Seules la classe elle-même et les classes
filles (héritage) ont accès à cet attribut.
~ accès package
package
Classe visible uniquement dans le
package.
- accès privé
private
Seule la classe elle-même a accès à cet
attribut.
12. //attribut public prenom de type string (chaine de caractères)
+ prenom : string
//attribut privé age de type int (entier)
- age : int
4.4 - Exemple d'attributs
13. 5 - Les méthodes :
La syntaxe d'une méthode est la suivante :
Visibilité nomFonction(directionParamètreN nomParamètreN : typeParamètreN) : type
Retour
Visibilité
La notion de visibilité est la même que celle des attributs.
Direction du paramètre
Indique si le paramètre est rentrant (in), s'il est sortant (out) ou s'il est rentrant et sortant
(inout).
Exemples de méthode
//méthode publique getAge() retournant un entier
+ getAge() : int
//méthode protégée calculerAge() prenant comme paramètre dateNaissance de type Date
et ne retournant rien (void)
14. 6 - Relations entre les classes:
Ces relations ne sont pas exclusives au diagramme de classe, elles
peuvent également s'appliquer à l'ensemble des diagrammes
statiques.
6.1- Une association: est une relation entre deux classes (association
binaire) ou plus (association n-aire), qui décrit les connexions
structurelles entre leurs instances. Une association indique donc qu'il
peut y avoir des liens entre des instances des classes associées.
association binaire
15. 6.1.1- multiplicité : comparable aux cardinalités du
système Merise, sert à compter le nombre minimum et
maximum d'instances de chaque classe dans la relation liant
2 ou plusieurs classes.
association n-aire
16. 6.1.2 - Navigation
• Bien que les associations soit bi-directionnelles par défaut, il peut être
bon de limiter la navigation à un seul sens.
• Les objets de Classe2 sont accessibles à partir de ceux de Classe1 et
vice-versa
• Si la navigation est restreinte, une flèche indique le sens de
navigation
• Les objets de la Classe 1 sont accessibles à la classe 2 mais la
Classe 2 elle peut pas accédez a la Classe 1
17. 6.1.3 - Association réflexive
• Une association peut mettre en jeux deux classes distinctes Mais,
elle peut aussi apparaître sur une seule et même classe Dans ce cas
précis, l’association est dite réflexive.
18. 6.2 - classe d'association :
une classe d'association est une classe qui fait partie d'une
relation d'association entre deux autres classes.
Vous pouvez rattacher une classe d'association à une relation
d'association pour fournir des informations supplémentaires sur
la relation.
Une classe d'association est identique à d'autres classes et peut
contenir des opérations, des attributs, ainsi que d'autres
associations.
20. 6.2.1 - Contraintes sur association
• D’autres types de contraintes existent sur une association :
• Des contraintes prédéfinies :
– Les contraintes ensemblistes : {Sous-ensemble}
– Les contraintes d’ordonnancement : {Ordonné}
– Les contraintes d’exclusion : {Ou - exclusif}
Des contraintes spécifiques au moyen du langage OCL (Object
Constraint Language).
21. 6.2.1.1 - Association ordonnée
• Contraintes sur les associations pour exprimer que les objets sont
ordonnés (selon la clé, le nom, la date, etc.).
• Cette contrainte est spécifiée par le stéréotype {Ordonné} du côté
de la classe dont les instances sont ordonnés.
• Le modèle ne spécifie pas comment les objets sont ordonnés Pour
décrire comment les objets sont ordonnés on utilise un
commentaire en employant la notation graphique suivante :
22. 6.2.2 - Association « ou-exclusif »
Un contrat d’assurance concerne une entreprise ou une personne
mais pas les deux en même temps.
23. 6.2.3 - Association « sous-ensemble »
• C’est une contrainte qui indique qu’une collection est incluse dans
une autre collection.
• La contrainte est placée à proximité d’une relation de dépendance
entre deux associations.
• La flèche de la relation de dépendance indique le sens de la
contrainte.
• Exemple :
24. 4.6.2.4 - Association Qualifiée
• Utilisée avec une relation de multiplicité *.
• Permet de trier la relation en fonction des valeurs d’un attribut.
25. 6.2 - Agrégation
les agrégations indiquent une relation de contenant contenu. Elle
décrite par une relation "possède". Une relation d'agrégation est
représentée par une ligne avec un "diamant" creux.
• L’agrégation représente une association de type ensemble/élément.
• L’agrégation ne concerne qu’un seul rôle d’une association.
26. 4.6.2 – Agrégation (2)
• Exemple 1
• – Une personne est dans une foule.
• – Une foule contient plusieurs personnes.
• Exemple 2 (Agrégation partagée)
• – Une personne fait partie de plusieurs équipes.
• – Une équipe contient plusieurs personnes.
27. 6.3 - Composition
Si une classe ne peut pas exister par elle-même, mais doit être un membre
d'une autre classe, alors elle possède une relation de composition avec la
classe contenant.
Une relation de composition est une relation d’agrégation dans laquelle
il existe une contrainte de durée de vie entre la classe ‘composant’ et la
ou les ‘composé’.
Autrement dit la suppression de la classe ‘composé’ implique la
suppression de des classes ‘composant’.
La valeur max de multiplicité du côté du conteneur ne doit pas excéder 1
puisque les objets, instances de la classe des composants, doivent tous
appartenir au même objet conteneur.
29. 6.4 - Généralisation
une relation de généralisation est l'équivalent d'une relation d'héritage en
terme orientés objet (relation "est-un "). Une relation de généralisation est
indiquée par une flèche creuse se dirigeant vers la classe "parent ".
30. 6.5 - La dépendance :
Définition : Une dépendance est une relation unidirectionnelle exprimant une
dépendance sémantique entre des éléments du modèle. Elle est représentée par un
trait discontinu orienté Relation non structurelle existant entre plusieurs éléments.
Représentation UML: une flèche pointillé éventuellement stéréotypée.
Quatre types de relations de dépendances :
Abstraction: relation entre éléments qui représentent un même concept à différents
niveaux d’abstraction ou selon des points de vue distincts.
Liaison: dépendance entre une classe paramétrable (cible) et une classe paramétrée
(source).
Permission: l’élément source a le droit d’accéder à l’espace de nommage de
l’élément cible.
Utilisation: l’élément source requiert la présence d’un élément cible.
31. 7 – Stéréotype
• Un stéréotype permet d’étendre les classes déjà existantes
en leur donnant une signification sémantique différente.
• Si la classe A est un stéréotype de la classe B, alors A se
comporte comme B tout en ayant une signification
sémantique différente.
• Mécanisme proche de la généralisation/spécialisation sauf
qu’il permet le changement de sémantique.
• Représentation UML:
32. • Quelques stéréotypes prédéfinis :
• énumération: classe définissant un ensemble d’identificateurs
formant le domaine de valeur d’un type.
• utilitaire: classe réduite au concept de module et qui ne peut
être instanciée.
• acteur: classe modélisant un ensemble de rôles joués par un
acteur.
• interface: classe contenant uniquement une description des
opérations visibles.
• exception: classe modélisant un cas particulier de signal : les
exceptions.
7 – Stéréotype (2)
33. 8 - Exemple1 :
Considérons l'exemple d'un système vétérinaire. Des animaux de
compagnie, comme des chiens ou des oiseaux, sont suivis par
leurs propriétaires.
Le diagramme suivant modélise une solution potentielle.
Considérant que les chiens comme les oiseaux sont "un genre"
d'animal, nous utilisons un relation de généralisation.
34.
35. 8- Exemple 2 :
Une personne physique peut avoir jusqu'à trois sociétés (personnes
morales) qui l'emploient.
Chaque personne physique possède un numéro de sécurité sociale
qui l'identifie.
Une voiture a un numéro d'immatriculation. Une voiture est la
propriété d'une personne (physique ou morale).
Un emprunt dans une banque peut être demandé pour l'achat d'une
voiture.
36.
37. 8 - Exemple 3 :
On veut implanter une base de données pour la gestion des rencontres des tournois
de tennis d’une saison donnée, On pourra ainsi déterminer facilement le
classement des joueurs au niveau mondial. ON dispose des informations suivantes:
Chaque joueur a un nom et un sexe. Deux joueurs peuvent former une équipe de
double.
Un joueur, donnée n’appartient normalement qu’a une équipe, au plus.
Un tournoi est caractérise par son nom et de déroule dans un pays donnée à une
date prévue.
On souhaite également stocker la monnaie du pays concerné. A la fin d’un tournoi.
un joueur ou une équipe participant à ce tournoi obtient un score qui reposent le
nombre de tours passés dans le tournoi (1er tour vaut 1, 2eme tour vaut 2 points
etc.).
On attribue à chaque tournoi un coefficient selon son importance.
38.
39. 8 - Exemple 4
• Un éditeur de documents graphiques supporte le groupement d'objets
graphiques. Un document se compose de plusieurs feuilles, chacune
contenant des objets graphiques (texte, forme géométrique et groupe
d'objets). Un groupe est un ensemble d'objets pouvant contenir
d'autres groupes. Un groupe doit contenir au moins deux éléments.
Les formes géométriques comprennent les cercles, les ellipses, les
rectangles, les carrés, les lignes...
40.
41. 9 - Méta modèle :
Nous venons de voir que les modèles étaient des
représentations de l’information nécessaire à la
production et à l’évolution des applications
informatiques.
Le méta-modèle permet de définir la sémantique
des modèles qui vont être créés. Ils se placent
dans le niveau 2 de l’architecture de méta
modélisation définie par l’OMG.
Le Méta-Modèle est représenté sous forme d’un
diagramme de classe UML
Ils permettent d’associer des traitements aux
modèles grâce notamment aux méta-opérations
des méta classes.