44 0 15MB
Modélisation et conception orientées objet avec UML Ilhem Boussaïd [email protected] Université des Sciences et de la Technologie Houari Boumediene Licence 3 Académique http://sites.google.com/site/ilhemboussaid
18 novembre 2013
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
1 / 101
Introduction
Plan 1
Introduction Qualité d’une conception Démarche fonctionnelle Démarche orientée objet
2
Diagramme de classes Classes et instances Relations entre classes Compléments sur la modélisation des classes
3
Diagramme de packages
4
Références
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
2 / 101
Introduction
De la spécification à la conception
Spécifier → c’est définir le quoi. Concevoir → c’est définir le comment.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
3 / 101
Introduction
Principes de conception La décomposition en sous-problèmes
Il s’agit de : Décorréler les problèmes pour n’en traiter qu’un seul à la fois. Simplifier les problèmes (temporairement) pour aborder leur complexité progressivement. I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
4 / 101
Introduction
Principes de conception
La modularité C’est une instance cruciale du principe de décomposition des problèmes. Il s’agit de partitionner le logiciel en modules qui : ont une cohérence interne (des invariants) ; possèdent une interface ne divulguant sur le contenu du module que ce qui est strictement nécessaire aux modules clients.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
5 / 101
Introduction
Critères d’évaluation pour la conception
On mesure la cohésion ("cohesion") d’un module aux nombres de ses sous-modules qui effectuent des tâches similaires et ont des interactions continues. On mesure l’interdépendance ("coupling") entre deux modules A et B à la quantité de modifications à faire sur B lorsque A est modifié (et réciproquement). Haute cohésion, basse interdépendance ("High cohesion, low coupling")
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
6 / 101
Introduction
Qualité d’une conception
Qualité d’une conception
La composante la plus importante de la qualité d’une conception est la maintenabilité. maximiser la cohésion à l’intérieur des composants minimiser le couplage entre ces composants
Les dégradations de la conception sont liées aux modifications des spécifications, Ces modifications sont à faire vite et par d’autres que les concepteurs originaux ça marche mais sans respect de la conception initiale corruption de la conception (avec effet amplifié au fur et à mesure)
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
7 / 101
Introduction
Qualité d’une conception
Couplage/Cohésion
A RETENIR ABSOLUMENT Pour qu’un logiciel soit extensible et réutilisable, il faut qu’il soit découpé en modules faiblement couplés et à forte cohésion.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
8 / 101
Introduction
Qualité d’une conception
Couplage
Couplage Une entité (fonction, module, classe, package, composant) est couplée à une autre si elle dépend d’elle.
Couplage faible Désigne une relation faible entre plusieurs entités (classes, composants), permettant une grande souplesse de programmation, de mise à jour. Ainsi, chaque entité peut être modifiée en limitant l’impact du changement au reste de l’application.
Couplage fort au contraire, tisse un lien puissant qui rend l’application plus rigide à toute modification de code.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
9 / 101
Introduction
Qualité d’une conception
Couplage fort
Couplage Fort
Mesurez l’impact d’une modification de ces modules
Module 1
Module 2
Module 4
I. BOUSSAID (USTHB)
Module 3
Module 6
Module 5
GL - COO
18 novembre 2013
10 / 101
Introduction
Qualité d’une conception
Couplage faible Couplage Faible
Module 1
Module 2
Module 4
I. BOUSSAID (USTHB)
Mesurez l’impact de modification d’un des modules
Module 3
Module 6
Module 5
GL - COO
18 novembre 2013
11 / 101
Introduction
Qualité d’une conception
Forte cohésion
Cohésion entre modules dans un composant, entre services dans un module :"qui se ressemble s’assemble " L’idée est de vérifier que nous rassemblons bien dans une classe des méthodes cohérentes, qui visent à réaliser des objectifs similaires.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
12 / 101
Introduction
Qualité d’une conception
Conception : Approche Fonctionnelle vs. Objet Comment décomposer ?
Deux approches : Fonctionnelle → Descendante. Objet → Ascendante I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
13 / 101
Introduction
Démarche fonctionnelle
Modélisation par décomposition fonctionnelle descendante La forme la plus immédiate pour décrire un travail à effectuer est de lister les actions à réaliser. On découpe une tâche complexe à effectuer en une hiérarchie d’actions à réaliser de plus en plus simples, petites et précises (Pour décrire, on utilise le verbe) :
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
14 / 101
Introduction
Démarche fonctionnelle
Modélisation par décomposition fonctionnelle descendante Exemple : 1 Rouler En Voiture : 1
Mettre moteur en marche : 1 2
2
Démarrer Voiture : 1 2 3
3
Mettre Contact Démarrer Moteur Mettre Point Mort Passer La Première Embrayer En Accélérant
Rouler : 1 2 3
Accélérer Freiner Passer Vitesse
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
15 / 101
Introduction
Démarche fonctionnelle
Modélisation par décomposition fonctionnelle Découpe fonctionnelle descendante 2/9 descendante Rouler en voiture
Mettre moteur en marche
Mettre contact
Démarrer moteur
Introduire Clé de contact
Tourner clé de contact en position « Démarreur » et la laisser revenir
Tourner le clé en position contact
Démarrer
Point mort
Passer la 1ere
Rouler
Embrayer en accélérant
Levier de vitesse sur position 1
Accélérer Suivant pression pédale de droite Augmenter le débit d’essence dans le carburateur
I. BOUSSAID (USTHB) ESISAR
GENIE LOGICIEL ORIENTE OBJET GL -– COO
Freiner
Passer vitesse
Suivant pression pédale du milieu Augmenter la pression sur les freins
18 novembre 2013
16 /7 101
Introduction
Démarche fonctionnelle
Découpe fonctionnelle desce Modélisation par décomposition fonctionnelle descendante
L’implémentation en code source d’une sol en programmation procédurale):
L’implémentation en code source d’une solution décrite en terme d’actions terme d’actions est un code organisé est un code organisé en fonctions (programmation procédurale) :
roulerEnVoiture() mettreMoteurEnMarche() mettreContact() demarrerMoteur()
demarrer() mettrePointMort() passerLaPremiere() embrayerEnAccelerant()
rouler() accelerer() freiner() passerVitesse()
I. BOUSSAID (USTHB)
ESISAR
GL - COO
GENIE LOGICIEL – ORIENTE OBJET 18 novembre 2013
17 / 101
Introduction
Démarche fonctionnelle
Modélisation par décomposition fonctionnelle descendante
Dans ce cadre de travail : L’analyse est une découpe fonctionnelle descendante des fonctionnalités à pourvoir. La conception est une découpe du logiciel en une hiérarchie descendante d’actions permettant de satisfaire les fonctionnalités à pourvoir. L’implémentation est une programmation procédurale.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
18 / 101
Introduction
Démarche fonctionnelle
Modélisation par décomposition fonctionnelle descendante Découpe fonctionnelle descendante 5/9 Dans une programmation procédurale issue d’unedécoupe découpe fonctionnelle Dans une programmation procédurale issue d’une fonctionnelle descendante, les données et les fonctions descendante, les données les fonctions travaillant données travaillant sur ceset données sont dispersées danssur desces modules sont dispersées dans des modules différents. différents. type typeVitesse est {pointMort, premiere, seconde, troisieme, quatrieme cinquieme, marcheArriere}; vitesseCourante : typeVitesse := pointMort; procedure passerVitesse( vitesseCourante : in out typeVitesse; vitesseAPasser : in typeVitesse); procedure mettreAuPointMort( vitesseCourante : in out typeVitesse);
ESISAR
I. BOUSSAID (USTHB)
GENIE LOGICIEL – ORIENTE OBJET E.CHENU
GL - COO
10
18 novembre 2013
19 / 101
Introduction
Démarche fonctionnelle
Modélisation par décomposition fonctionnelle descendante
Dispersion données/fonctions : Lorsque le logiciel évolue, il faut faire évoluer les structures de données et les fonctions en parallèle (probablement dans des modules différents). Maintenir cette cohérence est laborieuse parce que données et fonctions sont dispersées. La dispersion données/fonctions nuit à l’extensibilité !
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
20 / 101
Introduction
Démarche fonctionnelle
Modélisation par décomposition fonctionnelle descendante
Rappelez vous ! Pour qu’un logiciel soit extensible et réutilisable, il faut qu’il soit découpé en modules faiblement couplés, ainsi chaque entité peut être modifiée en limitant l’impact du changement au reste de l’application. et à forte cohésion. Il faut réunir ce qui est impacté par une même modification (« qui se ressemble s’assemble »)
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
21 / 101
Introduction
Démarche fonctionnelle
Modélisation par décomposition fonctionnelle descendante
Comment évaluer la découpe fonctionnelle descendante et la programmation procédurale en termes de couplage et cohésion ? Séparer données et fonctions sur ces données entraine : Un fort couplage par les données, Perte de cohésion (par dispersion). Le code est donc peu extensible et peu réutilisable !
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
22 / 101
Introduction
Démarche fonctionnelle
Fonctionnel versus Objet
2.2 QU’APPORTE LA MODELISATION OBJET –
–
Plus grande indépendance du modèle par rapport aux fonctionnalités demandées. ÆDes fonctionnalités peuvent être rajoutées ou modifiées, le modèle objet ne change pas. Plus proche du monde réel.
LA DEMARCHE FONCTIONNELLE Accent mis sur ce que fait le système (ses fonctions)
LA DEMARCHE OBJET Accent mis sur ce qu'est le système (ses composants) : les objets
5
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
23 / 101
Introduction
Démarche orientée objet
Démarche orientée objet On ne raisonne plus en termes d’actions mais plutôt en concepts du monde physique. Puisqu’ils appartiennent au monde physique, ces concepts peuvent être stables et réutilisables. U M G L 1 NIVERSITE
ENTOURI
ENIE
OGICIEL
FACULTE DES SCIENCES DE L’INGENIEUR DEPARTEMENT D’INFORMATIQUE ANNEE UNIVERSITAIRE 2007-2008 ILHEM BOUSSAID
On ne raisonne uniquement en verbes, mais davantage en noms.
2.2 ENCAPSULATION I. BOUSSAID On (USTHB) COO et les comportements (qui 18 novembre dit que les informations (qui sont GL des -données) sont les 2013
24 / 101
Introduction
Démarche orientée objet
Pourquoi une structuration orientée objet ? Unicité et universalité du paradigme Réduire le décalage entre monde réel et logiciel Objets réels → Objets conceptuels → Objets logiciels Réutilisabilité et évolutivité facilitées par différents mécanismes Encapsulation, Modularité, Abstraction, Polymorphisme, Héritage Faible couplage inter-objets / Forte cohésion intra-objet Paradigme qui arrive à maturité Bibliothèques de classes, Design patterns, UML, Méthodologies de développement (USDP, Agile, XP, ...), ... Environnements de développement intégrés (IDE) I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
25 / 101
Diagramme de classes
Plan 1
Introduction Qualité d’une conception Démarche fonctionnelle Démarche orientée objet
2
Diagramme de classes Classes et instances Relations entre classes Compléments sur la modélisation des classes
3
Diagramme de packages
4
Références
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
26 / 101
Diagramme de classes
Objectif
Les diagrammes de cas d’utilisation modélisent à QUOI sert le système. Le système est composé d’objets qui interagissent entre eux et avec les acteurs pour réaliser ces cas d’utilisation. Les diagrammes de classes permettent de spécifier la structure statique d’un système, en termes de classes et de relations entre ces classes.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
27 / 101
Diagramme de classes
Classes et instances
Objets Objet Identité + Etat + Comportement Une identité deux objets différents ont des identités différentes on peut désigner l’objet (y faire référence)
Un état (attributs) ensemble de propriétés/caractéristiques définies par des valeurs permet de le personnaliser/distinguer des autres objets peut évoluer dans le temps
Un comportement (méthodes) ensemble des traitements que peut accomplir un objet (ou que l’on peut lui faire accomplir) I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
28 / 101
Diagramme de classes
Classes et instances
Objets Objet : Entité concrète ou abstraite du domaine d’application. Décrit par état (attributs) + comportement (opérations)
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
29 / 101
Diagramme de classes
Classes et instances
Objets - Exemple
Objet (2) y Quelques exemples:
9
Objet
États
Comportements
Chien
Nom, race, âge, couleur
Aboyer, chercher le baton, mordre, faire le beau
Compte
N°, type, solde, ligne de crédit
Retrait, virement, dépôt, consultation du solde
Téléphone N°, marque, sonnerie, répertoire, opérateur
Appeler, Prendre un appel, Envoyer SMS, Charger
Voiture
Tourner, accélérer, s’arrêter, ffaire i lle plein, l i kl klaxonner
Plaque, marque, couleur, vitesse
USTHB - Master IL 2009-2010 I. BOUSSAID (USTHB)
- GL Ilhem BOUSSAID - COO
18 novembre 2013
30 / 101
Diagramme de classes
Classes et instances
Classes et instances
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
31 / 101
Diagramme de classes
Classes et instances
Classes et instances
Les objets possédant la même structure de données (attributs) et le même comportement (opérations) sont les représentants d’une même classe. Une classe est une abstraction qui décrit les propriétés pertinentes pour une application. Données et opérations traitant les données ne sont pas séparées, mais réunies au sein d’un même module. Cohésion ! Chaque objet est une instance d’une classe.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
32 / 101
Diagramme de classes
Classes et instances
Classes et instances Classe : Regroupement d’objets de même nature (mêmes attributs + mêmes opérations)
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
33 / 101
Diagramme de classes
Classes et instances
Classes et instances
Classes et instances (2)
Layclasse « chien » définit : Quelques exemples LesLaattributs d’un» définit: chien (nom, race, couleur, âge, . . . ) y classe « chien Lesy comportements d’un chien chercher le bâton, mordre. . . ) Les attributs d’un chien (nom, race,(Aboyer, couleur, âge…) Les comportements d’un chien (Aboyer, chercher bâton, mordre…) de chien Il peut yexister dans le monde plusieurs objetsle(ou instances) y Il peut exister dans le monde plusieurs objets (ou instances) de chien
Classe
Instances (Objets)
Chien
Mon chien: Bill, Teckel, Brun, 1 an Le chien de mon voisin: Hector, Labrador, Noir, 3 ans
Compte
Mon compte à vue: N° 210-1234567-89, Courant, 1.734 DZ, 12.500DZ Mon compte épargne: N° 083-9876543-21, Epargne, 27.000 DZ, 0DZ
Voiture
Ma voiture: ABC-123, VW Polo, grise, 0 km/h La voiture que je viens de croiser: ZYX-987, Porsche, noire, 170 km/h
11
USTHB - Master IL 2009-2010 - Ilhem BOUSSAID I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
34 / 101
D´ emarche de
conception OO
Diagramme conceptionde OOclasses
impl´ementation, etc.)
Classes et instances
conception OO
Figure 7.10 - Features diagram of the Kernel package
Représentation d’une classe 75
76
76
rectangle composé de compartiments
Compartiment 1 : Nom de la classe (commence par une majuscule, en M´ ethode de M´ ethode de gras) Conception Conception Orient´ ee Objet ramme de classes Diagramme de classes Orient´ ee Objet Compartiment 2 : Attributs Diagramme de classes A. Lewandowski Classe Attributs et erations A. Lewandowski A. Op´ Lewandowski Compartiment 3 : Opérations Classe M´ ethode de Conception Orient´ ee Objet
d’ajouter des compartiments (exceptions, ...) tions etPossibilité méthodes Résumé Repr´esentation des attributs :
on est une fonction ou une procédure UML Superstructure Specification, v2.1.1 qui peut uée aux objets ou par les d!une classe. Introduction Uneobjets classe 30 UML Superstructure Specification, v2.1.1 Repr´ e sentation Introduction Introduction pération peut s!appliquer à de nombreuses d’une Conceptsclasse de base initiale { visibilit´e nom : type e] = valeur nts Une[multiplicit´ classe Attribut 1 érentes. Dans ce cas, on dit qu!elle est Diagrammes UML Concepts de base Concepts de base Attribut 2 • rectangle `a 3 Introduction compartiments eule) . Attribut 1 ` a UML UML Opération Diagrammes UML deDiagrammes est l!implémentation d!une 1opération pour(singulier, Diagramme de cas Attribut 2 • nom d’utilisation majuscule) donnée. Opération 2 Introduction ` a UML Introduction ` a UML Diagramme de classes Opération 1 Diagramme de cas Diagramme de cas • attributs Diagramme de facultatif public + d’utilisation d’utilisation packages Opération 2 facultatif de classes Diagramme de classes privé Diagramme d’objets enDiagramme fonction des besoins • op´erations par défaut: 1 Diagramme de Diagramme de Diagramme de protégé # communication packages packages [0..1] élément pouvant être nul Argument : Diagramme de Diagramme d’objets Diagramme d’objets • plus ou moins de d´ e tails en fonction des besoins s´ equence [4] tableau de 4 élémentsDiagramme de sensDeFlux nomArgument : type = valeurParDéfaut Diagramme de Diagramme d’activit´ e Une classe communication communication [2..*] tableau dynamique sensDeFlux Diagramme d’´ etats facultatif = in, out ou inout Diagramme de Diagramme de Autres diagrammes d'au moins 2 éléments s´ equence s´ equence mais impératif Diagramme d’activit´ e Diagramme d’activit´ e D´ emarche de Une classe pour l'implémentation Diagramme d’´ etats Diagramme d’´ etats conception OO
plus ou moins de détails en fonction des besoins : Possibilité d’omettre attributs et/ou opérations
Autres diagrammes
Une classe
Autres diagrammes
D´ emarche de conception OO
I. BOUSSAID (USTHB)
D´ emarche de conception OO
GL - COO
18 novembre 2013
35 / 101
Diagramme de classes
Classes et instances
Représentation UML des attributs
Repr´esentation des attributs :
Représentation d’un attribut :
visibilit´e nom : type [multiplicit´e] = valeur initiale {p
public + privé protégé #
facultatif mais impératif pour l'implémentation I. BOUSSAID (USTHB)
facultatif facultatif par défaut: 1 [0..1] élément pouvant être nul [4] tableau de 4 éléments [2..*] tableau dynamique d'au moins 2 éléments
GL - COO
18 novembre 2013
36 / 101
Diagramme de classes
Classes et instances
Une opération une fonction ou une procédure qui Attributs etest Opérations être appliquée aux objets ou par les objets d!une clas LaReprésentation même opération peut d’une opération : s!appliquer à de nombreuse classes différentes. Dans ce cas, on dit qu!elle est Une opération représente un élément de comportement (un service) polymorphe . une classe. contenu dans ajouterons surtout les opérations en conception car cela po Une Nous méthode est l!implémentation d!uneobjet, opération fait partie donnée. des choix d’attribution des responsabilités aux objets. une classe
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
37 / 101
Diagramme de classes
Classes et instances
Représentation UML des opérations Format de description d’une opération : [Visibilité] Nom ["(" Arg ")"] [" :" Type] Visibilité : + (public), - (privé), # (protégé) Arg : liste des arguments selon le format [Dir] NomArgument : TypeArgument où Dir = in (par défaut), out, ou inout Type : type de la valeur retournée (type primitif ou classe)
Opérations abstraites (non implémentées) en italique Opérations de classe (statiques) soulignées Possibilité d’annoter avec des contraintes stéréotypées «precondition» et «postcondition» ; Programmation par contrats Possibilité de surcharger une opération : même nom, mais paramètres différents Stéréotypes d’opérations : «create» et «destroy» I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
38 / 101
Diagramme de classes
Relations entre classes
Les associations
Diagramme de classes
Connexion sémantique bidirectionnelle entre classes Relations entre classes Représentation des associations :
Nom : forme verbale, avec un sens de lecture Rôles : forme nominale, décrit une extrémité de l’association Multiplicité 1, 0..1, 0..∗, 1..∗, n..m Repr´esentation des: associations
I
Classe 1
x..y
nom association ▶
rôle 1
x..y rôle 2 {mots-clés}
C
Classe 2
D
• Nom : forme verbale, avec un sens de lecture • Rˆ oles : forme nominale, d´ecrit une extr´emit´e de
l’association
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
39 / 101
Diagramme de classes
Relations entre classes
Les Repr´eassociations sentation des associations
I
Classe 1
x..y
nom association ▶
rôle 1
x..y rôle 2 {mots-clés}
C
Classe 2
D
Interprétation en français :
• Nom : forme verbale, avec un sens de lecture
Un Classe1 nom association un Classe2 (ou un Classe2 nom association
un Classe1 sens de lecture • Rˆ oles : formesi nominale, d´einverse) crit une extr´emit´e de Un Classe1 est rôle1 d’un Classe2 et mult1 (x..y) Classe1 peuvent jouer l’association ce rôle pour un Classe2
• Multiplicit´ e :est 1,rôle2 0..1,d’un 0..*, 1..*,etn..m Un Classe2 Classe1 mult2 (x..y) Classe2 peuvent jouer ce rôle pour un Classe1
D c
• Mots cl´ es : set, ordered set, list Exemple :
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
40 / 101
Diagramme de classes
Relations entre classes
Les associations
Repr´esentation des associations
I
Classe 1
x..y
nom association ▶
rôle 1
x..y rôle 2 {mots-clés}
C
Classe 2
D
en langage de programmation orienté objet • Interprétation Nom : forme verbale, avec un sens de lecture La classe Classe1 a un attribut de nom rôle2
• Rˆ oles : forme d´e0..1}, crit une extr´emit´ de sinon → Type = C2nominale, si mult2 ∈ {1, ou collection dee Classe2 La classe Classe2 a un attribut de nom rôle1 l’association
→ Type = C1 si mult1 ∈ {1, 0..1}, ou collection de Classe1 sinon
• Multiplicit´ e : 1, 0..1, 0..*, 1..*, n..m
Exemple :
D c
• Mots cl´ es : set, ordered set, list
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
41 / 101
Diagramme de classes
Relations entre classes
Multiplicité des associations
:07 14
La multiplicité spécifie le nombre d’instances d’une classe pouvant être liées à une seule instance d’une classe associée. Elle contraint le nombre d’objets liés. Exemple : une personne peut posséder plusieurs voitures (entre zéro et un nombre quelconque) ; une voiture est possédée par une seule personne.
ation
OSITION I. BOUSSAID
(USTHB)
GL - COO
18 novembre 2013
42 / 101
Diagramme de classes
Relations entre classes
d’une association peut porter une indication de multiplicité qui Multiplicité des associations objets de la classe considérée peuvent être liés à un objet de multiplicité est une information portée par l’extrémité la forme d’une expression entière. 1
Un et un seul
0..1
Zéro ou un
N
N (entier naturel)
M .. N
De M à N (entiers naturels)
*
De zéro à plusieurs
0 .. *
De zéro à plusieurs
1 .. *
D'un à plusieurs
rend compte du fait que plusieurs personnes travaillent pour I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
43 / 101
Diagramme de classes
Relations entre classes
Multiplicité des associations
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
44 / 101
Multiplicité
Diagramme de classes
Relations entre classes
Multiplicité des associations !
La multiplicité spécifie le nombre d!instances d!une classe pouvant être liées à une seule instance d!une Exemple : classe associée. Elle contraint le nombre d!objets liés
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
45 / 101
Diagramme de classes
Relations entre classes
Multiplicité des associations Exemple :
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
46 / 101
Diagramme de classes
Relations entre classes
Association Reflexive
Exemple de diagramme d’objets :
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
47 / 101
Diagramme de classes
Relations entre classes
Association multiple
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
48 / 101
Diagramme de classes
Relations entre classes
Relations entre classes
Exemple récapitulatif Exemple
Entreprise
0..*
◀ travaille pour
employeur
1..* employé
emploie ▶
Personne
patron 0..1
*
dirige ▼
employés
Association réflexive
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
49 / 101
s
Diagramme de classes
Relations entre classes
• Directionnalit´ e des associations Navigabilité d’une association • bidirectionnelles par d´efaut • la navigation peut ˆ etre restreinte `a une seule Par défaut, les associations sont navigables dans les deux directions. direction la navigation peut être restreinte à une seule direction : les instances (association `a navigabilit´ e restreinte) d’une classe ne "connaissent" pas les instances d’une autre.
Exemple On restreint la navigabilité d’une association à un seul sens à l’aide d’une flèche. Citoyen
*
vote pour ▶
0..1
Candidat
ces trois notations ont la même sémantique
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
50 / 101
Diagramme de classes
Relations entre classes
Navigabilité d’une association Qu’est-ce que la navigabilité d’une association entre C1 et C2 ? Capacité d’une instance de C1 (resp. C2) à accéder aux instances de C2 (resp. C1)
Par défaut : Navigabilité dans les deux sens : C1 a un attribut de type C2 et C2 a un attribut de type C1
Spécification de la navigabilité : Orientation de l’association : C1 a un attribut du type de C2, mais pas l’inverse
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
51 / 101
Diagramme de classes
Relations entre classes
Classe d’Association Classe Attribuée
Une classe association peut participer à d’autres associations :
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
52 / 101
Classe-association Diagramme de classes
Relations entre classes
Classe d’Association
!
Une classe-association est une Une classe-association est une association qui une est aussi classe. une classe. association qui est aussi
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
53 / 101
Diagramme de classes
Relations entre classes
Classe d’Association
Ne placez pas les attributs d’une association dans une classe.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
54 / 101
Diagramme de classes
Relations entre classes
Classe d’Association Exemple de diagramme d’objets :
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
55 / 101
Diagramme de classes
Relations entre classes
Classe d’Association Équivalences
Parfois, l’information véhiculée par une classe-association peut être véhiculée sans perte d’une autre manière
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
56 / 101
Diagramme de classes
Relations entre classes
Association n-aire En général, les associations sont binaires N-aires : au moins trois instances impliquées
Associations n-aires
A n’utiliser que lorsqu’aucune autre solution n’est possible !
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
57 / 101
Diagramme de classes
Relations entre classes
Association n-aire
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
58 / 101
Diagramme de classes
Relations entre classes
Association n-aire
Un cours ne peut exister que s’il existe un lien entre un objet Enseignant et un objet Groupe. Quand le lien est rompu (effacé), le cours l’est également.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
59 / 101
Diagramme de classes
Relations entre classes
Si un cours doit pouvoir exister indépendamment d’un lien entre un enseignant et un groupe, il faut utiliser une association ternaire.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
60 / 101
Diagramme de classes
Relations entre classes
Dépendance
Une classe A dépend d’une classe B (noté A - - - - - - - - > B) si : Il existe une association navigable de A vers B (ou A possède un attribut de type B) Une méthode de A a un paramètre ou une var. locale de type B
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
61 / 101
Diagramme de classes
Relations entre classes
Agrégation
osite entraîne la destruction de tous ses éléments Une agrégation est un cas particulier d’association non symétrique cycleexprimant de vieunedes parties). relation de contenance d’un élément dans un ensemble. Les agrégations n’ont pas besoin d’être nommées : implicitement elles signifient « contient », « est composé de ». On représente l’agrégation par l’ajout d’un losange vide du côté de l’agrégat (l’ensemble).
Agregat
Element 1..*
Composite I. BOUSSAID (USTHB)
0..* GL - COO
Element
18 novembre 2013
62 / 101
Diagramme de classes
Relations entre classes
Agrégation - Exemples Une pièce est composée de murs. Un mur peut être commun à plusieurs pièces
Agrégation !
L!agrégation est une forme d!association forte dans laquelle un objet agrégat est constitué de constituants agrégés. Elle est transitive et antisymétrique.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
63 / 101
u cycle de vie des parties). Diagramme de classes
Relations entre classes
composition Relation transitive et antisymétrique Une composition est une agrégation plus forte impliquant que : un élément ne peut appartenir qu’à un seul agrégat composite (agrégation non partagée) ; la destruction de l’agrégat composite (l’ensemble) entraîne la Agregat Element destruction de tous ses éléments (les parties) le composite est responsable du cycle de vie 0..* des parties. 1..*
Composite
Element 1
I. BOUSSAID (USTHB)
0..*
GL - COO
18 novembre 2013
64 / 101
Diagramme de classes
Relations entre classes
Composition - Exemples Une partie constituante ne peut appartenir à plus d’un assemblage ;
Composition
une fois une partie constituante affectée à un assemblage, sa durée de vie coïncide avec ce dernier. !
Forme d!agrégation qui implique : !
!
qu!une partie constituante ne peut appartenir à plus d!un assemblage ; une fois une partie constituante affectée à un assemblage, sa durée de vie coïncide avec ce dernier.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
65 / 101
Diagramme de classes
Relations entre classes
Composition - Exemples
Un mur est composé de briques. Une brique n’appartient qu’à un mur
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
66 / 101
Diagramme de classes
Relations entre classes
Agrégation vs. composition Quand mettre une composition plutôt qu’une agrégation ? Pour décider de mettre une composition plutôt qu’une agrégation, on doit se poser les questions suivantes : Est-ce que la destruction de l’objet composite (du tout) implique nécessairement la destruction des objets composants (les parties) ? C’est le cas si les composants n’ont pas d’autonomie vis-à-vis des composites. Lorsque l’on copie le composite, doit-on aussi copier les composants, ou est-ce qu’on peut les «réutiliser», auquel cas un composant peut faire partie de plusieurs composites ?
Si on répond par l’affirmative à ces deux questions, on doit utiliser une composition.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
67 / 101
Diagramme de classes
Relations entre classes
Propagation (ou déclenchement) Application automatique d’une opération à un réseau d’objets à partir d’un objet initial quelconque.
Propagation l’agrégation permet un mécanisme de délégation d’opérations : (ou déclenchement) l’opération Document.copier() peut être déléguée à l’opération
Paragraphe.copier() en l’appliquant à toutes les instances de ! Application automatique d!une opération à unà son réseau paragraphe qui composent le document. Celle-ci peut tour être d!objets à partir d!un objet initial quelconque. déléguée dans les mêmes conditions à Caractère.copier().
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
68 / 101
Diagramme de classes
Relations entre classes
Qualification Association Qualifiée :
Un qualicatid d’association est une liste d’attributs dans une association binaire où les valeurs des attributs sélectionnent un ou plusieurs objets liés. Un qualificatif agit toujours sur une association dont la multiplicité est plusieurs I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
69 / 101
Diagramme de classes
Relations entre classes
Contraintes UML permet d’associer une contrainte à un élément de modèle de plusieurs façons. Sur les deux diagrammes suivants, la contrainte porte sur un attribut qui doit être positif.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
70 / 101
Diagramme de classes
Relations entre classes
Contraintes
La contrainte frozen signifie que l’association, la classe ou l’attribut, une fois créé ne changera jamais (ici frozen précise que le nombre de roues d’un véhicule ne peut pas varier). La contrainte subset précise que le président est également un membre du comité. La contrainte xor (ou exclusif) précise que les employés de l’hôtel n’ont pas le droit de prendre une chambre dans ce même hôtel. I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
71 / 101
Diagramme de classes
Relations entre classes
Contraintes
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
72 / 101
Diagramme de classes
Relations entre classes
Contraintes
Le NAS d’un employé, une fois créé, ne peut changer Read only signifie que la valeur peut changer à l’intérieur de la classe mais ne peut être changée de l’extérieur de la classe (Le salaire, ne peut être modifié à l’extérieur de la classe Employe)
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
73 / 101
entre classes ecialisation G´en´eRelations ralisation/Sp´
Diagramme de classes
Héritage (Généralisation/Spécialisation) L’héritage une relation de spécialisation/généralisation.
tationLes: éléments spécialisés héritent de la structure et du comportement des éléments plus généraux (attributs et opérations)
Classe B
Super-classe: plus générale
Sous-classe: plus spécialisée
Classe A
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
74 / 101
Diagramme de classes
Relations entre classes
Héritage
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
75 / 101
Diagramme de classes
Relations entre classes
Héritage
Pour que ça fonctionne : Principe de substitution : toutes les propriétés de la classe parent doivent être valables pour les classes enfant principe du « A est un B » ou « A est une sorte de B » : toutes les instances de la sous-classe sont aussi instances de la super-classe. Par exemple, toute opération acceptant un objet d’une classe Animal doit accepter tout objet de la classe Chat (l’inverse n’est pas toujours vrai).
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
76 / 101
Diagramme de classes
Relations entre classes
senter ? Héritage
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
77 / 101
Diagramme de classes
Relations entre classes
p´ ecialisation Héritage
• Extension coh´ erente de classes
Relation transitive, non réflexive, et non symétrique ! elation non-r´eflexive, non-sym´etrique ! Classe A Classe A
Impossible !
I. BOUSSAID (USTHB)
Classe B
GL - COO
18 novembre 2013
78 / 101
Diagramme de classes
Relations entre classes
Héritage - Exemple
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
79 / 101
Diagramme de classes
Relations entre classes
Héritage Multiple Une classe peut avoir plusieurs classes parents. On parle alors d’héritage multiple. Exemple :
Le langage C++ est un des langages objet permettant son implantation effective. Java ne le permet pas. I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
80 / 101
Diagramme de classes
Diagramme de classes
Héritage Multiple
Relations entre classes
G´en´eralisation/Sp´ecialisation
Comment multiple Commentéviter ´eviter l’héritage l’h´eritage multiple ?? Première solution déléguer: d´ • Premi` ere :solution el´ eguer Classe A
Classe A
Classe B
Classe C
I. BOUSSAID (USTHB)
Classe B
Classe C
GL - COO
18 novembre 2013
81 / 101
i
e
L
Diagramme de classes
Relations entre classes
Diagramme de classes
Héritage Multiple
G´en´eralisation/Sp´ecialisation
Comment ´eviterl’héritage l’h´eritage multiple ?? Comment éviter multiple • Deuxi` eme: solution eriterladeplus la importante classe la plus Deuxième solution hériter de :lah´ classe et déléguer les autres importante et d´ el´eguer les autres
L
ses
Classe A
Classe A
Classe B
Classe B
s
t´ e
Classe C
I. BOUSSAID (USTHB)
Classe C
GL - COO
18 novembre 2013
82 / 101
Diagramme de classes
Relations entre classes
Énumerations
Enumération
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
83 / 101
Diagramme de classes
objet élémentaire avec UML Classes Modélisation abstraites
Classes abstraites
Compléments sur la modélisation des classes
Diagrammes de classes
Une méthode est dite abstraite lorsqu’on connaît son entête Une méthode lorsqu'on sonréalisée. entête mais (signature) maisest pasdite la abstraite manière dont elle connaît peut être
la manière dont elle peut être réalisée.
pas
Il appartient aux classes enfant de définir les methodes abstraites.
Il appartient aux classes enfant de dénir les methodes abstraites.
Une classe est dite abstraite lorsqu’elle définit au moins une méthode abstraite lorsqu’une classe parent contient uneméthode méthode Une classe est diteouabstraite lorsqu'elle dénit au moins une abstraitenon ou encore lorsqu'une classe parent contient une méthode abstraite abstraite réalisée.
non encore réalisée.
Pierre Gérard (P13 IUT Villetaneuse) I. BOUSSAID (USTHB)
Introduction à UML 2 GL - COO
DUT Informatique S2D 66 / 342 18 novembre 2013 84 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Classes Abstraites
Classes abstraites - Exemple Exemple : classe abstraite
FormeGéométrique - couleur: string
opération abstraite
+ calculeSurface() + type() + colorier(string)
s
´ e
Rectangle - longueur - largeur + calculeSurface() + type()
Cercle - rayon + calculeSurface() + type()
return PI x rayon²
return longueur x largeur
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
85 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Les interfaces
Le rôle d’une interface est de regrouper un ensemble d’opérations assurant un service cohérent offert par une classe. Une interface est définie comme une classe, avec les mêmes compartiments. Les principales différences sont : la non-utilisation du mot-clé "abstract", car l’interface et toutes ses méthodes sont, par définition, abstraites ; l’ajout du stéréotype "interface" avant le nom de l’interface.
Toutes les classes implémentant une interface doivent implémenter toutes les opérations décrites dans l’interface
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
86 / 101
Diagramme de classes
UML
Compléments sur la modélisation des classes
• elles doivent mettre en œuvre les op´ erations de
` a UML e cas
l’interface Les interfaces
e classes e
’objets e n e
’activit´ e ’´ etats mmes
e OO
«interface» Interface 1
Représentation synthétique Interface 1
+ opération1() + opération2() . . .
Représentation détaillée
Exemple :
de ion Objet
Diagramme de classes
owski
G´en´eralisation/Sp´ecialisation
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
87 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Classe Cliente de l’interface Quand une classe dépend d’une interface (interface requise) pour réaliser ses opérations, elle est dite "classe cliente de l’interface". Graphiquement, cela est représenté par une relation de dépendance entre la classe et l’interface. Une notation lollipop équivalente est aussi possible.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
88 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Les interfaces : implémentation et utilisation
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
89 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Attributs dérivés
Les attributs dérivés peuvent être calculés à partir d’autres attributs et des formules de calcul. Les attributs dérivés sont symbolisés par l’ajout d’un "/" devant leur nom. Lors de la conception, un attribut dérivé peut être utilisé comme marqueur jusqu’à ce que vous puissiez déterminer les règles à lui appliquer.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
90 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Attributs de classe Par défaut, les valeurs des attributs définis dans une classe di fèrent d’un objet à un autre. Parfois, il est nécessaire de dé finir un attribut de classe qui garde une valeur unique et partagée par toutes les instances. Graphiquement, un attribut de classe est souligné
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
91 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Opérations de classe Semblable aux attributs de classe Une opération de classe est une propriété de la classe, et non de ses instances. Elle n’a pas accès aux attributs des objets de la classe.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
92 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Diagrammes de classes à différents niveaux On peut utiliser les diagrammes de classes pour représenter un système à différents niveaux d’abstraction : Le point de vue spécification met l’accent sur les interfaces des classes plutôt que sur leurs contenus. Le point de vue conceptuel capture les concepts du domaine et les liens qui les lient. Il s’intéresse peu ou prou à la manière éventuelle d’implémenter ces concepts et relations et aux langages d’implémentation. Le point de vue implémentation, le plus courant, détaille le contenu et l’implémentation de chaque classe.
Les diagrammes de classes s’étoffent à mesure qu’on va de hauts niveaux à de bas niveaux d’abstraction (de la spécification vers l’implémentation)
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
93 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Élaboration d’un diagramme de classes Démarche
Trouver les classes du domaine étudié. généralement des concepts ou des substantifs du domaine.
Trouver les associations entre classes. Souvent des verbes, ou des constructions verbales, mettant en relation plusieurs classes.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
94 / 101
Diagramme de classes
Compléments sur la modélisation des classes
Élaboration d’un diagramme de classes Démarche
Trouver les attributs des classes. Souvent des substantifs, correspondant à un niveau de granularité plus fin que les classes. Les adjectifs et les valeurs correspondent souvent à des valeurs d’attributs.
Organiser et simplifier le modèle en éliminant les classes redondantes et en utilisant l’héritage. Tester les chemins d’accès aux classées Itérer et raffiner le modèle. Un modèle est rarement correct dès sa première construction. La modélisation objet est un processus non pas linéaire mais itératif.
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
95 / 101
Diagramme de packages
Plan 1
Introduction Qualité d’une conception Démarche fonctionnelle Démarche orientée objet
2
Diagramme de classes Classes et instances Relations entre classes Compléments sur la modélisation des classes
3
Diagramme de packages
4
Références
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
96 / 101
Diagramme de packages
Packages
Qu’est-ce qu’un paquetage (package) ? Élément de modélisation qui : Permet de grouper d’autres éléments de modélisation (classes, autres paquetages, ...) Sert d’espace de désignation Peut inclure d’autres package Peut importer d’autres package L’héritage entre package est possible
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
97 / 101
Diagramme de packages
Diagramme de Packages Notation
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
98 / 101
Diagramme de packages
Diagramme de Packages Exemple
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
99 / 101
Diagramme de packages
Packages
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
100 / 101
Références
Plan 1
Introduction Qualité d’une conception Démarche fonctionnelle Démarche orientée objet
2
Diagramme de classes Classes et instances Relations entre classes Compléments sur la modélisation des classes
3
Diagramme de packages
4
Références
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
101 / 101
Références
Michael Blaha et James Rumbaugh Modélisation et conception orientées objet avec UML2, Christine Solnon Modélisation UML, Pierre Gérard Génie Logiciel - Principes et Techniques, A. Lewandowski Méthode de Conception Orientée Objet Des figures et des transparents empruntés à Delphine Longuet et Laurent AUDIBERT
I. BOUSSAID (USTHB)
GL - COO
18 novembre 2013
101 / 101