SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
megaplanet
UML :UML :
Diagrammes de ClassesDiagrammes de Classes
Concepts avancésConcepts avancés
Visibilité, Déclaration d'attributs et d'opérationsVisibilité, Déclaration d'attributs et d'opérations
Navigation, Composition, AggrégationNavigation, Composition, Aggrégation
Classe associative, Association qualifiée…Classe associative, Association qualifiée…
Classe abstraite, Héritage multipleClasse abstraite, Héritage multiple
Classification multiple, dynamiqueClassification multiple, dynamique
Concepts à utiliser à bon escient,Concepts à utiliser à bon escient,
lorsque nécessaire et uniquement lorsque nécessaire...lorsque nécessaire et uniquement lorsque nécessaire...
megaplanet
Concepts à utiliser à bon escient,Concepts à utiliser à bon escient,
uniquementuniquement
lorsque nécessaire...lorsque nécessaire...
2
megaplanet
3
UML ? ... une question de style et de contexteUML ? ... une question de style et de contexte
S'adapter ...S'adapter ...
au niveau d'abstractionau niveau d'abstraction
au domaine d'applicationau domaine d'application
aux outils utilisésaux outils utilisés
aux savants et ignorantsaux savants et ignorants
ingénierie vs. retro-ingénierieingénierie vs. retro-ingénierie
megaplanet
4
Concepts « avancés »Concepts « avancés »
Descriptions plus préciseDescriptions plus précise
(1) Attributs et opérations(1) Attributs et opérations
(2) Associations(2) Associations
(3) Généralisation(3) Généralisation
megaplanet
5
(1) attributs et opérations(1) attributs et opérations
Visibilité, Portée, Dérivation, …Visibilité, Portée, Dérivation, …
Enumérations et types de donnéesEnumérations et types de données
{frozen}, {addonly}, {ordered}, {nonunique}{frozen}, {addonly}, {ordered}, {nonunique}
megaplanet
6
+ # - Visibilité des éléments+ # - Visibilité des éléments
Eviter les dépendances entre classes et paquetagesEviter les dépendances entre classes et paquetages
++ publicpublic visiblevisible
~~ packagepackage visible dans le package uniquementvisible dans le package uniquement
## protégéprotégé visible dans la classe et ses sous-classesvisible dans la classe et ses sous-classes
-- privéprivé visible dans la classe uniquementvisible dans la classe uniquement
Lors de la conception et de l'implémentation, pas avant !Lors de la conception et de l'implémentation, pas avant !
La sémantique exacte dépend du langage de programmation !La sémantique exacte dépend du langage de programmation !
megaplanet
7
Déclaration d'attributsDéclaration d'attributs
[/] [[/] [ visibilitévisibilité ]] nomnom [[ :: typetype ] [] [card ordrecard ordre] [] [ == valeur-initialevaleur-initiale ] [] [ {{ propsprops...... }} ]]
exemples:exemples: age
+age
/age
- solde : Integer = 0
# age : Integer [0..1]
# numsecu : Integer {frozen}
# motsClés : String [*] {addOnly}
nbPersonne : Integer
Adapter le niveau de détail au niveau d'abstractionAdapter le niveau de détail au niveau d'abstraction
megaplanet
8
Déclaration d'opérationsDéclaration d'opérations
[/] [[/] [ visibilitévisibilité ]] nomnom [[ (( paramsparams )) ] [] [ :: typetype ] [] [ {{ propsprops...... }} ]]
paramsparams :=:= [[ inin || outout|| inoutinout ]] nomnom [[ :: type] [type] [ ==defaut ] [defaut ] [{{ propsprops...... }} ]]
/getAge()
+ getAge() : Integer
- updateAge( in date : Date ) : Boolean
# getName() : String [0..1]
+getAge() : Integer {isQuery}
+addProject() : { concurrency = sequential }
+addProject() : { concurrency = concurrent }
+main( in args : String [*] {ordered} )
Adapter le niveau de détail au niveau d'abstractionAdapter le niveau de détail au niveau d'abstraction
megaplanet
9
Enumérations et Types de donnéesEnumérations et Types de données
<<enumeration>>
Jour
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
Dimanche
<<enumeration>>
Titre
Secretaire
President
Tresorier
VicePresident
Membre
ExempleExemple
d’utilisationd’utilisation nom : String
joursDeReunion : Jour[*]
dateDeCreation : Date
Association1901
<<datatype>>
Date
compare()
jour()
mois()
année()
x : integer
y : integer
<<datatype>>
Point
<<datatype>>
GeoLocation
Utilisable comme type d’attributsUtilisable comme type d’attributs
Valeurs (pas d’identité)Valeurs (pas d’identité)
Type de données typiquementType de données typiquement
définis dans des « librairies »définis dans des « librairies »
megaplanet
10
(2) associations(2) associations
Association uni/bi directionnelleAssociation uni/bi directionnelle
Composition et AggrégationComposition et Aggrégation
{frozen}, {addonly}, {ordered}, {nonunique}{frozen}, {addonly}, {ordered}, {nonunique}
Classes associativesClasses associatives
Associations qualifiéesAssociations qualifiées
megaplanet
11
NavigationNavigation
Client Compte
1
titulaire
Association unidirectionnelle
On ne peut naviguer que dans un sens
A priori, que dans les diagrammes de spécifications et d'implémentation
En cas de doute, ne pas mettre de flêche !!!
*
UML2.0
megaplanet
12
CompositionComposition
Voiture Roue
composition =
cas particulier d’association
+ contraintes décrivant la notion de "composant"...
4
Pneu
Jante
1
1
Notion intuitive de "composants" et de "composites"
megaplanet
13
CompositionComposition
Contraintes liées à la composition :
1. Un objet composant ne peut être que dans 1 seul objet composite
2. Un objet composant n’existe pas sans son objet composite
3. Si un objet composite est détruit, ses composants aussi
Voiture Roue
4
Pneu
Jante
1
1
Dépend de la situation modélisée !
(Ex: vente de voitures vs. casse)
megaplanet
14
0..1
CompositionComposition
Document
Chapitre Section
Figure
1..* 1..*
0..*
Contraintes liées à la composition :
1. Un objet composant ne peut être que dans 1 seul objet composite
2. Un objet composant n’existe pas sans son objet composite
3. Si un objet composite est détruit, ses composants aussi
megaplanet
15
CompositionComposition
Document
Chapitre Section
Figure
1..* 1..*1
0..*
1..*
Contrainte :
le graphe d'objets
forme un arbre
(ou une forêt)
: document
: chapitre
: chapitre
: section
: section
: figure
: figure
: section
M1
M0
megaplanet
16
CompositionComposition
Point
x
y
Polygone 3..* Cercle
rayon
1
M1
M0
megaplanet
17
CompositionComposition
: Point
x = 0
y = 0
: Point
x = 0
y = 10
: Point
x = 10
y = 0
: Polygone
c1 : Cercle
rayon = 5
: Point
x = 10
y = 0
Point
x
y
Polygone 3..* Cercle
rayon
1
M1
M0
megaplanet
18
Voiture
Volant : Volant
Roue : Roue [4]
sièges : Siège
[*]
Autres notations pour la CompositionAutres notations pour la Composition
Voiture
Volant
Roue
1
4
Siège
*
sièges
Voiture
Volant
1
Roue 4
sièges : Siège
*
megaplanet
19
Associations intra vs. inter compositesAssociations intra vs. inter composites
Voiture
Volant
1
Roue 4
*
0..1
0..1
*
Volant
Roue
Voiture
1
4
Marque
*
1
Marque
1
*
Exemple
megaplanet
20
AggregationAggregation
aggregation =
cas particulier d’association
+ contraintes décrivant la notion d'appartenance... ?
Partage possible
Pas de concensus sur la signification exacte de l'aggrégation
Utiliser avec précautions (ou ne pas utiliser...)
Point
x
y
Figure **
Supprimé en UML2.0
megaplanet
21
Composition vs. AggregationComposition vs. Aggregation
OUI
NON
La présence de est parfois
un indice d'incompétence :-)
megaplanet
22
Contraintes prédéfinies sur lesContraintes prédéfinies sur les
associationsassociations
{ ordered } : les éléments de la collection sont ordonnés
{ nonUnique } : répétitions possibles (UML2.0)
{ frozen } : fixé lors de la création de l ’objet, ne peut pas changer
{ addOnly } : impossible de supprimer un élément
RelevéDe
Compte
Ligne
Opération*
{ordered,addOnly}
lignes
Peut être très utile!
megaplanet
23
Classes associativesClasses associatives
Personne Société
employés
* 0..2
Pour associer des attributs et/ou des méthodes aux associations
=> classes associatives
Emploi
salaire
augmenter()
Le nom de la classe correspond au nom de l’association
(problème: il faut choisir entre forme nominale et forme verbale)
sociétés
megaplanet
24
Classes associativesClasses associatives
jean
marie
salaire = 1500
xerox
employé
e1
ujf
employé
e2
salaire = 700
employé
e3
salaire = 1000
Le salaire est une information correspondant
• ni à une personne,
• ni à une société,
mais à un emploi (un couple personne-société).
Personne Société
employés
* 0..2
Emploi
salaire
augmenter()
sociétés
M1
M0
megaplanet
25
Classes associativesClasses associatives
p1
Emploi>
s1
RAPPEL: Pour une association donnée, un couple d'objets ne peut être
connectés que par un seul lien correspondant à cette association.
(sauf si l'association est décorée par {nonunique} en UML2.0)
Emploi>
Cette contrainte reste vraie dans le cas où l’association est décrite à
partir d ’une classe associative.
p1 s1
: Emploi
salaire = 1500
: Emploi
salaire = 700
megaplanet
26
Classes associativesClasses associatives
Emploi
salaire
Personne Société
employé
1 1
0..2 société*
Ci-dessus, une personne peut avoir deux emplois dans la même société
e2
p1 s1
e1
Personne Société
employé
* 0..2
Emploi
salaire
sociétés
Ci-dessus, une personne peut avoir deux emplois, mais pas dans la même
société
p1 s1
e1
megaplanet
27
Classes associatives : traductionClasses associatives : traduction
A
rolea(s)
carda cardb
C
roleb(s)
B
A
1 1
BC
rolebrolea
cardacardb
Il ne peut y avoir qu'un objet C entre un
objet A et un objet B donné
Transformation
systèmatique
pour revenir aux
concepts de base
c[s] c[s]
megaplanet
28
Classes associatives : traductionClasses associatives : traduction
Personne
employés
* 0..2
Emploi
sociétés
Sociét
é
Personne
*1 1
société
SociétéEmploi
employé
0..2
Il ne peut y avoir qu'un Emploi entre une
Personne et une Société
emplois emplois
megaplanet
29
Virement
montant
Exemple 1Exemple 1
Compte
compteCrédit
é
*
Virement
montant
*compteDébité
Compte
compteCrédit
é
11compteDébité
* *
Ou ?
M1
M0
c1 c2
v1
v2
Situation
possible ?
Peut-on avoir plusieurs
virements entre deux
comptes ?compteCrédité
compteCréditécompteDébité
compteDébité
megaplanet
30
Virement
montant
Exemple 1Exemple 1
Compte
compteCrédit
é
*
Virement
montant
*compteDébité
Compte
compteCrédit
é
11compteDébité
* *
Il peut y avoir plusieurs
virement entre deux
comptes donnés
M0
c1 c2
v1
v2
Situation
valide compteCrédité
compteCréditécompteDébité
compteDébité
M1
megaplanet
31
Exemple 2Exemple 2
Joueur
joueurs
* *
Participation
nbDeButs
matchs
M0
paul finale
p1
p2
Situation
possible ? match
matchjoueur
joueur
Joueur
joueur
1 1
Participation
nbDeButs
match
participations
*
participations
Match
*
Un joueur peut il avoir
plusieurs participations à
un match donné ?
Match
megaplanet
32
Exemple 2Exemple 2
Joueur
joueurs
* *
Participation
nbDeButs
matchs
M0
paul finale
p1
p2
Situation
impossible match
matchjoueur
joueur
Joueur Voiture
joueur
1 1
Participation
nbDeButs
match
participations
*
participations
Match
*
Une seule participation à
un match donné pour un
joueur donné
megaplanet
33
Exemple 3Exemple 3
Personne
propriétaires
* *
CarteGrise
dateDélivrance
voitures
M0
paul la106
cg1
cg2
Situation
possible ? voitures
voiturespropriétaires
propriétaires
Personne Voiture
propriétaire
1 1
CarteGrise
dateDélivrance
voiture
{ordered,
nonUnique}
{ordered,
nonUnique}
carteGrises
*
carteGrises
Voiture
megaplanet
34
Exemple 3Exemple 3
Personne
propriétaires
* *
CarteGrise
dateDélivrance
voitures
M0
paul la106
cg1
cg2
voitures
voiturespropriétaires
propriétaires
Personne Voiture
propriétaire
1 1
CarteGrise
dateDélivrance
voiture
{ordered}
* {ordered}
carteGrises
*
carteGrises
Voiture
Situation possible car on
garde l'historique et paul
peut acheter deux fois la
même voiture
megaplanet
35
Exemple 4Exemple 4
Personne
conjointsDécédés
*
Veuvage
date
montantAssurance
0..1
conjointLaisséVeuf
Ou ?
Personne
0..1
Veuvage
date
montantAssurance
*
conjointDécédéconjointLaisséVeuf 1 1
M0
paul marie
v1
v2
Situation
possible ? conjointsDécédés
conjointsDécédésconjointLaisséVeu
f
conjointLaisséVeu
f
Peut on toucher
deux fois
l'assurance ?
megaplanet
36
Exemple 4Exemple 4
Personne
conjointsDécédés
*
Veuvage
date
montantAssurance
0..1
conjointLaisséVeuf
Personne
0..1
Veuvage
date
montantAssurance
*
conjointDécédéconjointLaisséVeuf 1 1
M0
paul marie
v1
v2
Situation
illégale conjointsDécédés
conjointsDécédésconjointLaisséVeu
f
conjointLaisséVeu
f
Les deux solutions sont
valides car la
cardinalité 0..1 interdit
cette situation de toute
façon (cas particulier)
Ou
megaplanet
37
Classes associativesClasses associatives
Les classes associatives sont des associations mais aussi des classes.
Personne Société
employés
*
Emploi
salaire
augmenter()
sociétés
0..2
FicheDePaye *
{ordered}
Ajouter les notions de fiches de payes, de supervision et d’évaluation
megaplanet
38
Classes associativesClasses associatives
Les classes associatives sont des associations mais aussi des classes.
Personne Société
employés
*
Emploi
salaire
augmenter()
sociétés
0..2
FicheDePaye *
{ordered}
responsable
0..1
subordonnés *
Supervision
Evaluation
*
megaplanet
39
Associations qualifiéesAssociations qualifiées
Repertoire Fichiernom
0..1
Un qualifieur est un attribut (ou un ensemble d'attributs) dont la
valeur sert à déterminer l'ensemble des instances associées à une
instance via une association.
"Pour un répertoire, à un nom donné on associe qu'un fichier
(ou 0 s'il existe aucun fichier de ce nom dans ce répertoire)."
Repertoire Fichier
*
Correspond à la notion intuitive d'index absente ci-dessous
megaplanet
40
ExempleExemple
Association1901 titre:Titre
*
*
Personne
0..1
*membres <<enumeration>>
Titre
Secretaire
President
Tresorier
Tresorier
President
Secretaire joe
sylvia
ahmed
fred
ass1
membres
membres
ass2 President
megaplanet
41
Cardinalité des Associations QualifiéesCardinalité des Associations Qualifiées
Banque Comptenc
0..1
0 comme cardinalité minimale, sauf si le domaine de l'attribut
qualifieur est fini et toutes les valeurs ont une image.
Cas classique: cardinalité 0..1
Banque Employetitre
**
Cas plus rare: cardinalité * (pas de contrainte particulière exprimée)
Echiquier Case
nl : NumLigne
nc : NumCol
11
Cas plus rare: cardinalité 1 (généralement c'est une erreur)
megaplanet
42
Attributs de l'associationAttributs de l'association
Repertoire Fichiernom
0..1
Les attributs qualifieurs sont des attributs de l'association,
pas de la classe
Exemple liens "hard" en Unix: un fichier peut correspondre à des noms
différents dans des repertoires différents
*
r1
r2
r2
f1
f2
nom="a"
nom="b"
nom="f"
megaplanet
43
Problème classiqueProblème classique
Repertoire Fichiernom
0..1
Souvent l'index est également un attribut de classe indexée
Solution correcte:
1
/nom
Le nom du fichier correspond au nom qu'a
le fichier dans le répertoire
2 erreurs communes:
Repertoire Fichiernom
11
nom
Repertoire Fichiernom
11
nom
megaplanet
44
Classes associatives : traductionClasses associatives : traduction
Repertoire Fichiernom
0..1*
Repertoire Fichier
nom
**
Contient
Contient
Transformation
systèmatique
pour revenir aux
concepts de base
Un répertoire contient 0 ou 1
fichier pour un nom donné
Les attributs du
qualifieur sont
des attributs de
l'association
megaplanet
45
Synthèse sur les associationsSynthèse sur les associations
<AssociationX
Cardinalités
ClasseA ClasseB
roleA 0..*
attributZ
{frozen}
Nom de rôle
sens de
lecture
AssociationX
Contrainte
Navigation
Classe associative
Composition
(ou aggregation )
Nom d ’association
x : string
megaplanet
46
(3) généralisation(3) généralisation
Ré-définitionRé-définition
Classes abstraitesClasses abstraites
Méthodes abstaitesMéthodes abstaites
Héritage simple vs. multipleHéritage simple vs. multiple
Classification simple vs. multipleClassification simple vs. multiple
Classification statique vs. dynamiqueClassification statique vs. dynamique
megaplanet
47
Héritage et redéfinitionHéritage et redéfinition
Une sous classe peut redéfinir une méthode,
à condition toutefois de rester compatible avec la
définition originale
Figure
surface()
déplacer()
Cercle
surface()
Polygone
surface()
Carré
surface()
megaplanet
48
Classes et méthodes abstraitesClasses et méthodes abstraites
Une classe abstraite
• ne peut pas être instanciée
• utile pour définir un comportement abstrait
• peut contenir des méthodes abstraites
Un méthode abstraite
• doit être définie dans une sous classe
• est dans un classe abstraite
Figure
surface()
déplacer()
Cercle
surface()
Polygone
surface()
Carré
surface()
Figure
{abstract}
surface() {abstract}
déplacer()
Figure
surface()
déplacer()
Notations équivalentes
Triangle
surface()
megaplanet
49
Classes abstraites du point de vueClasses abstraites du point de vue
ensemblisteensembliste
Figure
surface()
déplacer()
Cercle
surface()
Polygone
surface()
Figures
Cercles Polygones
Carré
surface()
Triangle
surface()
Triangles Carrés
c1
c2
c3
c4
t1
t2
ca1
ca2
M0M1
megaplanet
50
Classification vs. HéritageClassification vs. Héritage
M0
M1
Chien
medor
Chien Animal
medor
<<instanceOf>>
Classification Héritage/Spécialisation
coco
megaplanet
51
Héritage multipleHéritage multiple
Une classe peut hériter de plusieurs super-classes
Interdit dans certains langages de programmation (p.e. Java et C#)
Chauffage Appareil
É lectrique
Chauffage
É lectriquePoel
Appareil
MicroOndes
Appareils
Chauffages
electriques
Chauffage
Appareils
électriques
Poels
Micro
ondes
M0M1
megaplanet
52
Points liés à l’héritagePoints liés à l’héritage
et à la classificationet à la classification
Les modèles orientés-objets
ne font pas tous les mêmes hypothèses
Héritage simple vs. héritage multiple
Une classe peut elle hériter de plusieurs classes ?
Classification simple vs. classification multiple
Un objet peut-il être simultanément
instance de plusieurs classes?
Classification statique vs. classification dynamique
Un objet peut-il changer de classe pendant l’exécution ?
megaplanet
53
Hypothèses UML par défaultHypothèses UML par défault
Sauf si le contraire est indiqué explicitement,
en UML les hypothèses par défaut sont :
Héritage multiple
une classe peut hériter de plusieurs classes
Classification simple
un objet est instance d’une seule classe
Classification statique
un objet est créé à partir d’une classe donnée
et n’en change pas

Más contenido relacionado

La actualidad más candente

Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Diagramme de classe
Diagramme de classeDiagramme de classe
Diagramme de classeIlhem Daoudi
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisationAmir Souissi
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1DIALLO Boubacar
 
Chp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesChp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesLilia Sfaxi
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceLilia Sfaxi
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMajid CHADAD
 
Chp5 - Les outils CASE
Chp5 - Les outils CASEChp5 - Les outils CASE
Chp5 - Les outils CASELilia Sfaxi
 
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsAmir Souissi
 
Chp5 - Diagramme d'Etat Transition
Chp5 - Diagramme d'Etat TransitionChp5 - Diagramme d'Etat Transition
Chp5 - Diagramme d'Etat TransitionLilia Sfaxi
 
PFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementNassim Bahri
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011agnes_crepet
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Génie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesGénie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesMohammed Amine Mostefai
 
Chapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéChapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéSana Aroussi
 
L Architecture Logicielle En Pratique
L Architecture Logicielle En PratiqueL Architecture Logicielle En Pratique
L Architecture Logicielle En PratiqueFrançois Trudel
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriMansouri Khalifa
 

La actualidad más candente (20)

Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Diagramme de classe
Diagramme de classeDiagramme de classe
Diagramme de classe
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1
 
Chp3 - Diagramme de Classes
Chp3 - Diagramme de ClassesChp3 - Diagramme de Classes
Chp3 - Diagramme de Classes
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de Séquence
 
Uml classes Par les exemples
Uml classes Par les exemplesUml classes Par les exemples
Uml classes Par les exemples
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
 
Chp5 - Les outils CASE
Chp5 - Les outils CASEChp5 - Les outils CASE
Chp5 - Les outils CASE
 
Chap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitionsChap5 diagramme d'etats-transitions
Chap5 diagramme d'etats-transitions
 
Chp5 - Diagramme d'Etat Transition
Chp5 - Diagramme d'Etat TransitionChp5 - Diagramme d'Etat Transition
Chp5 - Diagramme d'Etat Transition
 
PFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignement
 
Génie Logiciel : les tests
Génie Logiciel : les testsGénie Logiciel : les tests
Génie Logiciel : les tests
 
Modelisation agile 03122011
Modelisation agile  03122011Modelisation agile  03122011
Modelisation agile 03122011
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Génie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesGénie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architectures
 
Chapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéChapitre ii complexité et optimalité
Chapitre ii complexité et optimalité
 
L Architecture Logicielle En Pratique
L Architecture Logicielle En PratiqueL Architecture Logicielle En Pratique
L Architecture Logicielle En Pratique
 
CM processus-unifie
CM processus-unifieCM processus-unifie
CM processus-unifie
 
UML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouriUML Part2- diagramme des uses cases_mansouri
UML Part2- diagramme des uses cases_mansouri
 

Destacado

Le passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnelLe passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnelHassen Sic
 
Introduction à SPDY, Next Generation Networking Protocols - Google Day X Moro...
Introduction à SPDY, Next Generation Networking Protocols - Google Day X Moro...Introduction à SPDY, Next Generation Networking Protocols - Google Day X Moro...
Introduction à SPDY, Next Generation Networking Protocols - Google Day X Moro...Mohammed CHERIFI
 
Telecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfTelecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfwebreaker
 
Attaques Informatiques
Attaques InformatiquesAttaques Informatiques
Attaques InformatiquesSylvain Maret
 
Protocole d’authetification PPP
Protocole d’authetification PPPProtocole d’authetification PPP
Protocole d’authetification PPPZakaria El ktaoui
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Ilyas CHAOUA
 
Crée cd windows avec n lite
Crée cd windows avec n liteCrée cd windows avec n lite
Crée cd windows avec n liteFranck Lecluse
 
Présentation d'ACI-Kairos
Présentation d'ACI-KairosPrésentation d'ACI-Kairos
Présentation d'ACI-KairosBiom Work
 
VulnerabilidadDelAdolescente Calzada[1]
VulnerabilidadDelAdolescente Calzada[1]VulnerabilidadDelAdolescente Calzada[1]
VulnerabilidadDelAdolescente Calzada[1]media9calzada
 
Centre du Vietnam et Trésors du Cambodge
Centre du Vietnam et Trésors du CambodgeCentre du Vietnam et Trésors du Cambodge
Centre du Vietnam et Trésors du CambodgeIdeotour Vietnam
 

Destacado (20)

Le passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnelLe passage du diagramme de classe vers le model objet relationnel
Le passage du diagramme de classe vers le model objet relationnel
 
Diagrammes de classes
Diagrammes de classesDiagrammes de classes
Diagrammes de classes
 
Introduction à SPDY, Next Generation Networking Protocols - Google Day X Moro...
Introduction à SPDY, Next Generation Networking Protocols - Google Day X Moro...Introduction à SPDY, Next Generation Networking Protocols - Google Day X Moro...
Introduction à SPDY, Next Generation Networking Protocols - Google Day X Moro...
 
Telecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdfTelecharger Cours java pour debutant pdf
Telecharger Cours java pour debutant pdf
 
Algorithme
AlgorithmeAlgorithme
Algorithme
 
Attaques Informatiques
Attaques InformatiquesAttaques Informatiques
Attaques Informatiques
 
Protocole d’authetification PPP
Protocole d’authetification PPPProtocole d’authetification PPP
Protocole d’authetification PPP
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...
 
Offre BTL_Version A4_V3
Offre BTL_Version A4_V3Offre BTL_Version A4_V3
Offre BTL_Version A4_V3
 
Crée cd windows avec n lite
Crée cd windows avec n liteCrée cd windows avec n lite
Crée cd windows avec n lite
 
Voices Carnival
Voices CarnivalVoices Carnival
Voices Carnival
 
Présentation d'ACI-Kairos
Présentation d'ACI-KairosPrésentation d'ACI-Kairos
Présentation d'ACI-Kairos
 
Para vencer un habito
Para vencer un habitoPara vencer un habito
Para vencer un habito
 
VulnerabilidadDelAdolescente Calzada[1]
VulnerabilidadDelAdolescente Calzada[1]VulnerabilidadDelAdolescente Calzada[1]
VulnerabilidadDelAdolescente Calzada[1]
 
Programme de 13 Jours
Programme de 13 JoursProgramme de 13 Jours
Programme de 13 Jours
 
Indiferencia
IndiferenciaIndiferencia
Indiferencia
 
5jrs Nord-Ouest
5jrs Nord-Ouest5jrs Nord-Ouest
5jrs Nord-Ouest
 
Centre du Vietnam et Trésors du Cambodge
Centre du Vietnam et Trésors du CambodgeCentre du Vietnam et Trésors du Cambodge
Centre du Vietnam et Trésors du Cambodge
 
Dossiers 0015
Dossiers 0015Dossiers 0015
Dossiers 0015
 
general book
general book general book
general book
 

Similar a Uml: Diagrammes de classes -- Concepts avances --- 27

Similar a Uml: Diagrammes de classes -- Concepts avances --- 27 (20)

Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41Uml: Diagrammes de classes -- Concepts De Base 41
Uml: Diagrammes de classes -- Concepts De Base 41
 
556ef78d93c3b
556ef78d93c3b556ef78d93c3b
556ef78d93c3b
 
Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)Generateur de code java (GenJAVA)
Generateur de code java (GenJAVA)
 
CM uml-diag-statiques
CM uml-diag-statiquesCM uml-diag-statiques
CM uml-diag-statiques
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception Objet
 
Uml
UmlUml
Uml
 
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23
Uml : Diagrammes de Cas dutilisation -- Modele preliminaire -- 23
 
generation_code.pdf
generation_code.pdfgeneration_code.pdf
generation_code.pdf
 
Tp plaque
Tp plaqueTp plaque
Tp plaque
 
UML Diagrammes Statiques
UML Diagrammes StatiquesUML Diagrammes Statiques
UML Diagrammes Statiques
 
Kamal Lmsp V2
Kamal Lmsp V2Kamal Lmsp V2
Kamal Lmsp V2
 
POO
POOPOO
POO
 
Tp3 - UML
Tp3 - UMLTp3 - UML
Tp3 - UML
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
 
Modélisation avec UML
Modélisation avec UMLModélisation avec UML
Modélisation avec UML
 
Uml
UmlUml
Uml
 
Unified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VFUnified Modeling Language Intro 2021-2022 VF
Unified Modeling Language Intro 2021-2022 VF
 
cours2diagStatiq.pdf
cours2diagStatiq.pdfcours2diagStatiq.pdf
cours2diagStatiq.pdf
 
Cours 2 les composants
Cours 2 les composantsCours 2 les composants
Cours 2 les composants
 

Más de megaplanet20

UML OCL : Cheat Sheet - 10
UML OCL : Cheat Sheet - 10UML OCL : Cheat Sheet - 10
UML OCL : Cheat Sheet - 10megaplanet20
 
IDM : Vision Globale - Introduction -- 9
IDM : Vision Globale - Introduction -- 9IDM : Vision Globale - Introduction -- 9
IDM : Vision Globale - Introduction -- 9megaplanet20
 
UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24megaplanet20
 
UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29megaplanet20
 
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20megaplanet20
 
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15megaplanet20
 

Más de megaplanet20 (6)

UML OCL : Cheat Sheet - 10
UML OCL : Cheat Sheet - 10UML OCL : Cheat Sheet - 10
UML OCL : Cheat Sheet - 10
 
IDM : Vision Globale - Introduction -- 9
IDM : Vision Globale - Introduction -- 9IDM : Vision Globale - Introduction -- 9
IDM : Vision Globale - Introduction -- 9
 
UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24UML OCL : Liaison avecUML -- 24
UML OCL : Liaison avecUML -- 24
 
UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29UML OCL : An Expression Language - Core -- 29
UML OCL : An Expression Language - Core -- 29
 
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
UML : Diagrammes de cas d'utilisation -- Problemes recurrents -- 20
 
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
 

Último

DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAmar LAKEL, PhD
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 37
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilfrizzole
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 37
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 

Último (16)

DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècle
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avril
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 

Uml: Diagrammes de classes -- Concepts avances --- 27

  • 1. megaplanet UML :UML : Diagrammes de ClassesDiagrammes de Classes Concepts avancésConcepts avancés Visibilité, Déclaration d'attributs et d'opérationsVisibilité, Déclaration d'attributs et d'opérations Navigation, Composition, AggrégationNavigation, Composition, Aggrégation Classe associative, Association qualifiée…Classe associative, Association qualifiée… Classe abstraite, Héritage multipleClasse abstraite, Héritage multiple Classification multiple, dynamiqueClassification multiple, dynamique Concepts à utiliser à bon escient,Concepts à utiliser à bon escient, lorsque nécessaire et uniquement lorsque nécessaire...lorsque nécessaire et uniquement lorsque nécessaire...
  • 2. megaplanet Concepts à utiliser à bon escient,Concepts à utiliser à bon escient, uniquementuniquement lorsque nécessaire...lorsque nécessaire... 2
  • 3. megaplanet 3 UML ? ... une question de style et de contexteUML ? ... une question de style et de contexte S'adapter ...S'adapter ... au niveau d'abstractionau niveau d'abstraction au domaine d'applicationau domaine d'application aux outils utilisésaux outils utilisés aux savants et ignorantsaux savants et ignorants ingénierie vs. retro-ingénierieingénierie vs. retro-ingénierie
  • 4. megaplanet 4 Concepts « avancés »Concepts « avancés » Descriptions plus préciseDescriptions plus précise (1) Attributs et opérations(1) Attributs et opérations (2) Associations(2) Associations (3) Généralisation(3) Généralisation
  • 5. megaplanet 5 (1) attributs et opérations(1) attributs et opérations Visibilité, Portée, Dérivation, …Visibilité, Portée, Dérivation, … Enumérations et types de donnéesEnumérations et types de données {frozen}, {addonly}, {ordered}, {nonunique}{frozen}, {addonly}, {ordered}, {nonunique}
  • 6. megaplanet 6 + # - Visibilité des éléments+ # - Visibilité des éléments Eviter les dépendances entre classes et paquetagesEviter les dépendances entre classes et paquetages ++ publicpublic visiblevisible ~~ packagepackage visible dans le package uniquementvisible dans le package uniquement ## protégéprotégé visible dans la classe et ses sous-classesvisible dans la classe et ses sous-classes -- privéprivé visible dans la classe uniquementvisible dans la classe uniquement Lors de la conception et de l'implémentation, pas avant !Lors de la conception et de l'implémentation, pas avant ! La sémantique exacte dépend du langage de programmation !La sémantique exacte dépend du langage de programmation !
  • 7. megaplanet 7 Déclaration d'attributsDéclaration d'attributs [/] [[/] [ visibilitévisibilité ]] nomnom [[ :: typetype ] [] [card ordrecard ordre] [] [ == valeur-initialevaleur-initiale ] [] [ {{ propsprops...... }} ]] exemples:exemples: age +age /age - solde : Integer = 0 # age : Integer [0..1] # numsecu : Integer {frozen} # motsClés : String [*] {addOnly} nbPersonne : Integer Adapter le niveau de détail au niveau d'abstractionAdapter le niveau de détail au niveau d'abstraction
  • 8. megaplanet 8 Déclaration d'opérationsDéclaration d'opérations [/] [[/] [ visibilitévisibilité ]] nomnom [[ (( paramsparams )) ] [] [ :: typetype ] [] [ {{ propsprops...... }} ]] paramsparams :=:= [[ inin || outout|| inoutinout ]] nomnom [[ :: type] [type] [ ==defaut ] [defaut ] [{{ propsprops...... }} ]] /getAge() + getAge() : Integer - updateAge( in date : Date ) : Boolean # getName() : String [0..1] +getAge() : Integer {isQuery} +addProject() : { concurrency = sequential } +addProject() : { concurrency = concurrent } +main( in args : String [*] {ordered} ) Adapter le niveau de détail au niveau d'abstractionAdapter le niveau de détail au niveau d'abstraction
  • 9. megaplanet 9 Enumérations et Types de donnéesEnumérations et Types de données <<enumeration>> Jour Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche <<enumeration>> Titre Secretaire President Tresorier VicePresident Membre ExempleExemple d’utilisationd’utilisation nom : String joursDeReunion : Jour[*] dateDeCreation : Date Association1901 <<datatype>> Date compare() jour() mois() année() x : integer y : integer <<datatype>> Point <<datatype>> GeoLocation Utilisable comme type d’attributsUtilisable comme type d’attributs Valeurs (pas d’identité)Valeurs (pas d’identité) Type de données typiquementType de données typiquement définis dans des « librairies »définis dans des « librairies »
  • 10. megaplanet 10 (2) associations(2) associations Association uni/bi directionnelleAssociation uni/bi directionnelle Composition et AggrégationComposition et Aggrégation {frozen}, {addonly}, {ordered}, {nonunique}{frozen}, {addonly}, {ordered}, {nonunique} Classes associativesClasses associatives Associations qualifiéesAssociations qualifiées
  • 11. megaplanet 11 NavigationNavigation Client Compte 1 titulaire Association unidirectionnelle On ne peut naviguer que dans un sens A priori, que dans les diagrammes de spécifications et d'implémentation En cas de doute, ne pas mettre de flêche !!! * UML2.0
  • 12. megaplanet 12 CompositionComposition Voiture Roue composition = cas particulier d’association + contraintes décrivant la notion de "composant"... 4 Pneu Jante 1 1 Notion intuitive de "composants" et de "composites"
  • 13. megaplanet 13 CompositionComposition Contraintes liées à la composition : 1. Un objet composant ne peut être que dans 1 seul objet composite 2. Un objet composant n’existe pas sans son objet composite 3. Si un objet composite est détruit, ses composants aussi Voiture Roue 4 Pneu Jante 1 1 Dépend de la situation modélisée ! (Ex: vente de voitures vs. casse)
  • 14. megaplanet 14 0..1 CompositionComposition Document Chapitre Section Figure 1..* 1..* 0..* Contraintes liées à la composition : 1. Un objet composant ne peut être que dans 1 seul objet composite 2. Un objet composant n’existe pas sans son objet composite 3. Si un objet composite est détruit, ses composants aussi
  • 15. megaplanet 15 CompositionComposition Document Chapitre Section Figure 1..* 1..*1 0..* 1..* Contrainte : le graphe d'objets forme un arbre (ou une forêt) : document : chapitre : chapitre : section : section : figure : figure : section M1 M0
  • 17. megaplanet 17 CompositionComposition : Point x = 0 y = 0 : Point x = 0 y = 10 : Point x = 10 y = 0 : Polygone c1 : Cercle rayon = 5 : Point x = 10 y = 0 Point x y Polygone 3..* Cercle rayon 1 M1 M0
  • 18. megaplanet 18 Voiture Volant : Volant Roue : Roue [4] sièges : Siège [*] Autres notations pour la CompositionAutres notations pour la Composition Voiture Volant Roue 1 4 Siège * sièges Voiture Volant 1 Roue 4 sièges : Siège *
  • 19. megaplanet 19 Associations intra vs. inter compositesAssociations intra vs. inter composites Voiture Volant 1 Roue 4 * 0..1 0..1 * Volant Roue Voiture 1 4 Marque * 1 Marque 1 * Exemple
  • 20. megaplanet 20 AggregationAggregation aggregation = cas particulier d’association + contraintes décrivant la notion d'appartenance... ? Partage possible Pas de concensus sur la signification exacte de l'aggrégation Utiliser avec précautions (ou ne pas utiliser...) Point x y Figure ** Supprimé en UML2.0
  • 21. megaplanet 21 Composition vs. AggregationComposition vs. Aggregation OUI NON La présence de est parfois un indice d'incompétence :-)
  • 22. megaplanet 22 Contraintes prédéfinies sur lesContraintes prédéfinies sur les associationsassociations { ordered } : les éléments de la collection sont ordonnés { nonUnique } : répétitions possibles (UML2.0) { frozen } : fixé lors de la création de l ’objet, ne peut pas changer { addOnly } : impossible de supprimer un élément RelevéDe Compte Ligne Opération* {ordered,addOnly} lignes Peut être très utile!
  • 23. megaplanet 23 Classes associativesClasses associatives Personne Société employés * 0..2 Pour associer des attributs et/ou des méthodes aux associations => classes associatives Emploi salaire augmenter() Le nom de la classe correspond au nom de l’association (problème: il faut choisir entre forme nominale et forme verbale) sociétés
  • 24. megaplanet 24 Classes associativesClasses associatives jean marie salaire = 1500 xerox employé e1 ujf employé e2 salaire = 700 employé e3 salaire = 1000 Le salaire est une information correspondant • ni à une personne, • ni à une société, mais à un emploi (un couple personne-société). Personne Société employés * 0..2 Emploi salaire augmenter() sociétés M1 M0
  • 25. megaplanet 25 Classes associativesClasses associatives p1 Emploi> s1 RAPPEL: Pour une association donnée, un couple d'objets ne peut être connectés que par un seul lien correspondant à cette association. (sauf si l'association est décorée par {nonunique} en UML2.0) Emploi> Cette contrainte reste vraie dans le cas où l’association est décrite à partir d ’une classe associative. p1 s1 : Emploi salaire = 1500 : Emploi salaire = 700
  • 26. megaplanet 26 Classes associativesClasses associatives Emploi salaire Personne Société employé 1 1 0..2 société* Ci-dessus, une personne peut avoir deux emplois dans la même société e2 p1 s1 e1 Personne Société employé * 0..2 Emploi salaire sociétés Ci-dessus, une personne peut avoir deux emplois, mais pas dans la même société p1 s1 e1
  • 27. megaplanet 27 Classes associatives : traductionClasses associatives : traduction A rolea(s) carda cardb C roleb(s) B A 1 1 BC rolebrolea cardacardb Il ne peut y avoir qu'un objet C entre un objet A et un objet B donné Transformation systèmatique pour revenir aux concepts de base c[s] c[s]
  • 28. megaplanet 28 Classes associatives : traductionClasses associatives : traduction Personne employés * 0..2 Emploi sociétés Sociét é Personne *1 1 société SociétéEmploi employé 0..2 Il ne peut y avoir qu'un Emploi entre une Personne et une Société emplois emplois
  • 29. megaplanet 29 Virement montant Exemple 1Exemple 1 Compte compteCrédit é * Virement montant *compteDébité Compte compteCrédit é 11compteDébité * * Ou ? M1 M0 c1 c2 v1 v2 Situation possible ? Peut-on avoir plusieurs virements entre deux comptes ?compteCrédité compteCréditécompteDébité compteDébité
  • 30. megaplanet 30 Virement montant Exemple 1Exemple 1 Compte compteCrédit é * Virement montant *compteDébité Compte compteCrédit é 11compteDébité * * Il peut y avoir plusieurs virement entre deux comptes donnés M0 c1 c2 v1 v2 Situation valide compteCrédité compteCréditécompteDébité compteDébité M1
  • 31. megaplanet 31 Exemple 2Exemple 2 Joueur joueurs * * Participation nbDeButs matchs M0 paul finale p1 p2 Situation possible ? match matchjoueur joueur Joueur joueur 1 1 Participation nbDeButs match participations * participations Match * Un joueur peut il avoir plusieurs participations à un match donné ? Match
  • 32. megaplanet 32 Exemple 2Exemple 2 Joueur joueurs * * Participation nbDeButs matchs M0 paul finale p1 p2 Situation impossible match matchjoueur joueur Joueur Voiture joueur 1 1 Participation nbDeButs match participations * participations Match * Une seule participation à un match donné pour un joueur donné
  • 33. megaplanet 33 Exemple 3Exemple 3 Personne propriétaires * * CarteGrise dateDélivrance voitures M0 paul la106 cg1 cg2 Situation possible ? voitures voiturespropriétaires propriétaires Personne Voiture propriétaire 1 1 CarteGrise dateDélivrance voiture {ordered, nonUnique} {ordered, nonUnique} carteGrises * carteGrises Voiture
  • 34. megaplanet 34 Exemple 3Exemple 3 Personne propriétaires * * CarteGrise dateDélivrance voitures M0 paul la106 cg1 cg2 voitures voiturespropriétaires propriétaires Personne Voiture propriétaire 1 1 CarteGrise dateDélivrance voiture {ordered} * {ordered} carteGrises * carteGrises Voiture Situation possible car on garde l'historique et paul peut acheter deux fois la même voiture
  • 35. megaplanet 35 Exemple 4Exemple 4 Personne conjointsDécédés * Veuvage date montantAssurance 0..1 conjointLaisséVeuf Ou ? Personne 0..1 Veuvage date montantAssurance * conjointDécédéconjointLaisséVeuf 1 1 M0 paul marie v1 v2 Situation possible ? conjointsDécédés conjointsDécédésconjointLaisséVeu f conjointLaisséVeu f Peut on toucher deux fois l'assurance ?
  • 36. megaplanet 36 Exemple 4Exemple 4 Personne conjointsDécédés * Veuvage date montantAssurance 0..1 conjointLaisséVeuf Personne 0..1 Veuvage date montantAssurance * conjointDécédéconjointLaisséVeuf 1 1 M0 paul marie v1 v2 Situation illégale conjointsDécédés conjointsDécédésconjointLaisséVeu f conjointLaisséVeu f Les deux solutions sont valides car la cardinalité 0..1 interdit cette situation de toute façon (cas particulier) Ou
  • 37. megaplanet 37 Classes associativesClasses associatives Les classes associatives sont des associations mais aussi des classes. Personne Société employés * Emploi salaire augmenter() sociétés 0..2 FicheDePaye * {ordered} Ajouter les notions de fiches de payes, de supervision et d’évaluation
  • 38. megaplanet 38 Classes associativesClasses associatives Les classes associatives sont des associations mais aussi des classes. Personne Société employés * Emploi salaire augmenter() sociétés 0..2 FicheDePaye * {ordered} responsable 0..1 subordonnés * Supervision Evaluation *
  • 39. megaplanet 39 Associations qualifiéesAssociations qualifiées Repertoire Fichiernom 0..1 Un qualifieur est un attribut (ou un ensemble d'attributs) dont la valeur sert à déterminer l'ensemble des instances associées à une instance via une association. "Pour un répertoire, à un nom donné on associe qu'un fichier (ou 0 s'il existe aucun fichier de ce nom dans ce répertoire)." Repertoire Fichier * Correspond à la notion intuitive d'index absente ci-dessous
  • 41. megaplanet 41 Cardinalité des Associations QualifiéesCardinalité des Associations Qualifiées Banque Comptenc 0..1 0 comme cardinalité minimale, sauf si le domaine de l'attribut qualifieur est fini et toutes les valeurs ont une image. Cas classique: cardinalité 0..1 Banque Employetitre ** Cas plus rare: cardinalité * (pas de contrainte particulière exprimée) Echiquier Case nl : NumLigne nc : NumCol 11 Cas plus rare: cardinalité 1 (généralement c'est une erreur)
  • 42. megaplanet 42 Attributs de l'associationAttributs de l'association Repertoire Fichiernom 0..1 Les attributs qualifieurs sont des attributs de l'association, pas de la classe Exemple liens "hard" en Unix: un fichier peut correspondre à des noms différents dans des repertoires différents * r1 r2 r2 f1 f2 nom="a" nom="b" nom="f"
  • 43. megaplanet 43 Problème classiqueProblème classique Repertoire Fichiernom 0..1 Souvent l'index est également un attribut de classe indexée Solution correcte: 1 /nom Le nom du fichier correspond au nom qu'a le fichier dans le répertoire 2 erreurs communes: Repertoire Fichiernom 11 nom Repertoire Fichiernom 11 nom
  • 44. megaplanet 44 Classes associatives : traductionClasses associatives : traduction Repertoire Fichiernom 0..1* Repertoire Fichier nom ** Contient Contient Transformation systèmatique pour revenir aux concepts de base Un répertoire contient 0 ou 1 fichier pour un nom donné Les attributs du qualifieur sont des attributs de l'association
  • 45. megaplanet 45 Synthèse sur les associationsSynthèse sur les associations <AssociationX Cardinalités ClasseA ClasseB roleA 0..* attributZ {frozen} Nom de rôle sens de lecture AssociationX Contrainte Navigation Classe associative Composition (ou aggregation ) Nom d ’association x : string
  • 46. megaplanet 46 (3) généralisation(3) généralisation Ré-définitionRé-définition Classes abstraitesClasses abstraites Méthodes abstaitesMéthodes abstaites Héritage simple vs. multipleHéritage simple vs. multiple Classification simple vs. multipleClassification simple vs. multiple Classification statique vs. dynamiqueClassification statique vs. dynamique
  • 47. megaplanet 47 Héritage et redéfinitionHéritage et redéfinition Une sous classe peut redéfinir une méthode, à condition toutefois de rester compatible avec la définition originale Figure surface() déplacer() Cercle surface() Polygone surface() Carré surface()
  • 48. megaplanet 48 Classes et méthodes abstraitesClasses et méthodes abstraites Une classe abstraite • ne peut pas être instanciée • utile pour définir un comportement abstrait • peut contenir des méthodes abstraites Un méthode abstraite • doit être définie dans une sous classe • est dans un classe abstraite Figure surface() déplacer() Cercle surface() Polygone surface() Carré surface() Figure {abstract} surface() {abstract} déplacer() Figure surface() déplacer() Notations équivalentes Triangle surface()
  • 49. megaplanet 49 Classes abstraites du point de vueClasses abstraites du point de vue ensemblisteensembliste Figure surface() déplacer() Cercle surface() Polygone surface() Figures Cercles Polygones Carré surface() Triangle surface() Triangles Carrés c1 c2 c3 c4 t1 t2 ca1 ca2 M0M1
  • 50. megaplanet 50 Classification vs. HéritageClassification vs. Héritage M0 M1 Chien medor Chien Animal medor <<instanceOf>> Classification Héritage/Spécialisation coco
  • 51. megaplanet 51 Héritage multipleHéritage multiple Une classe peut hériter de plusieurs super-classes Interdit dans certains langages de programmation (p.e. Java et C#) Chauffage Appareil É lectrique Chauffage É lectriquePoel Appareil MicroOndes Appareils Chauffages electriques Chauffage Appareils électriques Poels Micro ondes M0M1
  • 52. megaplanet 52 Points liés à l’héritagePoints liés à l’héritage et à la classificationet à la classification Les modèles orientés-objets ne font pas tous les mêmes hypothèses Héritage simple vs. héritage multiple Une classe peut elle hériter de plusieurs classes ? Classification simple vs. classification multiple Un objet peut-il être simultanément instance de plusieurs classes? Classification statique vs. classification dynamique Un objet peut-il changer de classe pendant l’exécution ?
  • 53. megaplanet 53 Hypothèses UML par défaultHypothèses UML par défault Sauf si le contraire est indiqué explicitement, en UML les hypothèses par défaut sont : Héritage multiple une classe peut hériter de plusieurs classes Classification simple un objet est instance d’une seule classe Classification statique un objet est créé à partir d’une classe donnée et n’en change pas