Académique Documents
Professionnel Documents
Culture Documents
1
2 Plan du Cours
Diagrammes d’objets
Diagrammes de classes
3 I. Diagrammes d’objets
Objectif : Représenter les objets et leurs liens à un instant donné
Utilisation : documenter des cas de test, analyser des exemples, ...
Moyen : Graphe
Nœuds du graphe = Objets
Possibilité de supprimer le nom, la classe
et/ou les attributs (objet anonyme, non typé
ou d’état inconnu)
Arêtes du graphe = Liens entre objets
Lien binaire : entre 2 objets
Lien n-aire : entre n objets
Possibilité de nommer les liens et les rôles
Correspondance entre liens et attributs
4 I. Diagrammes d’objets
Exemple de diagramme d’objets
5 I. Diagrammes d’objets
Exercice:
Tidiane, Kadiatou, Fatoumata, Aly, Tahirou et Salif sont étudiants au
département GEII;
Mahamadou et Abdoulaye sont enseignants au département GEII.
Mahamadou enseigne le C et le réseau ;
Abdoulaye enseigne les machines électriques, les TCE et la
maintenance;
Tidiane, Kadiatou et Fatoumata suivent les cours de C, de réseau et de
maintenance ;
Tahirou, Aly et Salif suivent les cours de C, machines électriques et TCE.
6 II. Diagrammes de classes
1. Introduction
Ce sont les plus importants pour la modélisation orientée objet.
Le diagramme de classes décrit la structure interne du système
contrairement au diagramme de cas d'utilisation qui montre le
système du point de vue des acteurs.
Il permet de fournir une représentation abstraite des objets du
système qui vont interagir ensemble pour réaliser les cas d'utilisation.
7 II. Diagrammes de classes
2. Représentation UML des classes
Rectangle composé de compartiments :
Compartiment 1 : Nom de la classe (commence par une majuscule, en
gras)
Compartiment 2 : Attributs
Compartiment 3 : Opérations
Possibilité d’ajouter des compartiments (exceptions, ...)
Différents niveaux de détail possibles :
Possibilité d’omettre attributs et/ou opérations
Exemple : une location est payée par un et un seul client, alors que le client
peut réserver plusieurs locations.
La syntaxe de m
1 : toujours un et un seul (dès la création de l'objet)
0..1 : zéro ou un
}
m..n : de m à n (entiers > 0)
* ou 0..* : de zéro à plusieurs vecteur/liste en C++/Java
1..* : au moins un
20 II. Diagrammes de classes
7. Relations entre classes – Association – rôle et
Multiplicité des associations
Règle générale :
Exemple:
21 II. Diagrammes de classes
7. Relations entre classes – Association – rôle et
Multiplicité des associations
Exercice:
Chaque étudiant du département IF suit un ensemble d’unités
d’enseignement (UE).
Chaque UE a un coefficient et est constituée de cours, de travaux
dirigés (TD) et de travaux pratiques (TP).
Chaque cours, TD ou TP a une date. Les cours sont faits en amphi, les TD
en salle de classe et les TP en salle machine.
Pour les TP et TD, les étudiants sont répartis dans des groupes. Pour
chaque TP, chaque étudiant est en binôme avec un autre étudiant.
Les cours et les TD sont assurés par un enseignant. Les TP sont assurés par
deux enseignants.
Pour chaque UE, l’étudiant a une note de devoir surveillé ; pour chaque
TP, le binôme a une note de TP.
22 II. Diagrammes de classes
8. Navigabilité
Qu’est-ce que la navigabilité d’une association entre C1 et C2 ?
La navigabilité permet de spécifier dans quel(s) sens il est possible de
traverser l'association a l'exécution.
On restreint la navigabilité d'une association à un seul sens a l'aide
d'une flèche.
Classes-Associations n-aire
30 II. Diagrammes de classes
11. Associations particulières : composition et agrégation
Composition :
L'association la plus "forte". On utilise un losange plein
Généralement A dépend de B si :
A utilise B comme argument dans la signature d'une méthode
A utilise B comme variable locale d'une méthode
35 II. Diagrammes de classes
12. Dépendance
Exemple : la modification du code de la route a un impact sur
l'attitude du conducteur
des caractéristiques des voitures
Relation très générale : toutes les relations possibles entre les classes sont
des dépendances
36 II. Diagrammes de classes
13. Généralisation et Héritage
Niveau conceptuel : Généralisation
indique qu'une classe est un cas plus générale d'une autre
se traduit par la notion d'héritage en Programmation Objet
Relation non-réflexive
transitive : les classes spécialisées héritent de la structure et du
comportement des classes plus générales (attributs, opérations,
associations et nouveaux héritages)
Relation non symétrique
La sous-classe “est-une-sorte-de” la super classe
Toute instance de la sous-classe est instance de la super classe
37 II. Diagrammes de classes
13. Généralisation et Héritage
Niveau implémentation : Héritage
Mécanisme proposé par les langages de programmation Objet
"B hérite de A" signifie que B possède :
Toutes les propriétés de A (attributs, op., assoc., contraintes)
Possibilité de redéfinir les opérations de la sous-classe
Polymorphisme
Ainsi que des nouvelles propriétés qui lui sont propres
Permet de factoriser les propriétés communes à plusieurs classes
Une opération définie pour A est accessible aux sous-classes de A
38 II. Diagrammes de classes
13. Généralisation et Héritage
Exemple
39 II. Diagrammes de classes
14. Héritage vs Composition
Problème :
Modéliser le fait qu’il y a des voitures bleues, des voitures rouges et des voitures
vertes.
Solution 1 : Héritage
Créer une classe abstraite Voiture
Créer 3 classes VoitureBleue, VoitureRouge et VoitureVerte qui héritent de
Voiture
Solution 2 : Composition
Créer une classe Voiture et une classe Couleur (énumération)
Créer une association entre Voiture et Couleur
Comment représenter ces 2 solutions en UML?
Quelle solution choisissez-vous ?
Et si on veut modéliser le fait qu’il y a des personnes hommes et des personnes
femmes ?
40 II. Diagrammes de classes
16. Classes abstraites
Qu’est-ce qu’une classe abstraite ?
Classe qui ne peut être instanciée: Sert uniquement de super classe à
d'autres classes
Contient des opérations non définies (pour garantir que toutes les classes filles aient
ces méthodes) :
abstract (Java) ou virtual (C++)
Doit être spécialisée en une ou plusieurs classes non abstraites
Notation : mot clé {abstract} ou nom en italique
Pourquoi des classes abstraites ?
Spécifier un comportement commun à plusieurs classes
Manipuler des instances de classes différentes de façon uniforme
Polymorphisme
Bonne pratique :
Dans une hiérarchie d’héritage, les classes qui ne sont pas des feuilles sont
généralement abstraites
41 II. Diagrammes de classes
16. Classes abstraites
Exemple
42 II. Diagrammes de classes
17. Interface
Qu’est-ce qu’une interface ?
Classe sans attribut dont toutes les opérations sont abstraites
Ne peut être instanciée
Doit être réalisée (implémentée) par des classes non abstraites
Peut hériter d’une autre interface
Pourquoi des interfaces ?
Utilisation similaire aux classes abstraites
En Java : une classe ne peut hériter de plus d’une classe, mais elle peut
réaliser plusieurs interfaces
43 II. Diagrammes de classes
17. Interface
Exemple
Héritage Relation
Dépendance
d’Interface
48 II. Diagrammes de classes
19. Applications
Cherchez l’erreur (1/3)