Introduction aux diagrammes de classes par des exemples.
Ce cours fait suite à des cours passés qui ont introduit les use cases et diagrammes de séquences.
Les étudiants de l'IUT connaissent lors de l'introduction de ce cours déjà le concept d'objet.
1. Analyse et Conception avec UML
Les diagrammes
de classes
blay@unice.fr
www.polytech.unice.fr/~blay
IUT Nice-Sophia Antipolis
mars 2011
Site web du module :
http://anubis.polytech.unice.fr/iut/
1
2. Bibliographie
•Voir sur le site web les autres cours.
•UML Par la pratique (surtout dans sa dernière édition)
(présent à la bibliothèque de l’IUT)
•Méthodologie en Ingénierie du logiciel, Modélisation Orientée
objet, M.Grimaldi – janvier 2010
2
3. Intro par l’exemple Relations Application
Modélisation structurelle
Les classes et les objets modélisent les objets matériels ou
immatériels qui existent dans le système que l’on essaie de décrire
Les relations entre les classes et les objets établissent les
connexions entre les divers éléments de modélisation et montrent
l'agencement architectural
Le diagramme de classes et le diagramme d’objets sont les pièces
maîtresses de la vue structurale
– Dans UML, ils sont répertoriés comme des diagrammes
montrant la structure "statique"
– Le diagramme d’objets est un exemple du diagramme de classes
– Le diagramme d’objets donne une photographie du système
dans le temps
03/11 3
4. Intro par l’exemple Relations Application
Classes
Une classe est une collection (modèle) d’objets avec une
structure commune, un comportement commun, des relations
identiques et une sémantique identique
On identifie les classes en examinant les objets dans les
diagrammes
La représentation graphique d’une classe consiste en un
rectangle avec 3 compartiments
Les noms des classes devraient être choisis dans le
vocabulaire du domaine
– il est bon d’établir des standards pour les nom
– i.e., toutes les classes sont des noms communs commençant par
une majuscule
03/11 4
5. Intro par l’exemple Relations Application
Notations UML pour classes et
objets
03/11 5
7. Intro par l’exemple Relations Application
Détermination des concepts du
domaine
03/11
8. Intro par l’exemple Relations Application
Détermination des concepts du
domaine
La détermination des concepts s’effectue sur la base des
cas d’utilisation par simple analyse grammaticale de la
description textuelle.
D'une manière générale,
03/11
9. Intro par l’exemple Relations Application
Détermination des concepts du
domaine
La détermination des concepts s’effectue sur la base des
cas d’utilisation par simple analyse grammaticale de la
description textuelle.
D'une manière générale,
les noms représentent des concepts ou des attributs
tandis
03/11
10. Intro par l’exemple Relations Application
Détermination des concepts du
domaine
La détermination des concepts s’effectue sur la base des
cas d’utilisation par simple analyse grammaticale de la
description textuelle.
D'une manière générale,
les noms représentent des concepts ou des attributs
tandis
que les verbes représentent des comportements
(opérations, méthodes)
03/11
11. Intro. Intro. UML De Merise à UML
Deux règles utiles
Règle du cartographe : Le modèle du domaine se
construit de la même façon qu’un cartographe dessine
une carte :
En utilisant le vocabulaire du domaine étudié.
En excluant les éléments non pertinents.
En n’incluant pas d’éléments inexistants dans le
domaine.
Choix entre concept et attribut : Si un élément du
domaine étudié est autre chose qu’un nombre ou un
simple texte, alors il s’agit probablement d’un concept et
non d’un attribut.
09/1
0
12. Intro par l’exemple Relations Application
Notes
• Un attribut ne peut représenter qu’une valeur primitive (entier,
texte, date, identificateur, matricule, . . . ).
• Un attribut ne peut représenter que des données relatives au
concept auquel il est associé.
Exemple :
02/11 UML et RUP : un survol T. Libourel ; M Huchard
13. Intro par l’exemple Relations Application
Notes
• Un attribut ne peut représenter qu’une valeur primitive (entier,
texte, date, identificateur, matricule, . . . ).
• Un attribut ne peut représenter que des données relatives au
concept auquel il est associé.
Exemple :
02/11 UML et RUP : un survol T. Libourel ; M Huchard
14. Intro par l’exemple Relations Application
Notes
• Un attribut ne peut représenter qu’une valeur primitive (entier,
texte, date, identificateur, matricule, . . . ).
• Un attribut ne peut représenter que des données relatives au
concept auquel il est associé.
Exemple :
02/11 UML et RUP : un survol T. Libourel ; M Huchard
15. UML au travail : Une ludothèque
(1) Nous voulons informatiser une ludothèque pour favoriser la
consultation des jeux proposés par la ludothèque.
(2) Les adhérents peuvent emprunter des jeux en s’adressant à un
conseiller qui enregistre l’emprunt.
(3)Les jeux empruntés sont rendus à un conseiller....
(4) Un adhérent peut réserver des jeux. Une réservation précise
l’emprunteur, le jeu et la date de la demande de réservation. L’adhérent est averti
quand le jeu revient en rayon.
(5) Pour organiser un événement le conseiller spécialisé doit alors
donner les informations suivantes : les jeux à tester, le nombre maximal et
minimal de participants attendus, la date, et l’heure de début de l’événement.
(6) Un adhérent peut s’inscrire pour participer à un événement à
condition qu’il y ait encore de la place.
(7) Un adhérent peut payer sa cotisation en ligne par un système de
paiement externe
10
16. Dict. U.C. Process. Compléments.
Ludothèque
/82
17. Diagramme de séquence
- Représentez le diagramme de séquence Système
correspondant au cas d'utilisation
Un conseiller enregistre l’emprunt d’un jeu pour un adhérent
1) Le conseiller s’authentifie;
2) Le conseiller saisit l’identifiant du jeu et de l’adhérent
3) Le système vérifie la disponibilité du jeu
4) Le système vérifie que la cotisation est bien payée
5) Le système vérifie que l’adhérent n’a pas de pénalité
impayée
6) Le système enregistre l’emprunt.
7) Le système signale que l’emprunt est valide.
12
19. Relations entre
classes
es
nd
atio s
icit tion
pl ta «Relations»,
Ex no associations,
agrégation,
généralisation,
compléments
14
20. Intro par l’exemple Relations Application
Relations
Les relations fournissent un chemin de communication entre
objets : Les diagrammes de séquence sont parcourus pour
déterminer quels liens doivent exister pour obtenir le
comportement souhaité – si deux objets ont besoin de se
parler, il doit exister un lien entre eux
Trois types de relations :
Association
Agrégation
Dépendance
03/11 15
22. Intro par l’exemple Relations Application
Relations
Une association est une connexion bi-directionnelle entre
classes
– Une association est représentée par une ligne connectant les
classes
Une agrégation est une relation plus forte et s’établit
entre un tout et ses parties
– Une agrégation est représentée par une ligne connectant les
classes avec un losange du côté de la classe représentant le
tout
Une dépendance est une relation faible établie entre un
client et un fournisseur et où le client n’a pas de
connaissance sémantique sur le fournisseur
– Une dépendance est représentée par une flèche en pointillés
allant du client au fournisseur
03/11 17
23. Intro par l’exemple Relations Association Application
Associations Nommage
Rôle
Multiplicité
Les associations peuvent avoir des étiquettes: Navigation
Il s'agit du nom de l'association.
Les associations peuvent avoir des noms de rôle:
un nom de rôle identifie le rôle ou la responsabilité de
l'objet dans l'association.
Les associations peuvent indiquer la navigation avec une
pointe de flèche ouverte:
Pas de flèche => bidirectionnelle
La plupart des associations sont unidirectionnelles en
fin de conception.
Les associations peuvent indiquer une multiplicité.
03/11 18
24. Intro par l’exemple Relations Association Application
Nommage des associations
• Une association peut être nommée afin de faciliter la
compréhension des modèles. Dans ce cas le nom est indiqué
au milieu du lien symbolisant l’association
Nommage
A nom B Rôle
Multiplicité
Navigation
• L’usage recommande de choisir comme nom d’une
association une forme verbale active (exemple : travaille
pour) ou passive (exemple : est employé par)
travaille pour
Personne Société
est employé par
Personne Société
03/11 19
25. Intro par l’exemple Relations Association Application
Rôles des extrémités d’association
On peut attribuer à une extrémité d’une association un nom
appelé rôle qui décrit comment une classe source voit une
classe destination au travers de l’association
Le rôle est placé près de la fin de l’association et à côté de la
classe à laquelle il est appliqué Nommage
Rôle
L’utilisation des rôles est optionnelle Multiplicité
Représentation et exemple Navigation
A B
rôle de B
employeur Emploie>
Société Personne
employé
03/11 20
26. Intro par l’exemple Relations Association Application
Nommage des associations…
Par défaut le sens de lecture du nom d’une
association est de gauche à droite
Dans le cas où la lecture du nom est ambiguë, on
peut ajouter l’un des signes < ou > pour indiquer
le sens de lecture
• Exemples
< travaille pour
Société Personne
Personne 1
*
< est père de
03/11 21
27. Intro par l’exemple Relations Association Application
Multiplicité : exemple
Nommage
possède Rôle
1..* 0..* Voiture Multiplicité
Personne
Navigation
gouverne
1 1
Président Pays
Nœud *
* Un réseau informatique est composé de
nœuds inter-connectés
Association réflexive
03/11 22
28. Intro par l’exemple Relations Association Application
Cas particuliers de relations
Relations réflexives
encadre
chef
1
Personne sous-fifre
1..*
Une relation réflexive lie
des objets de même classe
03/11 23
29. Intro par l’exemple Relations Association Application
Multiplicité
La multiplicité est définie par le nombre d’objets qui participent
à une relation
La multiplicité est le nombre d’instances d’une classe reliées à
UNE instance d’une autre classe
Pour chaque association et agrégation, il y a deux multiplicités :
une à chaque bout de la relation
1
Classe Exactement une
*
Classe Plusieurs (0 à n)
0,1
Classe Optionnelle (0 ou 1)
1,2,4
Classe Cardinalité spécifiée
1-10
03/11
Classe
24
Intervalle
30. Intro par l’exemple
Diagramme de Classes- Relations Relations Association Application
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
Classe1 Classe2
Si la navigation est restreinte, une flèche indique
le sens de navigation
Les objets de la Classe 1 sont accessibles à la
classe 2 Nommage
Rôle
Classe1 Classe2 Multiplicité
03/11 25 Navigation
31. Intro par l’exemple Relations Agrégation Application
Composition et Agrégation
Cas particuliers de relations :
– Notion de tout et parties
1 transporte passager
Voiture Personne
moyen_de_transport *
1 1
Composition roulement >
Roue
4,6
structure > 1
Agrégation Chassis
03/11 26
32. Intro par l’exemple Relations Agrégation Application
Agrégation
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
Représentation
L’agrégation permet de modéliser une contrainte
d’intégrité et de désigner l’agrégat comme gérant de cette
contrainte
03/11 27
33. Intro par l’exemple Relations Agrégation Application
Agrégation…
Exemple 1
– Une personne est dans une foule
– Une foule contient plusieurs personnes
* Personne
Foule
Contient >
Exemple 2 (Agrégation partagée)
– Une personne fait partie de plusieurs équipes
– Une équipe contient plusieurs personnes
* * Personne
Équipe
< membre
03/11 28
35. Intro par l’exemple Relations Agrégation Application
Agrégation … Composition
La composition est un cas particulier de
l’agrégation avec un couplage plus important
La classe qui possède le rôle prédominant
dans une composition est appelée classe
composite ou classe conteneur
Représentation
Composite Composant
03/11 30
36. Intro par l’exemple Relations Agrégation Application
Composition
La composition est une agrégation forte.
Les cycles de vies des éléments (les "composants") et de
l'agrégat (composite) sont liés : si l'agrégat est détruit
(ou copié), ses composants le sont aussi.
A un même moment, une instance de composant ne peut
être liée qu'à un seul agrégat.
Les "objets composites" sont des instances de classes
composées.
03/11 31
37. Intro par l’exemple Relations Agrégation Application
Composition
Cycle de vie dépendant : la
destruction du système de
cours => la destruction des
cours
1 seul!
Les composants ne peuvent
pas être partagés
Attention
un Point de vue
03/11 32
38. Composition
Indicated by containment or a filled diamond.
Whole both creates and destroys part objects.
Composite is a higher level abstraction than the
parts:
Allows the class model to be viewed and
manipulated at many levels of abstraction
Stronger form of aggregation:
Implies a multiplicity of no more than one
with the whole
Forms a tree with its parts.
33
39. Intro par l’exemple Relations Agrégation Application
Agrégation … Composition
La composition et l’agrégation sont deux vues
subjectives qui sont utilisées pour ajouter de la
sémantique au modèle lorsque c’est pertinent de le
faire même si cette pertinence ne reflète pas la
réalité
Exemple
Société Echiquier
matricule ligne
colonne
*
1
0..1
1
Employé Case
03/11 34
40. Intro par l’exemple Relations Généralisation Application
Généralisation
C’est une relation de classification entre un élément général et un élément
plus spécifique
L’élément le plus spécifique est cohérent avec l’élément le plus général et
contient plus d’informations
Exemple
Véhicule
Voiture Bus Camion
03/11 35
41. Intro par l’exemple Relations Généralisation Application
Généralisation
Extension par l’ajout d’attributs et d’opérations
03/11 36
42. Intro par l’exemple
Diagramme de Classes- Relations Relations Généralisation Application
Héritage
L’héritage est une relation entre une super-classe
(classe de base) et ses sous-classes (classes
dérivées)
Deux manières d’identifier une relation
d’héritage :
Généralisation
Spécialisation
Les éléments communs (attributs,
comportements, relations) sont reportés au
niveau le plus haut de la hiérarchie
03/11 37
43. Generalization 4
Subclasses may be extended by adding:
New attributes
New operations
New attributes
New operations
38
44. Intro par l’exemple Relations Généralisation Application
Héritage des relations
Les relations sont héritées par les sous classes :
VEHICULE motorisation MOTEUR
1..2
VOITURE CAMION
lien logique
REPERTOIRE FICHIER
1..* *
DRIVER FICHIER_TEXTE FICHIER_BINAIRE
03/11 39
45. Generalization substitutability
Liskov substitution principle:
“An instance of a subclass must be freely
substitutable for an instance of its superclass”.
An object with a relation to a general object should
be able to use the general object's derived objects
without knowing it.
Print!
40
46. Intro par l’exemple Relations Généralisation Application
Diagramme de classes…
Autre exemple Réservation
Rabais : Real
Véhicule NumRes : Integer
DateRes : Date
Matricule : String Montant : Money
Kilométrage : Integer 1..* *
État : String Confirmer()
<concerne
Annuler()
1..*
1
Camion Voiture Employé
Charge : Integer Classe : String Matricule : String
NbrPlaces : Integer Nom : String
Démarrer() Réserver()
Démarrer()
03/11 41
47. Intro par l’exemple Relations Raffinements Application
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
Entreprise 0..* 0..* Produits
{Ordonné}
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 :
Ordonné
par ...
03/11 42
48. Intro par l’exemple Relations Raffinements Application
Association « ou-exclusif »
Contrat *
d’assurance Un contrat d’assurance concerne une
entreprise ou une personne mais pas
*
{XOR} les deux en même temps
1 1
Personne Entreprise
03/11 43
49. Intro par l’exemple Relations Raffinements Application
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
1..* Membre de > 1
Politicien {Sous-ensemble} Partie politique
1 Chef de > 1
03/11 44
50. Intro par l’exemple Relations Raffinements Application
Association Qualifiée
Utilisée avec une relation de multiplicité *.
Permet de trier la relation en fonction des valeurs
d’un attribut.
Qualifier
03/11 45
51. Intro par l’exemple Relations Raffinements Application
Association Qualifiée
03/11 46
52. Intro par l’exemple Relations Raffinements Application
Classe d’association
Il est possible de représenter une association par
une classe pour ajouter par exemple des attributs
ou des opérations dans l ’association
La classe attachée à l’association est appelée une
classe d’association ou classe associative
La classe d’association possède à la fois les
caractéristiques d’une association et celle d’une
classe et peut, à ce titre, participer à d’autres
relations dans le modèle
La classe d’association est attachée à l’association
avec une ligne en pointillée
03/11 47
53. Intro par l’exemple Relations Raffinements Application
Classe d’association : exemple
Une classe d’association est utilisée quand une
information semble appartenir aux deux objets ou à
aucun objet
1..* Inscrit à > 0..*
Étudiant Cours
Évaluation
03/11 48
54. Intro par l’exemple Relations Raffinements Application
Relations n-aires
Relations entre plus de 2 classes (à éviter si possible)
Enseignement
* 1..*
PROFESSEUR MATIERE
Enseignant Enseignée
Destinataire
1..*
CLASSE
0..* 1..* 1..*
PROFESSEUR Enseignement MATIERE
1 Enseignée
Enseignant 1..*
Destinataire 1..*
CLASSE
03/11 49
55. •UML Par la pratique (surtout dans sa dernière édition)
•Méthodologie en Ingénierie du logiciel, Modélisation Orientée objet,
M.Grimaldi – janvier 2010
Application
Système de réservation de vol
Approfondissement Par l’exemple
56. Interview des experts métier
1. Des compagnies aériennes proposent différents vols.
2. Un vol est ouvert à la réservation et refermé sur ordre de la
compagnie.
3. Un client peut réserver un ou plusieurs vols, pour des
passagers différents.
4. Une réservation concerne un seul vol et un seul passager.
5. Une réservation peut être annulée ou confirmée.
6. Un vol a un aéroport de départ et un aéroport d'arrivée.
7. Un vol a un jour et une heure de départ, et un jour et une
heure d'arrivée.
8. Un vol peut comporter des escales dans des aéroports.
9. Une escale a une heure d'arrivée et une heure de départ.
10. Chaque aéroport dessert une ou plusieurs villes.
57. Interview des experts métier
1. Des compagnies aériennes proposent différents vols.
2. Un vol est ouvert à la réservation et refermé sur ordre de la
compagnie.
3. Un client peut réserver un ou plusieurs vols, pour des
passagers différents.
4. Une réservation concerne un seul vol et un seul passager.
5. Une réservation peut être annulée ou confirmée.
6. Un vol a un aéroport de départ et un aéroport d'arrivée.
7. Un vol a un jour et une heure de départ, et un jour et une
heure d'arrivée.
8. Un vol peut comporter des escales dans des aéroports.
9. Une escale a une heure d'arrivée et une heure de départ.
10. Chaque aéroport dessert une ou plusieurs villes.
58. Étape 1 - Modélisation des phrase 1 et 2
1. Des compagnies aériennes proposent différents vols.
59. Étape 1 - Modélisation des phrase 1 et 2
1. Des compagnies aériennes proposent différents vols.
2 concepts importants 1 association
du monde réel
CompagnieAerienne et Vol
Ils ont des propriétés et des comportements. Ce sont donc
des classes candidates pour notre modélisation statique.
?
La phrase ne donne pas d’indication sur la multiplicité coté CompagnieAerienne.
Il faudra poser la question à l’expert métier!
60. Nous partirons du principe qu'un vol est proposé le plus souvent
par une seule compagnie aérienne, mais qu'il peut également
être partagé entre plusieurs affréteurs.
2. Un vol est ouvert à la réservation et refermé sur ordre de la
compagnie.
61. Nous partirons du principe qu'un vol est proposé le plus souvent
par une seule compagnie aérienne, mais qu'il peut également
être partagé entre plusieurs affréteurs.
2. Un vol est ouvert à la réservation et refermé sur ordre de la
compagnie.
62. Étape 2 - Modélisation des phrase 6, 7 et 8
7. Un vol a un jour et une heure de départ, et un jour et une heure
d'arrivée.
63. Étape 2 - Modélisation des phrase 6, 7 et 8
7. Un vol a un jour et une heure de départ, et un jour et une heure
d'arrivée.
Java.util.Date
Objet ou attribut?
Un objet est un élément plus « important » qu'un attribut.
• si l'on ne peut demander à un élément que sa valeur - attribut
• si plusieurs questions s'y appliquent - objet (qui possède lui-même
plusieurs attributs, ainsi que des liens avec d'autres objets.)
64. 6. Un vol a un aéroport de départ et un aéroport d'arrivée.
65. 6. Un vol a un aéroport de départ et un aéroport d'arrivée.
Contrairement aux notions d'heure et de date qui sont des types
«simples », la notion d'aéroport est complexe; elle fait partie du
«métier». Un aéroport ne possède pas seulement un nom, il a
aussi une capacité, dessert des villes, …etc... C'est la raison pour
laquelle nous préférons créer une classe Aéroport plutôt que de
simples attributs aeroportDepart et aeroportArrivee dans la
classe Vol.
66. Modélisation de la phrase 10.
10. Chaque aéroport dessert une ou plusieurs villes.
67. Modélisation de la phrase 10.
10. Chaque aéroport dessert une ou plusieurs villes.
?
Si « desservir » consiste simplement
à désigner le moyen de transport par
les airs le plus proche, toute ville est
1 toujours desservie par un et un seul
aéroport.
Si « desservir » vaut par exemple
pour tout moyen de transport
aérien se trouvant à moins de
0..* trente kilomètres, alors une ville
peut être desservie par 0 ou
plusieurs aéroports.
68. Étape 3 - Modélisation des phrases 8 et 9
8. Un vol peut comporter des escales dans des aéroports.
9. Une escale a une heure d'arrivée et une heure de départ.
69. Étape 3 - Modélisation des phrases 8 et 9
8. Un vol peut comporter des escales dans des aéroports.
9. Une escale a une heure d'arrivée et une heure de départ.
• Chaque escale a deux propriétés : heure d'arrivée et heure de départ.
• Elle est en relation avec des vols et des aéroports, qui sont eux-mêmes
des objets (phrase 8).
Il est donc naturel d'en faire une classe à son tour.
70. ?
?
?
?
?
La phrase 8 est imprécise : une escale peut-elle appartenir à plusieurs vols,
et quelles sont les multiplicités entre Escale et Aéroport ?
De plus, le schéma n'indique toujours pas les multiplicités du côté Vol avec
Aéroport
71. Pour finaliser le diagramme des phrases 8 et 9, il nous suffit d'ajouter
deux précisions :
• l'association entre Vol et Escale est une agrégation (pas une
composition, puisqu'elle est partageable) ;
• les escales sont ordonnées par rapport au vol.
72. Classe d'association
On peut considérer plutôt cette notion d'escale comme un troisième rôle
joué par un aéroport par rapport à un vol ? Les attributs heureArrivee et
heureDepart deviennent alors des attributs d'association
. La classe Escale disparaît alors en tant que telle, et se trouve remplacée
par une classe d'association InfosEscale.
73. Étape 4 - Modélisation des phrases 3, 4 et 5
3. Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4. Une réservation concerne un seul vol et un seul passager.
5. Une réservation peut être annulée ou confirmée.
74. Étape 4 - Modélisation des phrases 3, 4 et 5
3. Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4. Une réservation concerne un seul vol et un seul passager.
5. Une réservation peut être annulée ou confirmée.
75. Modélisation alternative des phrases 3, 4 et 5
3. Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4. Une réservation concerne un seul vol et un seul passager.
5. Une réservation peut être annulée ou confirmée.
76. Modélisation alternative des phrases 3, 4 et 5
3. Un client peut réserver un ou plusieurs vols, pour des passagers différents.
4. Une réservation concerne un seul vol et un seul passager.
5. Une réservation peut être annulée ou confirmée.
78. Intro par l’exemple Relations Application
Conseils pratiques
Réfléchir au problème avant de commencer
Soigner le nommage, insister sur le nommage
des relations et des rôles
Les noms des attributs débutent par une minuscule
Les noms des classes débutent par une majuscule et
peuvent contenir plusieurs mots concaténés commençant
par une majuscule
03/11 65
79. Intro par l’exemple Relations Application
Conseils pratiques
Réfléchir au problème avant de commencer
Soigner le nommage, insister sur le nommage
des relations et des rôles
Faire simple!
– «Things must be as simple as possible, but no
simpler». A. Einstein
– éviter toute complication nuisible
se dégager de l’implémentation : raisonner objets,
classes, messages, relations, attributs, opérations
– ne pas s’inquiéter si les possibilités de la notation
ne sont pas toutes exploitées
03/11 66
80. Intro par l’exemple Relations Application
Conseils pratiques (suite)
Approche incrémentale
– Itérer
– Savoir s'arrêter avant d’atteindre la
perfection...
• prise en compte qualité (niveau de précision), coûts,
délais...
• asservissement au processus de développement
Faire simple (encore)
– Un bon modèle n’est pas un modèle où
l’on ne peut plus rien ajouter, mais un
modèle où on ne peut plus rien enlever.
03/11 (d’après A. de St-Exupéry) 67
Les objets sont repr&#xE9;sent&#xE9;s par un rectangle, avec leur nom suivi de : puis le nom de leur classe, le tout soulign&#xE9;. Les objets, instances des classes, sont manipul&#xE9;s dans les &#xAB;collaboration diagramm&#xBB;\nLes classes d'objets, ou plus simplement classes, poss&#xE8;dent des attributs et des op&#xE9;rations. Les attributs peuvent avoir un type et une valeur par d&#xE9;faut. Les op&#xE9;rations peuvent avoir des param&#xE8;tres, typ&#xE9;s ou non, et une valeur de retour.\n\nDans un souci de clart&#xE9; des diagrammes, on peut consid&#xE9;rer que telle ou telle information n'est pas importante &#xE0; ce niveau de l'analyse et donc d&#xE9;cider de ne pas la faire appara&#xEE;tre.\nPour la m&#xEA;me raison, les zones des attributs et des op&#xE9;rations sont optionnelles.\nUne ellipse &#xE0; la fin d&#x2019;une liste d&#x2019;attributs ou d&#x2019;op&#xE9;rations signifie qu&#x2019;il existe d&#x2019;autres &#xE9;l&#xE9;ments dans le mod&#xE8;le, mais qu&#x2019;ils d&#xE9;pendent de crit&#xE8;res de s&#xE9;lection qui ne les font pas appara&#xEE;tre.\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Figure 11 shows a sequence diagram that references the sequence diagrams "Balance Lookup" and "Debit Account."\n The sequence starts at the top left, with the customer sending a message to the teller object. The teller object sends a message to the theirBank object. At that point, the Balance Lookup sequence diagram is called, with the accountNumber passed as a parameter. The Balance Lookup sequence diagram returns the balance variable. Then the option combination fragment's guard condition is checked to verify the balance is greater then the amount variable. In cases where the balance is greater than the amount, the Debit Account sequence diagram is called, passing it the accountNumber and the amount as parameters. After that sequence is complete, the withdrawCash message returns cash to the customer.\nIt is important to notice in Figure 11 that the lifeline of theirBank is hidden by the interaction occurrence Balance Lookup. Because the interaction occurrence hides the lifeline, that means that the theirBank lifeline is referenced in the "Balance Lookup" sequence diagram. In addition to hiding the lifeline in the interaction occurrence, UML 2 also specifies that the lifeline must have the same theirBank in its own "Balance Lookup" sequence.\nThere will be times when you model sequence diagrams that an interaction occurrence will overlap lifelines that are not referenced in the interaction occurrence. In such cases the lifeline is shown as a normal lifeline and is not hidden by the overlapping interaction occurrence.\nIn Figure 11, the sequence references the "Balance Lookup" sequence diagram. The "Balance Lookup" sequence diagram is shown in Figure 12. Because the example sequence has parameters and a return value, its label &#x2014;located in the diagram's namebox&#x2014;follows a specific pattern:\n\n
\n
Figure 11 shows a sequence diagram that references the sequence diagrams "Balance Lookup" and "Debit Account."\n The sequence starts at the top left, with the customer sending a message to the teller object. The teller object sends a message to the theirBank object. At that point, the Balance Lookup sequence diagram is called, with the accountNumber passed as a parameter. The Balance Lookup sequence diagram returns the balance variable. Then the option combination fragment's guard condition is checked to verify the balance is greater then the amount variable. In cases where the balance is greater than the amount, the Debit Account sequence diagram is called, passing it the accountNumber and the amount as parameters. After that sequence is complete, the withdrawCash message returns cash to the customer.\nIt is important to notice in Figure 11 that the lifeline of theirBank is hidden by the interaction occurrence Balance Lookup. Because the interaction occurrence hides the lifeline, that means that the theirBank lifeline is referenced in the "Balance Lookup" sequence diagram. In addition to hiding the lifeline in the interaction occurrence, UML 2 also specifies that the lifeline must have the same theirBank in its own "Balance Lookup" sequence.\nThere will be times when you model sequence diagrams that an interaction occurrence will overlap lifelines that are not referenced in the interaction occurrence. In such cases the lifeline is shown as a normal lifeline and is not hidden by the overlapping interaction occurrence.\nIn Figure 11, the sequence references the "Balance Lookup" sequence diagram. The "Balance Lookup" sequence diagram is shown in Figure 12. Because the example sequence has parameters and a return value, its label &#x2014;located in the diagram's namebox&#x2014;follows a specific pattern:\n\n
Les objets sont repr&#xE9;sent&#xE9;s par des barres verticales au dessus desquelles figure l&#x2019;objet et sa classe d&#x2019;appartenance (m&#xEA;me formalisme que dans les diagrammes d&#x2019;objets). Le nom de la classe ou de l&#x2019;objet peut &#xEA;tre omis.\nLes messages entre objets sont repr&#xE9;sent&#xE9;s par des fl&#xEA;ches partant d&#x2019;un objet et arrivant &#xE0; un autre objet.\n
Figure 11 shows a sequence diagram that references the sequence diagrams "Balance Lookup" and "Debit Account."\n The sequence starts at the top left, with the customer sending a message to the teller object. The teller object sends a message to the theirBank object. At that point, the Balance Lookup sequence diagram is called, with the accountNumber passed as a parameter. The Balance Lookup sequence diagram returns the balance variable. Then the option combination fragment's guard condition is checked to verify the balance is greater then the amount variable. In cases where the balance is greater than the amount, the Debit Account sequence diagram is called, passing it the accountNumber and the amount as parameters. After that sequence is complete, the withdrawCash message returns cash to the customer.\nIt is important to notice in Figure 11 that the lifeline of theirBank is hidden by the interaction occurrence Balance Lookup. Because the interaction occurrence hides the lifeline, that means that the theirBank lifeline is referenced in the "Balance Lookup" sequence diagram. In addition to hiding the lifeline in the interaction occurrence, UML 2 also specifies that the lifeline must have the same theirBank in its own "Balance Lookup" sequence.\nThere will be times when you model sequence diagrams that an interaction occurrence will overlap lifelines that are not referenced in the interaction occurrence. In such cases the lifeline is shown as a normal lifeline and is not hidden by the overlapping interaction occurrence.\nIn Figure 11, the sequence references the "Balance Lookup" sequence diagram. The "Balance Lookup" sequence diagram is shown in Figure 12. Because the example sequence has parameters and a return value, its label &#x2014;located in the diagram's namebox&#x2014;follows a specific pattern:\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
La cardinalit&#xE9; joue un r&#xF4;le essentiel dans la s&#xE9;mantique de l'relation.\nLa s&#xE9;mantique de l'relation change totalement si la cardinalit&#xE9; &#xE9;volue.\n
\n
Navigation means that one object contains a pointer or a reference to the other so that it may invoke the services of the latter\n le nombre d'instances de la classe qui participent &#xE0; l'association.\n
\n
\n
\n
\n
\n
\n
Dans ce cas, les r&#xF4;les sont tr&#xE8;s importants pour pr&#xE9;ciser la signification de l'relation.\nDans l'exemple, un HUMAIN peut &#xEA;tre &#xE0; la fois Parent et Enfant.\nUne relation r&#xE9;flexive n&#x2019;est pas obligatoirement orient&#xE9;e dans les deux sens.\n
Une relation de type agr&#xE9;gation a pour objectif d&#x2019;exprimer qu&#x2019;un ensemble d&#x2019;objets fait partie int&#xE9;grante d&#x2019;un autre objet. Une agr&#xE9;gation renforce ainsi la s&#xE9;mantique de la notion d&#x2019;relation.\nLes agr&#xE9;gations peuvent &#xEA;tres de 2 types : simple ou de composition\nl&#x2019;agr&#xE9;gation exprime une composition faible, alors que la composition exprime une composition forte. \nComposition : la destruction d&#x2019;un dossier entra&#xEE;ne la destruction de tous les documents contenus dans le dossier, de m&#xEA;me la destruction d&#x2019;une ville d&#xE9;clenche la destruction de tous les immeubles de la ville. \nAgr&#xE9;gation : m&#xEA;me si une &#xE9;quipe de basket est dissoute, les joueurs de cette &#xE9;quipe sont toujours licenci&#xE9;s aupr&#xE8;s de la f&#xE9;d&#xE9;ration et existent en tant que tels. Il ne s&#x2019;agit donc pas d&#x2019;une composition.\n
Indicated by a hollow diamond \n Whole-part relationship denotes one object logically or physically contains or has another \n Weaker form of aggregation. Nothing is implied about:\n Navigation\n Ownership\n Lifetimes of participating objects\n
\n
Composition is a strong form of aggregation in which the owner is explicitly responsible for the creation and destruction of the part objects. \nWe prefer the containent notation because it is more visually distinct.\n\n\n\n&#xA0;\nUne agr&#xE9;gation peut notamment (mais pas n&#xE9;cessairement) exprimer :\n qu'une classe (un "&#xE9;l&#xE9;ment") fait partie d'une autre ("l'agr&#xE9;gat"),\n qu'un changement d'&#xE9;tat d'une classe, entra&#xEE;ne un changement d'&#xE9;tat d'une autre,\n qu'une action sur une classe, entra&#xEE;ne une action sur une autre.&#xA0;\nA un m&#xEA;me moment, une instance d'&#xE9;l&#xE9;ment agr&#xE9;g&#xE9; peut &#xEA;tre li&#xE9;e &#xE0; plusieurs instances d'autres classes (l'&#xE9;l&#xE9;ment agr&#xE9;g&#xE9; peut &#xEA;tre partag&#xE9;).&#xA0;\nUne instance d'&#xE9;l&#xE9;ment agr&#xE9;g&#xE9; peut exister sans agr&#xE9;gat (et inversement) : les cycles de vies de l'agr&#xE9;gat et de ses &#xE9;l&#xE9;ments agr&#xE9;g&#xE9;s peuvent &#xEA;tre ind&#xE9;pendants.\n\n&#xA0;\n&#xA0; q&#xA0; Composition\n\nLa composition est une agr&#xE9;gation forte (agr&#xE9;gation par valeur).&#xA0;\nLes cycles de vies des &#xE9;l&#xE9;ments (les "composants") et de l'agr&#xE9;gat sont li&#xE9;s : si l'agr&#xE9;gat est d&#xE9;truit (ou copi&#xE9;), ses composants le sont aussi.&#xA0;\nA un m&#xEA;me moment, une instance de composant ne peut &#xEA;tre li&#xE9;e qu'&#xE0; un seul agr&#xE9;gat.&#xA0;\nLes "objets composites" sont des instances de classes compos&#xE9;es.\n\n&#xA0; q&#xA0; Agr&#xE9;gation et composition : rappel\n\nL'agr&#xE9;gation et la composition sont des vues subjectives.&#xA0;\nLorsqu'on repr&#xE9;sente (avec UML) qu'une mol&#xE9;cule est "compos&#xE9;e" d'atomes, on sous-entend que la destruction d'une instance de la classe "Mol&#xE9;cule", implique la destruction de ses composants, instances de la classe "Atome" (cf. propri&#xE9;t&#xE9;s de la composition).&#xA0;\nBien qu'elle ne refl&#xE8;te pas la r&#xE9;alit&#xE9; ("rien ne se perd, rien ne se cr&#xE9;e, tout se transforme"), cette abstraction de la r&#xE9;alit&#xE9; nous satisfait si l'objet principal de notre mod&#xE9;lisation est la mol&#xE9;cule...&#xA0;\nEn conclusion, servez vous de l'agr&#xE9;gation et de la composition pour ajouter de la s&#xE9;mantique &#xE0; vos mod&#xE8;les lorsque cela est pertinent, m&#xEA;me si dans la "r&#xE9;alit&#xE9;" de tels liens n'existent pas !\n \n
Composition is a strong form of aggregation in which the owner is explicitly responsible for the creation and destruction of the part objects. \nWe prefer the containent notation because it is more visually distinct.\n\n\n\n&#xA0;\nUne agr&#xE9;gation peut notamment (mais pas n&#xE9;cessairement) exprimer :\n qu'une classe (un "&#xE9;l&#xE9;ment") fait partie d'une autre ("l'agr&#xE9;gat"),\n qu'un changement d'&#xE9;tat d'une classe, entra&#xEE;ne un changement d'&#xE9;tat d'une autre,\n qu'une action sur une classe, entra&#xEE;ne une action sur une autre.&#xA0;\nA un m&#xEA;me moment, une instance d'&#xE9;l&#xE9;ment agr&#xE9;g&#xE9; peut &#xEA;tre li&#xE9;e &#xE0; plusieurs instances d'autres classes (l'&#xE9;l&#xE9;ment agr&#xE9;g&#xE9; peut &#xEA;tre partag&#xE9;).&#xA0;\nUne instance d'&#xE9;l&#xE9;ment agr&#xE9;g&#xE9; peut exister sans agr&#xE9;gat (et inversement) : les cycles de vies de l'agr&#xE9;gat et de ses &#xE9;l&#xE9;ments agr&#xE9;g&#xE9;s peuvent &#xEA;tre ind&#xE9;pendants.\n\n&#xA0;\n&#xA0; q&#xA0; Composition\n\nLa composition est une agr&#xE9;gation forte (agr&#xE9;gation par valeur).&#xA0;\nLes cycles de vies des &#xE9;l&#xE9;ments (les "composants") et de l'agr&#xE9;gat sont li&#xE9;s : si l'agr&#xE9;gat est d&#xE9;truit (ou copi&#xE9;), ses composants le sont aussi.&#xA0;\nA un m&#xEA;me moment, une instance de composant ne peut &#xEA;tre li&#xE9;e qu'&#xE0; un seul agr&#xE9;gat.&#xA0;\nLes "objets composites" sont des instances de classes compos&#xE9;es.\n\n&#xA0; q&#xA0; Agr&#xE9;gation et composition : rappel\n\nL'agr&#xE9;gation et la composition sont des vues subjectives.&#xA0;\nLorsqu'on repr&#xE9;sente (avec UML) qu'une mol&#xE9;cule est "compos&#xE9;e" d'atomes, on sous-entend que la destruction d'une instance de la classe "Mol&#xE9;cule", implique la destruction de ses composants, instances de la classe "Atome" (cf. propri&#xE9;t&#xE9;s de la composition).&#xA0;\nBien qu'elle ne refl&#xE8;te pas la r&#xE9;alit&#xE9; ("rien ne se perd, rien ne se cr&#xE9;e, tout se transforme"), cette abstraction de la r&#xE9;alit&#xE9; nous satisfait si l'objet principal de notre mod&#xE9;lisation est la mol&#xE9;cule...&#xA0;\nEn conclusion, servez vous de l'agr&#xE9;gation et de la composition pour ajouter de la s&#xE9;mantique &#xE0; vos mod&#xE8;les lorsque cela est pertinent, m&#xEA;me si dans la "r&#xE9;alit&#xE9;" de tels liens n'existent pas !\n \n
Aggregation is also a kind of association. Aggregation is used when one object logically or physically contains another. \n
shared part is also known as "catalog aggregation". Example: library card catalog\na book is under author catalog, subject catalog, title catalog\n\nNote that in the figure we are being very explicit about sharing the parts with the {share} constraint. Without that shared parts are not implied because although they aggregate instances of the same classes, this doesn&#x2019;t mean that they are the same instances. \n
A FAIRE EN S3.... L&#x2019; an prochain\n
Une relation de type agr&#xE9;gation a pour objectif d&#x2019;exprimer qu&#x2019;un ensemble d&#x2019;objets fait partie int&#xE9;grante d&#x2019;un autre objet. Une agr&#xE9;gation renforce ainsi la s&#xE9;mantique de la notion d&#x2019;relation.\nLes agr&#xE9;gations peuvent &#xEA;tres de 2 types : simple ou de composition\nl&#x2019;agr&#xE9;gation exprime une composition faible, alors que la composition exprime une composition forte. \nComposition : la destruction d&#x2019;un dossier entra&#xEE;ne la destruction de tous les documents contenus dans le dossier, de m&#xEA;me la destruction d&#x2019;une ville d&#xE9;clenche la destruction de tous les immeubles de la ville. \nAgr&#xE9;gation : m&#xEA;me si une &#xE9;quipe de basket est dissoute, les joueurs de cette &#xE9;quipe sont toujours licenci&#xE9;s aupr&#xE8;s de la f&#xE9;d&#xE9;ration et existent en tant que tels. Il ne s&#x2019;agit donc pas d&#x2019;une composition.\n
Composition is a strong form of aggregation in which the owner is explicitly responsible for the creation and destruction of the part objects. We prefer the containent notation because it is more visually distinct.\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Most often, subclasses are extended and specialized at the same time\n
La factorisation apport&#xE9;e sur la g&#xE9;n&#xE9;ralisation appara&#xEE;t graphiquement pour les relations. Imaginons le nombre de relations qui devraient &#xEA;tre repr&#xE9;sent&#xE9;es sans g&#xE9;n&#xE9;ralisation.\nLes Voitures et les Camions ont tous un ou deux moteurs.\nUn r&#xE9;pertoire peut contenir des drivers, des fichiers sources ou des fichiers binaires.\n
Composition is a strong form of aggregation in which the owner is explicitly responsible for the creation and destruction of the part objects. We prefer the containent notation because it is more visually distinct.\n
\n
\n
\n
\n
\n
\n
La g&#xE9;n&#xE9;ralisation peut-&#xEA;tre simple ou multiple, la g&#xE9;n&#xE9;ralisation simple signifie qu'une classe h&#xE9;rite d'une seule super-classe alors que dans la g&#xE9;n&#xE9;ralisation multiple une classe peut h&#xE9;riter de plusieurs super-classes (au moins deux).\n
\n
\n
Les attributs, op&#xE9;rations, relations et g&#xE9;n&#xE9;ralisations ne suffisent pas &#xE0; d&#xE9;finir avec pr&#xE9;cision l&#x2019;ensemble des instances possibles.\nOn appelle invariant d&#x2019;une classe l&#x2019;ensemble des conditions et des propositions, appel&#xE9;es contraintes en UML, qui doivent &#xEA;tre v&#xE9;rifi&#xE9;es durant la vie d&#x2019;une instance.\nLes cons&#xE9;quences du non respect de ces contraintes sortent du cadre d&#x2019;UML .\n
\n
\n
\n
\n
A Qualified association could be implemented as a balanced tree.\n
A Qualified association could be implemented as a balanced tree.\n
\n
\n
\n
generalization == "is a"\naggregation == "has a"\nassociation == "uses&#x201C;\n\nUML has lots of different kinds of relationships. These are by far the most important.\n
\n
\n
Permet d'incorporer des donn&#xE9;es dans une association\nA n'utiliser qu'en analyse\nPose un probl&#xE8;me de repr&#xE9;sentation pour la conception\n
\n
Il s'agit d'une configuration d&#xE9;conseill&#xE9;e sur le plan de l'implantation. G&#xE9;n&#xE9;ralement, il vient d'un probl&#xE8;me mal analys&#xE9; et con&#xE7;u\n
\nToute relation N-aire peut &#xEA;tre transform&#xE9;e en relation binaire, par application de r&#xE8;gles syst&#xE9;matiques illustr&#xE9;es ici.\n