Vous êtes sur la page 1sur 28

7/27/2017 UML 2 - de l'apprentissage la pratique

Forums Tutoriels Magazine FAQs Blogs Chat Newsletter Rechercher


tudes Emploi Club Contacts

Accueil ALM Java .NET Dv.Web EDI Programmation SGBD Office Solutionsd'entreprise

Applications Mobiles Systmes ALM Merise UML

ACCUEILUML FORUMUML F.A.QUML TUTORIELSUML LIVRESUML OUTILSUML

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 {
...
}

public class B extends A {


...
}

362f.Ralisationd'uneinterfaceparuneclasse


Slectionnez
public interface Ia {
...
}

public class A implements 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);

create table relation_B (


id_B integer primary key,
num_A integer references relation_A,
attB1 text,
attB2 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);

create table relation_B (


id_B integer primary key,
attB1 text,
attB2 integer);

363e.Associationplusieursversplusieurs
Pourreprsenteruneassociationdutypeplusieursversplusieurs,ilfautintroduireunenouvelle
relationdontlesattributssontlesclsprimairesdesrelationsenassociationetdontlacl
primaireestlaconcatnationdecesdeuxattributs.


Slectionnez
create table relation_A (
id_A integer primary key,
attA1 text,
attA2 integer);

create table relation_B (


id_B integer primary key,
attB1 text,
attB2 integer);

create table relation_A_B (


num_A integer references relation_A,
num_B integer references relation_B,
primary key (num_A, num_B));

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);

create table relation_B (


id_B integer primary key,
attB1 text,
attB2 integer);

create table relation_C (


num_A integer references relation_A,
num_B integer references relation_B,
attC1 text,
attC2 integer,
primary key (num_A, num_B));

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);

create table relation_A (


http://laurent-audibert.developpez.com/Cours-UML/?page=diagramme-classes 26/28
7/27/2017 UML 2 - de l'apprentissage la pratique
id_A references relation_C,
attA1 text,
attA2 integer,
primary key (id_A));

create table relation_B (


id_B references relation_C,
attB1 text,
attB2 integer,
primary key (id_B));

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