Professional Documents
Culture Documents
Accueil ALM Java .NET Dv.Web EDI Programmation SGBD Office Solutionsd'entreprise
UML2
Del'apprentissagelapratique
Tabledesmatires
3.Chapitre3Diagrammedeclasses(ClassDiagram)
31.Introduction
Lediagrammedeclassesestconsidrcommeleplusimportantdelamodlisationoriente
objet,ilestleseulobligatoirelorsd'unetellemodlisation.
Alorsquelediagrammedecasd'utilisationmontreunsystmedupointdevuedesacteurs,le
diagrammedeclassesenmontrelastructureinterne.Ilpermetdefournirunereprsentation
abstraitedesobjetsdusystmequivontinteragirpourraliserlescasd'utilisation.Ilest
importantdenoterqu'unmmeobjetpeuttrsbienintervenirdanslaralisationdeplusieurs
casd'utilisation.Lescasd'utilisationneralisentdoncpasunepartition(7)desclassesdu
diagrammedeclasses.Undiagrammedeclassesn'estdoncpasadapt(saufcasparticulier)
pourdtailler,dcomposer,ouillustrerlaralisationd'uncasd'utilisationparticulier.
Ils'agitd'unevuestatique,caronnetientpascomptedufacteurtemporeldansle
comportementdusystme.Lediagrammedeclassesmodliselesconceptsdudomaine
d'applicationainsiquelesconceptsinternescrsdetoutespicesdanslecadrede
l'implmentationd'uneapplication.ChaquelangagedeProgrammationorientobjetdonneun
moyenspcifiqued'implmenterleparadigmeobjet(pointeursoupas,hritagemultipleoupas,
etc.),maislediagrammedeclassespermetdemodliserlesclassesdusystmeetleurs
relationsindpendammentd'unlangagedeprogrammationparticulier.
Lesprincipauxlmentsdecettevuestatiquesontlesclassesetleursrelations:association,
gnralisationetplusieurstypesdedpendances,tellesquelaralisationetl'utilisation.
32.Lesclasses
321.Notionsdeclasseetd'instancedeclasse
Uneinstanceestuneconcrtisationd'unconceptabstrait.Parexemple:
laFerrariEnzoquisetrouvedansvotregarageestuneinstanceduconceptabstrait
Automobile
l'amitiquilieJeanetMarieestuneinstanceduconceptabstraitAmiti
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 1/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Uneclasseestunconceptabstraitreprsentantdeslmentsvariscomme:
deslmentsconcrets(ex.:desavions),
deslmentsabstraits(ex.:descommandesdemarchandisesouservices),
descomposantsd'uneapplication(ex.:lesboutonsdesbotesdedialogue),
desstructuresinformatiques(ex.:destablesdehachage),
deslmentscomportementaux(ex.:destches),etc.
Toutsystmeorientobjetestorganisautourdesclasses.
Uneclasseestladescriptionformelled'unensembled'objetsayantunesmantiqueetdes
caractristiquescommunes.
Unobjetestuneinstanced'uneclasse.C'estuneentitdiscrtedoted'uneidentit,d'untat
etd'uncomportementquel'onpeutinvoquer.Lesobjetssontdeslmentsindividuelsd'un
systmeencoursd'excution.
Parexemple,sil'onconsidrequeHomme(ausenstrehumain)estunconceptabstrait,on
peutdirequelapersonneMarieCcileestuneinstancedeHomme.SiHommetaituneclasse,
MarieCcileenseraituneinstance:unobjet.
322.Caractristiquesd'uneclasse
Uneclassedfinitunjeud'objetsdotsdecaractristiquescommunes.Lescaractristiquesd'un
objetpermettentdespcifiersontatetsoncomportement.Danslessections1.3.2L'approche
orienteobjetet1.3.4Conceptsimportantsdel'approcheobjet,nousavonsditqueles
caractristiquesd'unobjettaientsoitdesattributs,soitdesoprations.Cen'estpasexactdans
undiagrammedeclasse,carlesterminaisonsd'associationssontdespropritsquipeuvent
fairepartiedescaractristiquesd'unobjetaummetitrequelesattributsetlesoprations(cf.
section3.3.2Terminaisond'association).
tatd'unobjet:
cesontlesattributsetgnralementlesterminaisonsd'associations,tousdeuxrunis
sousletermedepropritsstructurelles,outoutsimplementproprits(8),quidcrivent
l'tatd'unobjet.Lesattributssontutilisspourdesvaleursdedonnespures,dpourvues
d'identit,tellesquelesnombresetleschanesdecaractres.Lesassociationssont
utilisespourconnecterlesclassesdudiagrammedeclassedanscecas,laterminaison
del'association(ductdelaclassecible)estgnralementunepropritdelaclassede
base(cf.section3.3.1Notiond'associationet3.3.2Terminaisond'association).
Lespropritsdcritesparlesattributsprennentdesvaleurslorsquelaclasseest
instancie.L'instanced'uneassociationestappeleunlien.
Comportementd'unobjet:
lesoprationsdcriventleslmentsindividuelsd'uncomportementquel'onpeut
invoquer.Cesontdesfonctionsquipeuventprendredesvaleursenentreetmodifierles
attributsouproduiredesrsultats.
Uneoprationestlaspcification(i.e.dclaration)d'unemthode.L'implmentation(i.e.
dfinition)d'unemthodeestgalementappelemthode.Ilyadoncuneambigutsur
letermemthode.
Lesattributs,lesterminaisonsd'associationetlesmthodesconstituentdoncles
caractristiquesd'uneclasse(etdesesinstances).
323.Reprsentationgraphique
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 2/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.1:ReprsentationUMLd'uneclasse.
Uneclasseestunclasseur(9).Elleestreprsenteparunrectangledivisentroiscinq
compartiments(figure3.1).
Lepremierindiquelenomdelaclasse(cf.section3.2.5Nomd'uneclasse),ledeuximeses
attributs(cf.section3.2.6Lesattributs)etletroisimesesoprations(cf.section3.2.7Les
mthodes).Uncompartimentdesresponsabilitspeuttreajoutpournumrerl'ensemblede
tchesdevanttreassuresparlaclasse,maispourlesquellesonnedisposepasencoreassez
d'informations.Uncompartimentdesexceptionspeutgalementtreajoutpournumrerles
situationsexceptionnellesdevanttregresparlaclasse.
324.Encapsulation,visibilit,interface
Figure3.2:Bonnespratiquesconcernantlamanipulationdesattributs.
Nousavonsdjabordcetteproblmatiquesection1.3.4Conceptsimportantsdel'approche
objet.L'encapsulationestunmcanismeconsistantrassemblerlesdonnesetlesmthodes
auseind'unestructureencachantl'implmentationdel'objet,c'estdireenempchantl'accs
auxdonnesparunautremoyenquelesservicesproposs.Cesservicesaccessibles(offerts)
auxutilisateursdel'objetdfinissentcequel'onappellel'interfacedel'objet(savueexterne).
L'encapsulationpermetdoncdegarantirl'intgritdesdonnescontenuesdansl'objet.
L'encapsulationpermetdedfinirdesniveauxdevisibilitdeslmentsd'unconteneur.La
visibilitdclarelapossibilitpourunlmentdemodlisationderfrencerunlmentquise
trouvedansunespacedenomsdiffrentdeceluidel'lmentquitablitlarfrence.Ellefait
partiedelarelationentreunlmentetleconteneurquil'hberge,cedernierpouvanttreun
paquetage,uneclasseouunautreespacedenoms.Ilexistequatrevisibilitsprdfinies.
Publicou+:
toutlmentquipeutvoirleconteneurpeutgalementvoirl'lmentindiqu.
Protectedou#:
seulunlmentsitudansleconteneurouundesesdescendantspeutvoirl'lment
indiqu.
Privateou:
seulunlmentsitudansleconteneurpeutvoirl'lment.
Packageouourien:
seulunlmentdclardanslemmepaquetagepeutvoirl'lment.
Parailleurs,UML2.0donnelapossibilitd'utilisern'importequellangagedeprogrammation
pourlaspcificationdelavisibilit.
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 3/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Dansuneclasse,lemarqueurdevisibilitsesitueauniveaudechacunedesescaractristiques
(attributs,terminaisonsd'associationetopration).Ilpermetd'indiquersiuneautreclassepeut
yaccder.
Dansunpaquetage,lemarqueurdevisibilitsesituesurdeslmentscontenusdirectement
danslepaquetage,commelesclasses,lespaquetagesimbriqus,etc.Ilindiquesiunautre
paquetagesusceptibled'accderaupremierpaquetagepeutvoirleslments.
Danslapratique,lorsquedesattributsdoiventtreaccessiblesdel'extrieur,ilestprfrable
quecetaccsnesoitpasdirect,maissefasseparl'intermdiaired'oprations(figure3.2).
325.Nomd'uneclasse
Lenomdelaclassedoitvoquerleconceptdcritparlaclasse.Ilcommenceparune
majuscule.Onpeutajouterdesinformationssubsidiairescommelenomdel'auteurdela
modlisation,ladate,etc.Pourindiquerqu'uneclasseestabstraite,ilfautajouterlemotclef
abstract.
Lasyntaxedebasedeladclarationd'unnomd'uneclasseestlasuivante:
Slectionnez
[ <Nom_du_paquetage_1>::...::<Nom_du_paquetage_N> ]
<Nom_de_la_classe> [ { [abstract], [<auteur>], [<date>], ... } ]
325a.Mtalangagedessyntaxes
Nousauronsrgulirementrecourscemtalangagepourdcriredessyntaxesdedclaration.
Cemtalangagecontientcertainsmtacaractres:
[]:
lescrochetsindiquentquecequiestl'intrieurestoptionnel
<>:
lessignesinfrieuretsuprieurindiquentquecequiestl'intrieurestplusoumoins
libreparexemple,lasyntaxededclarationd'unevariablecommecompteur:intest
<nom_variable>:<type>
'':
lescotessontutilesquandonveututiliserunmtacaractrecommeuncaractrepar
exemple,pourdsigneruncrochet([)ilfautcrire'[,car[estunmtacaractreayant
unesignificationspciale
permetdedsignerunesuitedesquencedelongueurnondfinie,lecontexte
permettantdecomprendredequellesuiteils'agit.
326.Lesattributs
326a.Attributsdelaclasse
Lesattributsdfinissentdesinformationsqu'uneclasseouunobjetdoiventconnatre.Ils
reprsententlesdonnesencapsulesdanslesobjetsdecetteclasse.Chacunedeces
informationsestdfinieparunnom,untypededonnes,unevisibilitetpeuttreinitialise.
Lenomdel'attributdoittreuniquedanslaclasse.Lasyntaxedeladclarationd'unattributest
lasuivante:
Slectionnez
<visibilit> [/] <nom_attribut> :
<type> [ '['<multiplicit>']' [{<contrainte>}] ] [ = <valeur_par_dfaut> ]
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 4/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Letypedel'attribut(<type>)peuttreunnomdeclasse,unnomd'interfaceouuntypede
donneprdfini.Lamultiplicit(<multiplicit>)d'unattributprciselenombredevaleursque
l'attributpeutcontenir.Lorsqu'unemultiplicitsuprieure1estprcise,ilestpossible
d'ajouterunecontrainte({<contrainte>})pourprcisersilesvaleurssontordonnes
({ordered})oupas({list}).
326b.Attributsdeclasse
Pardfaut,chaqueinstanced'uneclassepossdesaproprecopiedesattributsdelaclasse.Les
valeursdesattributspeuventdoncdiffrerd'unobjetunautre.Cependant,ilestparfois
ncessairededfinirunattributdeclasse(staticenJavaouenC++)quigardeunevaleur
uniqueetpartagepartouteslesinstancesdelaclasse.Lesinstancesontaccscetattribut,
maisn'enpossdentpasunecopie.Unattributdeclassen'estdoncpasunepropritd'une
instance,maisunepropritdelaclasseetl'accscetattributnencessitepasl'existence
d'uneinstance.
Graphiquement,unattributdeclasseestsoulign.
326c.Attributsdrivs
Lesattributsdrivspeuventtrecalculspartird'autresattributsetdeformulesdecalcul.
Lorsdelaconception,unattributdrivpeuttreutiliscommemarqueurjusqu'cequevous
puissiezdterminerlesrglesluiappliquer.
Lesattributsdrivssontsymbolissparl'ajoutd'un/devantleurnom.
327.Lesmthodes
327a.Mthodedelaclasse
Dansuneclasse,uneopration(mmenometmmestypesdeparamtres)doittreunique.
Quandlenomd'uneoprationapparatplusieursfoisavecdesparamtresdiffrents,onditque
l'oprationestsurcharge.Enrevanche,ilestimpossiblequedeuxoprationsnesedistinguent
queparleurvaleurretourne.
Ladclarationd'uneoprationcontientlestypesdesparamtresetletypedelavaleurde
retour,sasyntaxeestlasuivante:
Slectionnez
<visibilit> <nom_mthode> ([<paramtre_1>, ... , <paramtre_N>]) :
[<type_renvoy>] [{<proprits>}]
Lasyntaxededfinitiond'unparamtre(<paramtre>)estlasuivante:
Slectionnez
[<direction>] <nom_paramtre>:<type> ['['<multiplicit>']'] [=<valeur_par_dfaut>]
Ladirectionpeutprendrel'unedesvaleurssuivantes:
in:
paramtred'entrepassparvaleur.Lesmodificationsduparamtrenesontpas
disponiblespourl'appelant.C'estlecomportementpardfaut.
out:
paramtredesortieuniquement.Iln'yapasdevaleurd'entreetlavaleurfinaleest
disponiblepourl'appelant.
inout:
paramtred'entre/sortie.Lavaleurfinaleestdisponiblepourl'appelant.
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 5/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Letypeduparamtre(<type>)peuttreunnomdeclasse,unnomd'interfaceouuntypede
donneprdfini.
Lesproprits(<proprits>)correspondentdescontraintesoudesinformations
complmentairescommelesexceptions,lesprconditions,lespostconditionsouencore
l'indicationqu'unemthodeestabstraite(motclefabstract),etc.
327b.Mthodedeclasse
Commepourlesattributsdeclasse,ilestpossiblededclarerdesmthodesdeclasse.Une
mthodedeclassenepeutmanipulerquedesattributsdeclasseetsespropresparamtres.
Cettemthoden'apasaccsauxattributsdelaclasse(i.e.desinstancesdelaclasse).L'accs
unemthodedeclassenencessitepasl'existenced'uneinstancedecetteclasse.
Graphiquement,unemthodedeclasseestsouligne.
327c.Mthodesetclassesabstraites
Unemthodeestditeabstraitelorsqu'onconnatsonentte,maispaslamaniredontellepeut
treralise(i.e.onconnatsadclaration,maispassadfinition).
Uneclasseestditeabstraitelorsqu'elledfinitaumoinsunemthodeabstraiteoulorsqu'une
classeparent(cf.section3.3.9GnralisationetHritage)contientunemthodeabstraitenon
encoreralise.
Onnepeutinstancieruneclasseabstraite:elleestvouesespcialiser(cf.section
3.3.9GnralisationetHritage).Uneclasseabstraitepeuttrsbiencontenirdesmthodes
concrtes.
Uneclasseabstraitepurenecomportequedesmthodesabstraites.Enprogrammationoriente
objet,unetelleclasseestappeleuneinterface.
Pourindiquerqu'uneclasseestabstraite,ilfautajouterlemotclefabstractderriresonnom.
328.Classeactive
Uneclasseestpassivepardfaut,ellesauvegardelesdonnesetoffredesservicesauxautres.
Uneclasseactiveinitieetcontrlelefluxd'activits.
Graphiquement,uneclasseactiveestreprsentecommeuneclassestandarddontleslignes
verticalesducadre,surlesctsdroitetgauche,sontdoubles.
33.Relationsentreclasses
331.Notiond'association
Uneassociationestunerelationentredeuxclasses(associationbinaire)ouplus(association
naire),quidcritlesconnexionsstructurellesentreleursinstances.Uneassociationindique
doncqu'ilpeutyavoirdesliensentredesinstancesdesclassesassocies.
Commentuneassociationdoitelletremodlise?Plusprcisment,quellediffrenceexistet
ilentrelesdeuxdiagrammesdelafigure3.3?
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 6/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.3:Deuxfaonsdemodliseruneassociation.
Danslapremireversion,l'associationapparatclairementetconstitueuneentitdistincte.
Danslaseconde,l'associationsemanifesteparlaprsencededeuxattributsdanschacunedes
classesenrelation.C'estenfaitlamaniredontuneassociationestgnralementimplmente
dansunlangageobjetquelconque(cf.section3.6.2ImplmentationenJava),maispasdans
toutlangagedereprsentation(cf.section3.6.3ImplmentationenSQL).
Laquestiondesavoirs'ilfautmodliserlesassociationsentantquetellesalongtempsfait
dbat.UMLatranchpourlapremireversion,carellesesitueplusunniveauconceptuel
(paroppositionauniveaud'implmentation)etsimplifiegrandementlamodlisation
d'associationscomplexes(commelesassociationsplusieursplusieursparexemple).
Unattributpeutalorstreconsidrcommeuneassociationdgnredanslaquelleune
terminaisond'association(10)estdtenueparunclasseur(gnralementuneclasse).Le
classeurdtenantcetteterminaisond'associationdevraitthoriquementsetrouverl'autre
extrmit,nonmodlise,del'association.Unattributn'estdoncriend'autrequ'une
terminaisond'uncasparticulierd'association(cf.figure3.9section3.3.5Navigabilit).
Ainsi,lesterminaisonsd'associationsetlesattributssontdeuxlmentsconceptuellementtrs
prochesquel'onregroupesousletermedeproprit.
332.Terminaisond'association
332a.Propritaired'uneterminaisond'association
Lapossessiond'uneterminaisond'associationparleclasseursitul'autreextrmitde
l'associationpeuttrespcifiegraphiquementparl'adjonctiond'unpetitcercleplein(point)
entrelaterminaisond'associationetlaclasse(cf.figure3.4).Iln'estpasindispensablede
prciserlapossessiondesterminaisonsd'associations.Danscecas,lapossessionestambigu.
Parcontre,sil'onindiquedespossessionsdeterminaisonsd'associations,toutesles
terminaisonsd'associationssontnonambigus:laprsenced'unpointimpliquequela
terminaisond'associationappartientlaclassesituel'autreextrmit,l'absencedupoint
impliquequelaterminaisond'associationappartientl'association.
Figure3.4:Utilisationd'unpetitcerclepleinpourprciserlepropritaired'une
terminaisond'association.
Parexemple,lediagrammedelafigure3.4prcisequelaterminaisond'associationsommet
(i.e.lapropritsommet)appartientlaclassePolygonetandisquelaterminaison
d'associationpolygone(i.e.lapropritpolygone)appartientl'associationDfinipar.
332b.Uneterminaisond'associationestuneproprit
Unepropritestunecaractristiquestructurelle.Danslecasd'uneclasse,lespropritssont
constituesparlesattributsetlesventuellesterminaisonsd'associationquepossdelaclasse.
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 7/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Danslecasd'uneassociation,lespropritssontconstituesparlesterminaisonsd'association
quepossdel'association.
Attention,uneassociationnepossdepasforcmenttoutessesterminaisonsd'association!
Unepropritpeuttreparamtreparleslmentssuivants(ons'intresseiciessentiellement
auxterminaisonsd'associationspuisquelesattributsonttlargementtraits
section3.2.1Notionsdeclasseetd'instancedeclasse):
nom:
commeunattribut,uneterminaisond'associationpeuttrenomme.Lenomestsitu
proximitdelaterminaison,maiscontrairementunattribut,cenomestfacultatif.Le
nomd'uneterminaisond'associationestappelnomdurle.Uneassociationpeutdonc
possderautantdenomsderlequedeterminaisons(deuxpouruneassociationbinaire
etnpouruneassociationnaire)
visibilit:
commeunattribut,uneterminaisond'associationpossdeunevisibilit(cf.section
3.2.4Encapsulation,visibilit,interface).Lavisibilitestmentionneproximitdela
terminaison,etplusprcisment,lecaschant,devantlenomdelaterminaison
multiplicit:
commeunattribut,uneterminaisond'associationpeutpossderunemultiplicit.Elleest
mentionneproximitdelaterminaison.Iln'estpasimpratifdelaprciser,mais,
contrairementunattributdontlamultiplicitpardfautest1,lamultiplicitpardfaut
d'uneterminaisond'associationestnonspcifie.L'interprtationdelamultiplicitpour
uneterminaisond'associationestmoinsvidentequepourunattribut(cf.section
3.3.4Multiplicitoucardinalit)
navigabilit:
pourunattribut,lanavigabilitestimplicite,navigable,ettoujoursdepuislaclassevers
l'attribut.Pouruneterminaisond'association,lanavigabilitpeuttreprcise(cf.section
3.3.5Navigabilit).
333.Associationbinaireetnaire
333a.Associationbinaire
Figure3.5:Exempled'associationbinaire.
Uneassociationbinaireestmatrialiseparuntraitpleinentrelesclassesassocies(cf.figure
3.5).Ellepeuttreorned'unnom,avecventuellementuneprcisiondusensdelecture(ou
).
Quandlesdeuxextrmitsdel'associationpointentverslammeclasse,l'associationestdite
rflexive.
333b.Associationnaire
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 8/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.6:Exempled'associationnaire.
Uneassociationnairelieplusdedeuxclasses.Lasection3.3.4Multiplicitoucardinalitdtaille
commentinterprterlesmultiplicitsd'uneassociationnaire.Lalignepointilled'uneclasse
association(cf.section3.3.7Classeassociation)peuttrerelieaulosangeparuneligne
discontinuepourreprsenteruneassociationnairedoted'attributs,d'oprationsou
d'associations.
Onreprsenteuneassociationnaireparungrandlosangeavecuncheminpartantverschaque
classeparticipante(cf.figure3.6).Lenomdel'association,lecaschant,apparatproximit
dulosange.
334.Multiplicitoucardinalit
Lamultiplicitassocieuneterminaisond'association,d'agrgationoudecompositiondclare
lenombred'objetssusceptiblesd'occuperlapositiondfinieparlaterminaisond'association.
Voiciquelquesexemplesdemultiplicit:
exactementun:1ou1..1
plusieurs:*ou0..*
aumoinsun:1..*
deunsix:1..6.
Dansuneassociationbinaire(cf.figure3.5),lamultiplicitsurlaterminaisonciblecontraintle
nombred'objetsdelaclasseciblepouvanttreassocisunseulobjetdonndelaclasse
source(laclassedel'autreterminaisondel'association).
Dansuneassociationnaire,lamultiplicitapparaissantsurleliendechaqueclasses'applique
suruneinstancedechacunedesclasses,l'exclusiondelaclasseassociationetdelaclasse
considre.Parexemple,sionprenduneassociationternaireentrelesclasses(A,B,C),la
multiplicitdelaterminaisonCindiquelenombred'objetsCquipeuventapparatredans
l'association(dfiniesection3.3.7Classeassociation)avecunepaireparticulired'objetsAetB.
Pouruneassociationnaire,lamultiplicitminimaledoitenprincipe,maispasncessairement,
tre0.Eneffet,unemultiplicitminimalede1(ouplus)suruneextrmitimpliquequ'ildoit
existerunlien(ouplus)pourTOUTESlescombinaisonspossiblesdesinstancesdesclasses
situesauxautresextrmitsdel'associationnaire!
Ilfautnoterque,pourleshabitusdumodleentit/relation,lesmultiplicitssontenUML
l'envers(parrfrenceMerise)pourlesassociationsbinairesetl'endroitpourlesn
airesavecn>2.
335.Navigabilit
Figure3.7:Navigabilit.
Lanavigabilitindiques'ilestpossibledetraverseruneassociation.Onreprsente
graphiquementlanavigabilitparuneflcheductdelaterminaisonnavigableetonempche
lanavigabilitparunecroixductdelaterminaisonnonnavigable(cf.figure3.7).Pardfaut,
uneassociationestnavigabledanslesdeuxsens.
Parexemple,surlafigure3.7,laterminaisonductdelaclasseCommanden'estpas
navigable:celasignifiequelesinstancesdelaclasseProduitnestockentpasdelisted'objets
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 9/28
7/27/2017 UML 2 - de l'apprentissage la pratique
dutypeCommande.Inversement,laterminaisonductdelaclasseProduitestnavigable:
chaqueobjetcommandecontientunelistedeproduits.
Figure3.8:Implicitement,cestroisnotationsontlammesmantique.
Lorsquel'onreprsentelanavigabilituniquementsurl'unedesextrmitsd'uneassociation,il
fautremarquerque,implicitement,lestroisassociationsreprsentessurlafigure3.8ontla
mmesignification:l'associationnepeuttretraversequedansunsens.
Figure3.9:Deuxmodlisationsquivalentes.
Danslasection3.3.1Notiond'association,nousavonsditque:
Unattributestuneassociationdgnredanslaquelleuneterminaisond'associationest
dtenueparunclasseur(gnralementuneclasse).Leclasseurdtenantcetteterminaison
d'associationdevraitthoriquementsetrouverl'autreterminaison,nonmodlise,de
l'association.Unattributn'estdoncriend'autrequ'uneterminaisond'uncasparticulier
d'association.
Lafigure3.9illustreparfaitementcettesituation.
Attentiontoutefois,sivousavezuneclassePointdansvotrediagrammedeclasse,ilest
extrmementmaladroitdereprsenterdesclasses(commelaclassePolygone)avecunou
plusieursattributsdetypePoint.Ilfaut,danscecas,matrialisercettepropritdelaclasseen
questionparuneouplusieursassociationsaveclaclassePoint.
336.Qualification
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 10/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.10:Enhaut,undiagrammereprsentantl'associationentreunebanqueet
sesclients(gauche),etundiagrammereprsentantl'associationentreun
chiquieretlescasesquilecomposent(droite).Enbas,lesdiagrammes
quivalentsutilisantdesassociationsqualifies.
Gnralement,uneclassepeuttredcomposeensousclassesoupossderplusieurs
proprits.Unetelleclasserassembleunensembled'lments(d'objets).Quanduneclasseest
lieuneautreclasseparuneassociation,ilestparfoisprfrablederestreindrelaportede
l'associationquelqueslmentscibls(commeunouplusieursattributs)delaclasse.Ces
lmentsciblssontappelsunqualificatif.Unqualificatifpermetdoncdeslectionnerunou
desobjetsdanslejeudesobjetsd'unobjet(appelobjetqualifi)reliparuneassociationun
autreobjet.L'objetslectionnparlavaleurduqualificatifestappelobjetcible.L'association
estappeleassociationqualifie.Unqualificatifagittoujourssuruneassociationdontla
multiplicitestplusieurs(avantquel'associationnesoitqualifie)ductcible.
Unobjetqualifietunevaleurdequalificatifgnrentunobjetcibleliunique.Enconsidrant
unobjetqualifi,chaquevaleurdequalificatifdsigneunobjetcibleunique.
Parexemple,lediagrammedegauchedelafigure3.10nousditque:
uncomptedansunebanqueappartientauplusdeuxpersonnes.Autrementdit,une
instanceducouple{Banque,compte}estenassociationaveczrodeuxinstancesdela
classePersonne
maisunepersonnepeutpossderplusieurscomptesdansplusieursbanques.C'estdire
qu'uneinstancedelaclassePersonnepeuttreassocieplusieurs(zrocompris)
instancesducouple{Banque,compte}
bienentendu,etdanstouslescas,uneinstanceducouple{Personne,compte}esten
associationavecuneinstanceuniquedelaclasseBanque.
Lediagrammededroitedecettemmefigurenousditque:
uneinstancedutriplet{chiquier,range,colonne}estenassociationavecuneinstance
uniquedelaclasseCase
inversement,uneinstancedelaclasseCaseestenassociationavecuneinstanceunique
dutriplet{chiquier,range,colonne}.
337.Classeassociation
337a.Dfinitionetreprsentation
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 11/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.11:Exempledeclasseassociation.
Parfois,uneassociationdoitpossderdesproprits.Parexemple,l'associationEmploieentre
unesocitetunepersonnepossdecommepropritslesalaireetladated'embauche.En
effet,cesdeuxpropritsn'appartiennentnilasocit,quipeutemployerplusieurs
personnes,niauxpersonnes,quipeuventavoirplusieursemplois.Ils'agitdoncbiende
propritsdel'associationEmploie.Lesassociationsnepouvantpossderdeproprit,ilfaut
introduireunnouveauconceptpourmodlisercettesituation:celuideclasseassociation.
Uneclasseassociationpossdelescaractristiquesdesassociationsetdesclasses:ellese
connectedeuxouplusieursclassesetpossdegalementdesattributsetdesoprations.
Uneclasseassociationestcaractriseparuntraitdiscontinuentrelaclasseetl'association
qu'ellereprsente(figure3.11).
337b.Classeassociationpourplusieursassociations
Iln'estpaspossiblederattacheruneclasseassociationplusd'uneassociationpuisquela
classeassociationconstitueellemmel'association.Danslecasoplusieursclasseassociations
doiventdisposerdesmmescaractristiques,ellesdoiventhriterd'unemmeclassepossdant
cescaractristiques,oul'utiliserentantqu'attribut.
Demme,iln'estpaspossiblederattacheruneinstancedelaclassed'uneclasseassociation
plusieursinstancesdel'associationdelaclasseassociation.Eneffet,lareprsentation
graphique(associationrelieparunelignepointilleuneclassedporte)esttrompeuse:une
classeassociationestuneentitsmantiqueatomiqueetnoncompositequis'instanciedoncen
bloc.Ceproblmeetnouveauabordetillustrsection3.5.2Reprsentation.
337c.Autoassociationsurclasseassociation
Figure3.12:Exempled'autoassociationsurclasseassociation.
ImaginonsquenousvoulionsajouteruneassociationSuprieurdedanslediagramme3.11pour
prciserqu'unepersonneestlesuprieurd'uneautrepersonne.Onnepeutsimplementajouter
uneassociationrflexivesurlaclassePersonne.Eneffet,unepersonnen'estpaslesuprieur
d'uneautredansl'absolu.Unepersonneest,entantqu'employd'uneentreprisedonne,le
suprieurd'uneautrepersonnedanslecadredesonemploipouruneentreprisedonne
(gnralement,maispasncessairement,lamme).Ils'agitdoncd'uneassociationrflexive,
nonpassurlaclassePersonne,maissurlaclasseassociationEmploie(cf.figure3.12).
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 12/28
7/27/2017 UML 2 - de l'apprentissage la pratique
337d.Liensmultiples
Figure3.13:Exempledeclasseassociationavecliensmultiples.
Plusieursinstancesd'unemmeassociationnepeuventlierlesmmesobjets.Cependant,sil'on
s'intressel'exempledelafigure3.13,onvoitbienqu'ildoitpouvoiryavoirplusieurs
instancesdelaclasseassociationActionsliantunemmepersonneunemmesocit:une
mmepersonnepeutacheterdesmomentsdiffrentsdesactionsd'unemmesocit.
C'estjustementlaraisondelacontrainte{bag}qui,placesurlesterminaisonsd'associationde
laclasseassociationActions,indiquequ'ilpeutyavoirdesliensmultiplesimpliquantlesmmes
pairesd'objets.
337e.quivalences
Parfois,l'informationvhiculeparuneclasseassociationpeuttrevhiculesansperted'une
autremanire(cf.figure3.14et3.15).
Figure3.14:Deuxmodlisationsmodlisantlammeinformation.
Figure3.15:Deuxmodlisationsmodlisantlammeinformation.
337f.Classeassociation,associationnaireouassociationqualifie?
Iln'estsouventpassimpletrancherentrel'utilisationd'uneclasseassociation,d'uneassociation
naireouencored'uneassociationqualifie.Lorsquel'onutilisel'undecestroistypes
d'association,ilpeuttreutileouinstructifdesedemandersil'undesdeuxautrestypesne
seraitpaspluspertinent.Danstouslescas,ilfautgarderl'espritqu'uneclasseassociationest
d'abordetavanttoutuneassociationetque,dansuneclasseassociation,laclasseest
indissociabledel'association.
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 13/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.16:Pourcouvrirlecasdescomptesjoints,ilfaututiliserlemodlede
droite.
Ainsi,lecasd'uncomptejointnepeuttrereprsentcorrectementparlediagrammede
gauchedansfigure3.16:mieuxvaututiliseruneassociationqualifie(diagrammededroite
danslafigure).Ceproblmeetnouveauabordetillustrsection3.5.2Reprsentation.
Figure3.17:Siuncoursdoitpouvoirexisterindpendammentd'unlienentreun
enseignantetungroupe,ilfaututiliserlemodlededroite.
Danslediagrammedegauchedelafigure3.17,uncoursnepeutexisterques'ilexisteunlien
entreunobjetEnseignantetunobjetGroupe.Quandlelienestrompu(effac),lecoursl'est
galement.Siuncoursdoitpouvoirexisterindpendammentdel'existenced'unlien(onn'apas
encoretrouvd'enseignantpourcecours,lecoursn'estpasenseigncetteanne,maislesera
probablementl'anneprochaine)ilfautopterpouruneassociationternaire(modlededroite
dansfigure3.17).
Figure3.18:SiunmmecoursdoitconcernerplusieurscouplesEnseignant/
tudiant,ilnefautpasutiliseruneclasseassociation,maisuneassociationternaire
commesurlemodlededroite.
Lecasdefigureestencorepiresil'onremplaceGroupepartudiant(cf.modlegauchesurla
figure3.18).Eneffet,lecasgnraldcritparcemodlenecorrespondpasdutoutau
diagrammed'objet(cf.section3.53.5Diagrammed'objets(objectdiagram))situaucentre.
Nousreviendronssurceproblmedanslasection3.5.2Reprsentationavecl'illustration3.24.
Danscettesituation,ilfautopterpouruneassociationternairecommesurlemodlededroite.
338.Agrgationetcomposition
338a.Agrgation
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 14/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.19:Exemplederelationd'agrgationetdecomposition.
Uneassociationsimpleentredeuxclassesreprsenteunerelationstructurelleentrepairs,c'est
direentredeuxclassesdemmeniveauconceptuel:aucunedesdeuxn'estplusimportante
quel'autre.Lorsquel'onsouhaitemodliserunerelationtout/partieouneclasseconstitueun
lmentplusgrand(tout)composd'lmentspluspetits(partie),ilfaututiliserune
agrgation.
Uneagrgationestuneassociationquireprsenteunerelationd'inclusionstructurelleou
comportementaled'unlmentdansunensemble.Graphiquement,onajouteunlosangevide
( )ductdel'agrgat(cf.figure3.19).Contrairementuneassociationsimple,l'agrgation
esttransitive.
Lasignificationdecetteformesimpled'agrgationestuniquementconceptuelle.Ellene
contraintpaslanavigabilitoulesmultiplicitsdel'association.Ellen'entranepasnonplusde
contraintesurladuredeviedespartiesparrapportautout.
338b.Composition
Lacomposition,galementappeleagrgationcomposite,dcritunecontenancestructurelle
entreinstances.Ainsi,ladestructiondel'objetcompositeimpliqueladestructiondeses
composants.Uneinstancedelapartieappartienttoujoursauplusuneinstancedel'lment
composite:lamultiplicitductcompositenedoitpastresuprieure1(i.e.1ou0..1).
Graphiquement,onajouteunlosangeplein()ductdel'agrgat(cf.figure3.19).
Lesnotionsd'agrgationetsurtoutdecompositionposentdenombreuxproblmesen
modlisationetsontsouventlesujetdequerellesd'expertsetsourcesdeconfusions.Cequedit
lanormeUMLSuperstructureversion2.1.1reflted'ailleurstrsbienleflouquientoureces
notions:
Precisesemanticsofsharedaggregationvariesbyapplicationareaandmodeler.Theorderand
wayinwhichpartinstancesarecreatedisnotdefined.
339.GnralisationetHritage
Figure3.20:Partiedurgneanimaldcritavecl'hritagemultiple.
Lagnralisationdcritunerelationentreuneclassegnrale(classedebaseouclasseparent)
etuneclassespcialise(sousclasse).Laclassespcialiseestintgralementcohrenteavecla
classedebase,maiscomportedesinformationssupplmentaires(attributs,oprations,
associations).Unobjetdelaclassespcialisepeuttreutilispartoutounobjetdelaclasse
debaseestautoris.
DanslelangageUML,ainsiquedanslaplupartdeslangagesobjet,cetterelationde
gnralisationsetraduitparleconceptd'hritage.Onparlegalementderelationd'hritage.
Ainsi,l'hritagepermetlaclassificationdesobjets(cf.figure3.20).
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 15/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Lesymboleutilispourlarelationd'hritageoudegnralisationestuneflcheavecuntrait
pleindontlapointeestuntrianglefermdsignantlecasleplusgnral(cf.figure3.20).
Lespropritsprincipalesdel'hritagesont:
laclasseenfantpossdetouteslescaractristiquesdesesclassesparents,maisellene
peutaccderauxcaractristiquesprivesdecettedernire
uneclasseenfantpeutredfinir(mmesignature)uneouplusieursmthodesdelaclasse
parent.Saufindicationcontraire,unobjetutiliselesoprationslesplusspcialisesdans
lahirarchiedesclasses
touteslesassociationsdelaclasseparents'appliquentauxclassesdrives
uneinstanced'uneclassepeuttreutilisepartoutouneinstancedesaclasseparent
estattendue.Parexemple,ensebasantsurlediagrammedelafigure3.20,toute
oprationacceptantunobjetd'uneclasseAnimaldoitaccepterunobjetdelaclasseChat
uneclassepeutavoirplusieursparents,onparlealorsd'hritagemultiple(cf.laclasse
Ornithorynquedelafigure3.20).LelangageC++estundeslangagesobjetpermettant
sonimplmentationeffective,lelangageJavanelepermetpas.
EnUML,larelationd'hritagen'estpaspropreauxclasses.Elles'appliqued'autreslments
dulangagecommelespaquetages,lesacteurs(cf.section2.3.3Relationsentreacteurs)oules
casd'utilisation(cf.section2.3.2Relationsentrecasd'utilisation).
3310.Dpendance
Figure3.21:Exemplederelationdedpendance.
Unedpendanceestunerelationunidirectionnelleexprimantunedpendancesmantiqueentre
deslmentsdumodle.Elleestreprsenteparuntraitdiscontinuorient(cf.figure3.21).
Elleindiquequelamodificationdelaciblepeutimpliquerunemodificationdelasource.La
dpendanceestsouventstrotypepourmieuxexpliciterleliensmantiqueentreleslments
dumodle(cf.figure3.21ou3.25).
Onutilisesouventunedpendancequanduneclasseenutiliseuneautrecommeargumentdans
lasignatured'uneopration.Parexemple,lediagrammedelafigure3.21montrequelaclasse
ConfrontationutiliselaclasseStratgie,carlaclasseConfrontationpossdeunemthode
confronterdontdeuxparamtressontdutypeStratgie.SilaclasseStratgie,notammentson
interface,change,alorsdesmodificationsdevrontgalementtreapporteslaclasse
Confrontation.
34.3.4Interfaces
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 16/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.22:Exempledediagrammemettantenuvreuneinterface.
Nousavonsdjabordlanotiond'interfacedanslessections1.3.4Conceptsimportantsde
l'approcheobjetet3.2.4Encapsulation,visibilit,interface.Eneffet,lesclassespermettentde
dfinirenmmetempsunobjetetsoninterface.Leclasseur,quenousdcrivonsdanscette
section,nepermetdedfinirquedeslmentsd'interface.Ilpeuts'agirdel'interfacecomplte
d'unobjet,ousimplementd'unepartied'interfacequiseracommuneplusieursobjets.
Lerledececlasseur,strotyp<<interface>>,estderegrouperunensembledeproprits
etd'oprationsassurantunservicecohrent.L'objectifestdediminuerlecouplageentredeux
classeurs.Lanotiond'interfaceenUMLesttrsprochedelanotiond'interfaceenJava.
Uneinterfaceestreprsentecommeuneclasseexceptl'absencedumotclefabstract(car
l'interfaceettoutessesmthodessont,pardfinition,abstraites)etl'ajoutdustrotype
<<interface>>(cf.figure3.22).
Uneinterfacedoittreraliseparaumoinsuneclasseetpeutl'treparplusieurs.
Graphiquement,celaestreprsentparuntraitdiscontinuterminparuneflchetriangulaireet
lestrotyperealize.Uneclassepeuttrsbienraliserplusieursinterfaces.Uneclasse
(classeclientedel'interface)peutdpendred'uneinterface(interfacerequise).Onreprsente
celaparunerelationdedpendanceetlestrotypeuse.
Attentionauxproblmesdeconflitssiuneclassedpendd'uneinterfaceraliseparplusieurs
autresclasses.
Lanotiond'interfaceestassezprochedelanotiondeclasseabstraiteavecunecapacitde
dcouplageplusgrand.EnC++(leC++neconnatpaslanotiond'interface),lanotion
d'interfaceestgnralementimplmenteparuneclasseabstraite.
35.3.5Diagrammed'objets(objectdiagram)
351.Prsentation
Undiagrammed'objetsreprsentedesobjets(i.e.instancesdeclasses)etleursliens(i.e.
instancesderelations)pourdonnerunevuefigedel'tatd'unsystmeuninstantdonn.Un
diagrammed'objetspeuttreutilispour:
illustrerlemodledeclassesenmontrantunexemplequiexpliquelemodle
prcisercertainsaspectsdusystmeenmettantenvidencedesdtailsimperceptibles
danslediagrammedeclasses
exprimeruneexceptionenmodlisantdescasparticuliersoudesconnaissancesnon
gnralisablesquinesontpasmodlissdansundiagrammedeclasse
prendreuneimage(snapshot)d'unsystmeunmomentdonn.
Lediagrammedeclassesmodliselesrglesetlediagrammed'objetsmodlisedesfaits.
Parexemple,lediagrammedeclassesdelafigure3.23montrequ'uneentrepriseemploieau
moinsdeuxpersonnesetqu'unepersonnetravailledansauplusdeuxentreprises.Le
diagrammed'objetsmodliseluiuneentrepriseparticulire(PERTNE)quiemploietrois
personnes.
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 17/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Undiagrammed'objetsnemontrepasl'volutiondusystmedansletemps.Pourreprsenter
uneinteraction,ilfaututiliserundiagrammedecommunication(cf.section7.2Diagrammede
communication(Communicationdiagram))oudesquence(cf.section7.3Diagrammede
squence(Sequencediagram)).
352.Reprsentation
Figure3.23:Exempledediagrammedeclassesetdediagrammed'objetsassoci.
Graphiquement,unobjetsereprsentecommeuneclasse.Cependant,lecompartimentdes
oprationsn'estpasutile.Deplus,lenomdelaclassedontl'objetestuneinstanceestprcd
d'un<<:>>etestsoulign.Pourdiffrencierlesobjetsd'unemmeclasse,leuridentifiant
peuttreajoutdevantlenomdelaclasse.Enfinlesattributsreoiventdesvaleurs.Quand
certainesvaleursd'attributd'unobjetnesontpasrenseignes,onditquel'objetest
partiellementdfini.
Dansundiagrammed'objets,lesrelationsdudiagrammedeclassesdeviennentdesliens.La
relationdegnralisationnepossdepasd'instance,ellen'estdoncjamaisreprsentedansun
diagrammed'objets.Graphiquement,unliensereprsentecommeunerelation,mais,s'ilyaun
nom,ilestsoulign.Naturellement,onnereprsentepaslesmultiplicits.
Figure3.24:Lediagrammed'objetsdedroite,illustrantlecasdefigured'un
comptejoint,n'estpasuneinstancenormaledudiagrammedeclassedegauche,
maispeutprciserunesituationexceptionnelle.
LanormeUML2.1.1prcisequ'uneinstancedeclasseassociationnepeuttreassociequ'
uneinstancedechacunedesclassesassocies(11)cequiinterditd'instancierlediagrammede
classegauchedanslafigure3.24parlediagrammed'objetdroitedanscettemmefigure.
Cependant,undiagrammed'objetpeuttreutilispourexprimeruneexception.Surlafigure,
lediagrammed'objetsdroitepeuttrelgitimes'ilvientprciserunesituationexceptionnelle
nonpriseencompteparlediagrammedeclassereprsentgauche.Nanmoins,lecasdes
comptesjointsn'tantpassiexceptionnel,mieuxvautrevoirlamodlisationcommeprconis
parlafigure3.16.
353.Relationdedpendanced'instanciation
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 18/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Figure3.25:Dpendanced'instanciationentrelesclasseursetleursinstances.
Larelationdedpendanced'instanciation(strotype<<instanceof>>)dcritlarelation
entreunclasseuretsesinstances.Ellerelie,enparticulier,lesliensauxassociationsetles
objetsauxclasses.
36.laborationetimplmentationd'undiagrammedeclasses
361.laborationd'undiagrammedeclasses
Unedmarchecourammentutilisepourbtirundiagrammedeclassesconsiste:
Trouverlesclassesdudomainetudi.
Cettetapeempiriquesefaitgnralementencollaborationavecunexpertdudomaine.
Lesclassescorrespondentgnralementdesconceptsoudessubstantifsdudomaine
Trouverlesassociationsentreclasses.
Lesassociationscorrespondentsouventdesverbes,oudesconstructionsverbales,
mettantenrelationplusieursclasses,comme<<estcomposde>>,<<pilote>>,
<<travaillepour>>.
Attention,mfiezvousdecertainsattributsquisontenralitdesrelationsentreclasses.
Trouverlesattributsdesclasses.
Lesattributscorrespondentsouventdessubstantifs,oudesgroupesnominaux,telsque
<<lamassed'unevoiture>>ou<<lemontantd'unetransaction>>.Lesadjectifsetles
valeurscorrespondentsouventdesvaleursd'attributs.Vouspouvezajouterdesattributs
touteslestapesducycledevied'unprojet(implmentationcomprise).N'esprezpas
trouvertouslesattributsdslaconstructiondudiagrammedeclasses
Organiseretsimplifierlemodle.
Enliminantlesclassesredondantesetenutilisantl'hritage
Itreretraffinerlemodle.
Unmodleestrarementcorrectdssapremireconstruction.Lamodlisationobjetest
unprocessusnonpaslinaire,maisitratif.
362.ImplmentationenJava
362a.Classe
Parfois,lagnrationautomatiquedecodeproduit,pourchaqueclasse,unconstructeuretune
mthodefinalizecommecidessous.Rappelonsquecettemthodeestinvoqueparleramasse
mietteslorsqueceluiciconstatequel'objetn'estplusrfrenc.Pourdesraisonsde
simplification,nousneferonsplusfigurercesoprationsdanslessectionssuivantes.
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 19/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Slectionnez
public class A {
public A() {
...
}
protected void finalize() throws Throwable {
super.finalize();
...
}
}
362b.Classeavecattributsetoprations
Slectionnez
public class A {
public String a1;
package String a2;
protected String a3;
private String a4;
public void op1() {
...
}
public void op2() {
...
}
}
362c.Classeabstraite
Slectionnez
public abstract class A {
...
}
362d.Interface
Slectionnez
public interface A {
...
}
362e.Hritagesimple
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 20/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Slectionnez
public class A {
...
}
362f.Ralisationd'uneinterfaceparuneclasse
Slectionnez
public interface Ia {
...
}
362g.Associationbidirectionnelle1vers1
Slectionnez
public class A {
private B rb;
public void addB( B b ) {
if( b != null ){
if ( b.getA() != null ) { // si b est dj connect un autre A
b.getA().setB(null); // cet autre A doit se dconnecter
}
this.setB( b );
b.setA( this );
}
}
public B getB() { return( rb ); }
public void setB( B b ) { this.rb=b; }
}
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 21/28
7/27/2017 UML 2 - de l'apprentissage la pratique
public class B {
private A ra;
public void addA( A a ) {
if( a != null ) {
if (a.getB() != null) { // si a est dj connect un autre B
a.getB().setA( null ); // cet autre B doit se dconnecter
}
this.setA( a );
a.setB( this );
}
}
public void setA(A a){ this.ra=a; }
public A getA(){ return(ra); }
}
362h.Associationunidirectionnelle1vers1
Slectionnez
public class A {
private B rb;
public void addB( B b ) {
if( b != null ) {
this.rb=b;
}
}
}
public class B {
... // La classe B ne connat pas l'existence de la classe A
}
362i.Associationbidirectionnelle1versN
Slectionnez
public class A {
private ArrayList <B> rb;
public A() { rb = new ArrayList<B>(); }
public ArrayList <B> getArray() {return(rb);}
public void remove(B b){rb.remove(b);}
public void addB(B b){
if( !rb.contains(b) ){
if (b.getA()!=null) b.getA().remove(b);
b.setA(this);
rb.add(b);
}
}
}
public class B {
private A ra;
public B() {}
public A getA() { return (ra); }
public void setA(A a){ this.ra=a; }
public void addA(A a){
if( a != null ) {
if( !a.getArray().contains(this)) {
if (ra != null) ra.remove(this);
this.setA(a);
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 22/28
7/27/2017 UML 2 - de l'apprentissage la pratique
ra.getArray().add(this);
}
}
}
}
362j.Associationunidirectionnelle1versplusieurs
Slectionnez
public class A {
private ArrayList <B> rb;
public A() { rb = new ArrayList<B>(); }
public void addB(B b){
if( !rb.contains( b ) ) {
rb.add(b);
}
}
}
public class B {
... // B ne connat pas l'existence de A
}
362k.Association1versN
Danscecas,ilfaututiliseruntableaupluttqu'unvecteur.Ladimensiondutableautant
donneparlacardinalitdelaterminaisond'association.
362l.Agrgations
Lesagrgationss'implmententcommelesassociations.
362m.Composition
Unecompositionpeuts'implmentercommeuneassociationunidirectionnelle.
363.ImplmentationenSQL
363a.Introduction
Ilestpossibledetraduireundiagrammedeclasseenmodlerelationnel.Bienentendu,les
mthodesdesclassesnesontpastraduites.Aujourd'hui,lorsdelaconceptiondebasede
donnes,ildevientdeplusenpluscourantd'utiliserlamodlisationUMLpluttquele
traditionnelmodleentitsassociations.
Cependant,moinsd'avoirrespectunemthodologieadapte,lacorrespondanceentrele
modleobjetetlemodlerelationneln'estpasunetchefacile.Eneffet,ellenepeutque
rarementtrecompltepuisquel'expressivitd'undiagrammedeclassesestbienplusgrande
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 23/28
7/27/2017 UML 2 - de l'apprentissage la pratique
quecelled'unschmarelationnel.Parexemple,commentreprsenterdansunschma
relationneldesnotionscommelanavigabilitoulacomposition?Toutefois,denombreuxAGL
(AtelierdeGnieLogiciel)comportentmaintenantdesfonctionnalitsdetraductionenSQLqui
peuventaiderledveloppeurdanscettetche.
Danslasection9.3.1Analysedudomaine:modledudomaine,nousprsentonsuntypede
diagrammedeclasses,appelmodledudomaine,toutfaitadaptuneimplmentationsous
formedebasededonnes.
363b.Classeavecattributs
Chaqueclassedevientunerelation.Lesattributsdelaclassedeviennentdesattributsdela
relation.Silaclassepossdeunidentifiant,ildevientlaclprimairedelarelation,sinon,ilfaut
ajouteruneclprimairearbitraire.
Slectionnez
create table relation_A (
num_relation_A integer primary key,
att1 text,
att2 integer);
363c.Association1vers1
Pourreprsenteruneassociation1vers1entredeuxrelations,laclprimairedel'unedes
relationsdoitfigurercommecltrangredansl'autrerelation.
Slectionnez
create table relation_A (
id_A integer primary key,
attA1 text,
attA2 integer);
363d.Association1versplusieurs
Pourreprsenteruneassociation1versplusieurs,onprocdecommepouruneassociation1
vers1,exceptquec'estforcmentlarelationductplusieursquireoitcommecltrangre
laclprimairedelarelationduct1.
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 24/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Slectionnez
create table relation_A (
id_A integer primary key,
num_B integer references relation_B,
attA1 text,
attA2 integer);
363e.Associationplusieursversplusieurs
Pourreprsenteruneassociationdutypeplusieursversplusieurs,ilfautintroduireunenouvelle
relationdontlesattributssontlesclsprimairesdesrelationsenassociationetdontlacl
primaireestlaconcatnationdecesdeuxattributs.
Slectionnez
create table relation_A (
id_A integer primary key,
attA1 text,
attA2 integer);
363f.Classeassociationplusieursversplusieurs
Lecasestprochedeceluid'uneassociationplusieursversplusieurs,lesattributsdelaclasse
associationtantajoutslatroisimerelationquireprsente,cettefoisci,laclasse
associationellemme.
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 25/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Slectionnez
create table relation_A (
id_A integer primary key,
attA1 text,
attA2 integer);
363g.Hritage
Lesrelationscorrespondantauxsousclassesontcommeclstrangreetprimairelacldela
relationcorrespondantlaclasseparente.Unattributtypeestajoutdanslarelation
correspondantlaclasseparente.Cetattributpermetdesavoirsilesinformationsd'untuplede
larelationcorrespondantlaclasseparentepeuventtrecompltesparuntupledel'unedes
relationscorrespondantunesousclasse,et,lecaschant,dequellerelationils'agit.Ainsi,
danscettesolution,unobjetpeutavoirsesattributsrpartisdansplusieursrelations.Ilfaut
doncoprerdesjointurespourreconstituerunobjet.L'attributtypedelarelationcorrespondant
laclasseparentedoitindiquerquellesjointuresfaire.
Slectionnez
create table relation_C (
id_C integer primary key,
attC1 text,
attC2 integer,
type text);
Uneoptioncettereprsentationestdenecrerqu'uneseuletablepararborescence
d'hritage.Cettetabledoitcontenirtouslesattributsdetouteslesclassesdel'arborescence
plusl'attributtypedontnousavonsparlcidessus.L'inconvnientdecettesolutionestqu'elle
impliquequelestuplescontiennentdenombreusesvaleursnulles.
Slectionnez
create table relation_ABC (
id_C integer primary key,
attC1 text, attC2 integer,
attA1 text, attA2 integer,
attB1 text, attB2 integer,
type text);
(7)
Unepartitiond'unensembleestunensembledepartiesnonvidesdecetensemble,deuxdeux
disjointesetdontlarunionestgalel'ensemble.
(8)
Ilfauticiaborderunpetitproblmedeterminologieautourdumotproprit.Eneffet,dansla
littrature,lemotpropritestparfoisutilispourdsignertouteslescaractristiquesd'une
classe(i.e.lesattributscommelesmthodes).Danscecas,lesattributsetlesterminaisons
d'associationsontrassemblssousletermedepropritsstructurelles,lequalificatifstructurelle
prenanticitoutesonimportance.D'unautrect,lemotpropritestsouventutilisdans
l'acceptiondutermeanglaisproperty(danslanormeUMLSuperstructureversion2.1.1),qui,
lui,nedsignequelesattributsetlesterminaisonsd'association,c'estdirelesproprits
structurelles.Pourengloberlesmthodes,ilfautalorsutiliserletermeplusgnriquede
caractristiques,quiprendainsilerledetraductiondutermeanglaisfeaturedanslanorme.
Dansleprsentcours,jem'efforcedemeconformercettedeuximesolutionopropritet
propritstructurelledsignentfinalementlammechose.
(9)
Demaniregnrale,toutebotenonstrotypedansundiagrammedeclassesest
implicitementuneclasse.Ainsi,lestrotypeclassestlestrotypepardfaut.
(10)
Uneterminaisond'associationsestuneextrmitdel'association.Uneassociationbinaireen
possdedeux,uneassociationnaireenpossden.
(11)
UMLSuperstructureSpecification,v2.1.1p.49:<<Itshouldbenotedthatinaninstanceof
anassociationclass,thereisonlyoneinstanceoftheassociatedclassifiersateachend,i.e.,
fromtheinstancepointofview,themultiplicityoftheassociationsendsare1'>>
Lessourcesprsentessurcettepagesontlibresdedroits
etvouspouvezlesutiliservotreconvenance.Parcontre,
lapagedeprsentationconstitueuneuvreintellectuelle
protgeparlesdroitsd'auteur.Copyright2013Laurent
AUDIBERT.Aucunereproduction,mmepartielle,nepeut
trefaitedecesiteetdel'ensembledesoncontenu:
textes,documents,images,etc.sansl'autorisation
expressedel'auteur.Sinonvousencourezselonlaloi
jusqu'troisansdeprisonetjusqu'300000de
dommagesetintrts.
ContacterleresponsabledelarubriqueUML
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 27/28
7/27/2017 UML 2 - de l'apprentissage la pratique
Nouscontacter Participez Hbergement Informationslgales
Copyright20002017www.developpez.com
http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 28/28