Basics

About
Äˆi tiu Ä‰apitro volas doni rapidan resumon de la fundamentoj de . Memoru ke Ä‰i tiu ne estas ampleksa seminario pri UML sed tamen konciza enkonduko al UML kiu povas esti legata kiel UML kompendio. Se vi Åatas lerni pli pri la UniÄinta Modelad-Lingvo, aÅ­ Äenerale pri softvar-analizo kaj -desegno, konsultu unu el la multaj libroj haveblaj pri la temo. Ekzistas ankaÅ­ multaj seminarioj en la Interreto kiujn vi povas preni kiel deirpunkto.
La UniÄinta Modelad-Lingvo () estas skema lingvo aÅ­ notacio por specifi, bildigi kaj dokumenti modelojn de objekt-orientitaj softvar-sistemoj. ne estas disvolviÄa metodo, tio signifas ke Äi ne diktas kion fari unue kaj kion poste, aÅ­ kiel desegni vian sistemon, sed Äi helpas vin bildigi vian desegnon kaj komuniki Äin al aliaj. estas regata far la Objekt-Mastrumada Grupo (OMG) kaj estas la industria normo por grafike priskribi softvaron.
estas konceptita por objekt-orientata softvar-desegno kaj nur limigite alpikiÄas al aliaj programadaj paradigmoj.
konsistas el multaj model-elementoj kiuj reprezentas la diversajn partojn de softvarsistemo. La elementoj estas uzataj por krei diagramojn kiuj reprezentas certan parton aÅ­ vidpunkton de la sistemo. La sekvontaj specoj de diagramoj estas subtenataj per :
Uzkazdiagramoj montras aktorojn (homojn aÅ­ aliajn uzantojn de la sistemo), uzokazojn (la scenaroj kiam aktoroj uzas la sistemon), kaj iliajn interrilatojn
Klasdiagramoj montras klasojn kaj ties interrilatojn
Sinsekvodiagramoj montras objektojn kaj sinsekvon de metod-alvokoj kiujn ili faras Ä‰e aliaj objektoj.
Kunlabordiagramoj montras objektojn kaj ties interrilaton, emfazante la objektojn kiuj partoprenas en la interÅanÄo de mesaÄoj
Statodiagramoj montras statojn, statoÅanÄojn kaj eventojn en objekto aÅ­ en parto de la sistemo
Aktivecdiagramoj montras aktivecojn kaj la ÅanÄoj de unu aktiveco al alia kune kun la eventoj okazantaj en iu parto de la sistemo
Komponentaj Diagramoj montras la altnivelajn programkomponantojn (kiel ekz. KParts aÅ­ Java Beans).
Sterndiagramoj montras la instancojn de la komponantoj kaj iliajn interrilatojn.

Elements

Uzkazdiagramo
Uzokazaj diagramoj priskribas la rilatojn kaj dependojn inter grupo da Uzkazoj kaj la Aktoroj partoprenantaj en la procedo.
Gravas rimarki ke uzkazdiagramoj ne adekvatas por reprezenti la desegnon, kaj ne povas priskribi la internon de sistemo. Uzkazoskemoj celas faciligi la komunikadon kun la estontaj uzantoj de la sistemo, kaj kun la kliento, kaj estas specife taÅ­gaj por determini la postulatajn trajtojn kiujn la sistemo havu. Uzkazdiagramoj indikas kion la sistemo faru sed ne kiel tio estu atingata.
An example Use Case diagram.
montranta uzkazdiagramon
montranta uzkazdiagramon

Uzokazo
Uzokazo priskribas — de la vidpunkto de la aktoroj — grupon da aktivecoj en sistemo kiu produktas konkretan, palpeblan rezulton.
Uzkazoj estas priskriboj de la tipaj interagadoj inter la uzantoj de sistemo kaj la sistemo mem. Ili reprezentas la eksteran interfacon de la sistemo kaj detaligas certforme la postulojn de tio, kion la sistemo plenumu (ja memoru: nur kion, ne kiel).
Traktante uzkazojn, gravas memori kelkajn simplajn regulojn:
Äˆiu uzkazo rilatas al almenaÅ­ unu aktoro
Äˆiu uzkazo havas iniciatinton (tio estas aktoro)
Äˆiu uzkazo kaÅ­zas rilatan rezulton (rezulton kun komerca valoro)
Uzkazoj ankaÅ­ povas havi interrilatojn kun aliaj uzkazoj. La tri plej tipaj specoj de interrilatoj inter uzkazoj estas:
<<include>> kiu specifigas, ke uzkazo okazas ene de alia uzkazo
<<extends>> kiu specifigas ke en iuj situacioj, aÅ­ je iu punkto (nomita etendadpunkto) uzkazo estos etendita per alia.
Generalization specifigas uzkazo heredas la karakterizaÄµoj de la Super-uzkazo kaj povas superregi iujn aÅ­ aldoni novajn en simila maniero kiel la heredado inter klasoj.

Aktoro
Aktoro estas ekstera ento (ekster la sistemo) kiu, ke interagas kun la sistemo per partopreno (kaj ofte iniciato) de uzokazo. Aktoroj povas esti en vera vivo homoj (ekzemple uzantoj de la sistemo), aliaj komputeraj sistemoj aÅ­ eksteraj eventoj.
Akrotoj ne reprezentas the fizikajn homojn aÅ­ sistemojn, sed ilian rolon. Tio signifas, ke kiam persono interrilatas kun la sistemo diversmaniere (supozanta malsamajn rolojn) li estos reprezentata per kelkaj aktoroj. Ekzemple persono kiu asistas klientojn per la telefono kaj peras mendojn de la kliento en la sistemon estus reprezentata per aktoro Subtena Personaro kaj aktoro Vendisto.

Uzkazaj Priskriboj
Uzkazaj priskriboj estas tekstaj rakontoj de la uzokazo. Ili kutime estas en formo de noto aÅ­ dokumento kiu estas iel ligita al la uzkazo, kaj klarigas la procedojn aÅ­ agadojn kiuj okazas en la uzkazo.

Klasdiagramo
Klasdiagramoj montras la diversajn klasojn kiuj konsistigas sistemon kaj montras kiel ili rilatas unu al la alia. Klasdiagramoj estas laÅ­dire senmovaj skemoj Ä‰ar ili montras la klasojn, kune kun iliaj metodoj kaj atributoj kaj ankaÅ­ la senmovaj interrilatoj inter ili: kiu klasoj scias pri aliaj klasoj aÅ­ kiuj klasoj apartenas al alia klaso, sed ne montras la metod-alvokojn inter ili.
An example of a Class Diagram
montranta klasdiagramon
montranta klasdiagramon

Klaso
Klaso difinas la atributojn kaj la metodojn de iu aro da objektoj. Äˆiuj objektoj de Ä‰i tiu klaso (instancoj de la klaso) havas la saman konduton kaj kundividas la saman aron da atributoj (Ä‰iu objekto havas sian propran aron). La termino Tipo estas foje uzata anstataÅ­ Klaso, sed gravas mencii, ke Ä‰i tiuj du ne estas la sama, kaj Tipo estas pli Äenerala termino.
En UML, Klasoj estas reprezentataj per rektanguloj, kun la nomo de la klaso, kaj ankaÅ­ povas montri la atributojn kaj operaciojn de la klaso en du aliaj kupeoj ene de la rektangulo.
A Class in
Vida reprezentado de Klaso en
Vida reprezentado de Klaso en

Atributoj
En , atributoj estas montrataj kun almenaÅ­ ilia nomo, kaj ankaÅ­ povas montri ilian tipon, komencan valoron kaj aliajn trajtojn. Atributoj ankaÅ­ povas esti montrataj kun ilia videbleco:
+ indikas publikan atributon
# indikas protektatan atributon
- indikas privatan atributon

Operacioj
Operacioj (metodoj) estas ankaÅ­ montrataj kun almenaÅ­ ilia nomo, kaj ankaÅ­ povas montri siajn parametrojn kaj rezultotipon. Same kiel Atributo, Operacio povas montri sian videblecon:
+ indikas publikan operacion
# indikas protektatan operacion
- indikas privatan operacion

Åœablonoj
Klasoj povas havi Åablonojn, valoro kiu estas uzata por nedifinita klaso aÅ­ tipo. La Åablontipo estas specifata kiam klaso estas iniciatita (t.s. objekto estas kreata). Åœablonoj ekzistas en moderna C++ kaj estos enkondukitaj en Java 1.5 kie ili estos nomataj Generics.

Klas-Asocioj
Klasoj povas rilati (asociiÄi unu kun la alia) diversmaniere:

Äœeneraligo
Heredado estas unu el la fundamentaj konceptoj de Objekt-Orientita Programado, en kiu klaso akiras Ä‰iujn atributojn kaj operaciojn de la klaso de kiu Äi heredas, kaj povas superregi/modifi iujn, kaj ankaÅ­ povas aldoni pliajn atributojn kaj operaciojn por si mem.
En , Äœeneraligo asocio inter du klasoj metas ilin en hierarkio reprezentanta la koncepton de heredado de devena klaso ekde iu baza klaso. En , Äeneraligoj estas reprezentataj per linio konektanta la du klasojn, kun sago Ä‰e la flanko de la bazo klaso.
Generalisation
Vida reprezentado de Äeneraligo en
Vida reprezentado de Äeneraligo en

Asocioj
Asocio reprezentas interrilaton inter klasoj, kaj esprimas la semantikon kajn strukturon por multaj specoj de konektoj inter objektoj.
Asocioj estas la mekanismo kiu permesas al objektoj la komunikadon inter si. Äœi priskribas la konekton inter malsamaj klasoj (la konekto inter la konkretaj objektoj estas nomata objekt-konekto, aÅ­ ligo.
Asocioj povas havi rolon kiu specifas la intencon de la asocio kaj povas esti unu- aÅ­ ambaÅ­direkta (indiko Ä‰u la du objektoj partoprenantaj la interrilaton povas reciproke sendi mesaÄojn, aÅ­ Ä‰u nur unu el ili konas la alian). Äˆiu finaÄµo de la asocio ankaÅ­ havas valoron de multeco, kiu indikas kiom da objektoj cis la asocio povas rilati al unu objekto sur la alia flanko.
En , asocioj estas reprezentataj kiel linioj konektantaj la klasojn partoprenantaj la interrilaton, kaj ankaÅ­ povas montri la rolon kaj la multecon de Ä‰iu el la partoprenantoj. Multeco estas indikata kiel gamo [min..maks] de nenegativaj valoroj, aÅ­ kiel stelo (*), kiu reprezentas senlimecon Ä‰e la maksimuma flanko.
Association
Vida reprezento de Asocio en
Vida reprezento de Asocio en

Agrego
Agrego estas speciala speco de asocio en kiu la du partoprenantaj klasoj ne havas egalan statuson, sed formas iun tuto-parto interrilaton. Agrego priskribas kiel la klaso alprenanta la rolon de la tuto, estas kunmetita de aliaj klasoj, kiuj alprenas la rolon de la partoj. Por Agregoj, la klaso rolanta kiel la tuto Ä‰iame havas multecon de unu.
en , Agregoj estas reprezentitaj per asocio kiu montras lozanÄon Ä‰e la flanko de la tuto.
Aggregation
Vida reprezento de Agrega rilato en
Vida reprezento de Agrega rilato en

KunmetaÄµo
KunmetaÄµo estas asocio kiu reprezentas tre fortan agregon. Äˆi tiu signifas, ke KunmetaÄµo formas tuto-parto interrilaton ankaÅ­, sed la interrilato estas tiel forta ke la partoj ne povas ekzisti solaj. Ili ekzistas nur en la tuto, kaj se la tuto estas detruata la partoj mortas ankaÅ­.
En , kunmetaÄµoj estas reprezentataj per solida lozanÄo Ä‰e la flanko de la tuto.
Composition
Vida reprezento de KunmetaÄµo en

Aliaj Klasdiagrameroj
Klasdiagramoj povas enhavi kelkajn aliajn elementojn krom klasojn.

Interfaco
Interfacoj estas abstraktaj klasoj, kio signifas ke ne eblas rekte krei instancojn de ili. Ili povas enhavi operaciojn sed neniujn atributojn. Klasoj povas heredi de interfacoj (per realiga asocio) kaj instancoj povas tiam esti farataj de Ä‰i tiuj klasoj.

Datumtipo
Datumtipoj estas bazelementoj kiuj estas tipe enkonstruitaj en programlingvo. Oftaj ekzemploj estas entjera kaj bulea tipo. Ili ne povas interrilati kun klasoj sed klasoj povas interrilati kun ili.

Nombrigtipo
Nombrigtipo (enum) estas simpla listo de valoroj. Tipa ekzemplo estas nombrigtipo por la tagoj de la semajno. La elementoj de nombrigtipo nomiÄas literaloj. Same kiel datumtipoj, ili ne povas interrilati kun klasoj sed klasoj povas interrilati kun ili.

PakaÄµo
PakaÄµo reprezentas nomspacon en programlingvo. En diagramo ili uziÄas por reprezenti partojn de sistemo kiu enhavas pli ol unu klason, eble centojn da klasoj.

Sinsekvodiagramo
Sinsekvodiagramoj montras la mesaÄ-interÅanÄon (t.e. metod-alvoko) inter kelkaj objektoj en specifa tempe limigita situacio. Objektoj estas instancoj de klasoj. Sinsekvodiagramoj metas specialan emfazon al la ordo kaj la tempoj en kiuj la mesaÄoj estas sendataj al la objektoj.
En Sinsekvodiagramoj objektoj estas reprezentataj per vertikalaj strekitaj linioj, kun la nomo de la objekto supre. La tempa akso estas ankaÅ­ vertikala, pliiÄanta malsupren, tiel, ke mesaÄoj estas sendita de unu al alia objekto en la formo de sagoj kun la operacinomo kaj eble la efektivaj parametrovaloroj.
Sequence Diagram
montranta Sinsekvodiagramon
montranta Sinsekvodiagramon
MesaÄoj povas esti aÅ­ sinkronaj, la normala speco de mesaÄvoko kie la rego estas pasata al la alvokata objekto Äis kiam tiu metodo finis ruli, aÅ­ nesinkronaj kie la kontrolo rekte repasas al la vokanta objekto. Sinkronaj mesaÄoj havas vertikalan skatolon Ä‰e la flanko de la alvokata objekto por montri la fluon de programrego.

Kunlabordiagramo
Kunlabordiagramoj montras la interagadon okazanta inter la objektoj partoprenantaj en specifa situacio. Äˆi tiu estas plimalpli la samaj informoj montritaj per Sinsekvodiagramoj sed tiuj lastaj emfazas kiel la interrilatadoj okazas tempe dum la Kunlabordiagramoj pli emfazas la rilatojn inter la objektoj kaj ilian topologion.
En kunlabordiagramo mesaÄoj senditaj de unu objekto al alia estas reprezentataj per sagoj, montrante la mesaÄnomon, parametrojn, kaj la sinsekvon de la mesaÄo. Kunlabordiagramoj speciale taÅ­gas por montri specifan programfluon aÅ­ situacion kaj estas unu el la plej bonaj skemotipoj por rapide montri aÅ­ klarigi certan procedon en la programlogiko.
Collaboration
montranta Kunlabordiagramon
montranta Kunlabordiagramon

Statodiagramo
Statodiagramoj montras la diversajn statojn de objekto dum sia vivo kaj la stimulojn kiuj kaÅ­zas ÅanÄiÄojn de Äia stato.
Statodiagramoj elmontras objektojn kiel statmaÅinojn aÅ­ finiajn aÅ­tomatojn kiuj povas esti en unu el limigita aro da statoj kaj kiuj povas ÅanÄi sian staton per unu el limigita aro da stimuloj. Ekzemple objekto de tipo NetServer povas esti en unu el la sekvantaj statoj dum sia vivo:
Preta
AÅ­skultanta
Laboranta
Haltita
kaj la eventoj kiuj povas kaÅ­zi statÅanÄojn Ä‰e la objekto estas
Objekto estas kreata
Objekto ricevas mesaÄon AÅ­skultu
Kliento petas konekton perrete
Kliento Ä‰esigas peton
La peto estas efektivigita kaj finis
Objekto ricevas mesaÄon Haltu
etc
State Diagram
montranta Statodiagramon
montranta Statodiagramon

Stato
Statoj estas la konstruelementoj de Statodiagramoj. Stato apartenas al ekzakte unu klaso kaj reprezentas resumon de la valoroj kiujn atributoj de klaso povas alpreni. Stato priskribas la internan staton de objekto de unu aparta klaso.
Notu ke ne Ä‰iu ÅanÄo en unu el la atributoj de objekto devus esti reprezentita per Stato sed sole tiuj ÅanÄoj kiuj povas grave influi la funkciadon de la objekto.
Ekzistas du specialaj specoj de Statoj: Komenco kaj Fino. Ili estas specialaj tiusence ke neniu evento povas kaÅ­zi revenon al la Komenco, samkiel neniu evento povas kaÅ­zi revenon al la Fina stato unufoje ke Äi atingiÄis.

Aktivecdiagramo
Aktivecdiagramoj priskribas la sinsekvon de agadoj en sistemo pere de Aktivecoj. Aktivecdiagramoj estas speciala formo de Statodiagramoj, kiuj nure (aÅ­ plejparte) enhavas Aktivecojn.
An example Activity Diagram.
montranta Aktivecdiagramon
montranta Aktivecdiagramon
Aktivecdiagramoj estas similaj al proceduraj fludiagramoj, kun la diferenco ke Ä‰iuj aktivecoj estas klare ligataj al objektoj.
Aktivecdiagramoj estas Ä‰iam asociitaj al klaso, operacio aÅ­ uzkazo.
Aktivecdiagramoj subtenas sinsekvajn kaj ankaÅ­ paralelajn aktivecojn. Paralela ekzekuto estas reprezentita per DisiÄ/Atend ikonoj, kaj por la aktivecoj rulantaj paralele, ne gravas la ordo en kiu ili estas efektivigataj (ili povas okazi samtempe aÅ­ unu post la alia).

Aktiveco
Aktiveco estas unu paÅo ene de procezo. Unu aktiveco estas unu stato en la sistemo kun interna agado kaj almenaÅ­ unu deironta transiro. Aktiveco ankaÅ­ povas havi pli ol unu deirontan transiron se tiuj transiroj havas malsamajn kondiÄ‰ojn.
Aktivecoj povas formi hierarkiojn, tio signifas, ke aktiveco povas konsisti el kelkaj detalaktivecoj, en kiu kazo la envenantaj kaj deirantaj transiroj harmoniu kun la envenantaj kaj deirantaj transiroj de la detalskemo.

Helpelementoj
Estas kelkaj elementoj en kiuj havas neniun veran semantikan valoron por la modelo, sed helpas klarigi partojn de la diagramo. Äˆi tiuj elementoj estas
Tekstlinioj
Tekstnotoj kaj ties ankroj
Skatoloj
Tekstlinioj estas utilaj por aldoni mallongan klarigtekston al diagramo. Tio estas libera teksto kaj ne havas signifon al la modelo mem.
Notoj estas utilaj por almeti pli detalajn informojn pri objekto aÅ­ specifa situacio. Ili havas la grandan avantaÄon ke notoj povas esti ankrataj al elementoj por montri ke la noto apartenas al specifa objekto aÅ­ situacio.
Skatoloj estas libere lokataj rektanguloj kiuj estas uzeblaj por kungrupigi elementojn celante pli legeblajn diagramojn. Ili ne havas logikan signifon en la modelo.

Komponenta Diagramo
Komponentaj Diagramoj montras la softvarajn erojn (aÅ­ komponantoteknologiojn kiel KParts, CORBA Komponentoj aÅ­ Java Beans aÅ­ nur sekcioj de la sistemo kiuj estas klare distingeblaj) kaj la artefaktojn el kiuj ili konsistas kiel ekz. fontkodaj dosieroj, programbibliotekoj aÅ­ rilataj datumbazoj.
Komponentoj povas havi interfacojn (t.e. abstraktaj klasoj kun operacioj) kio permesas asociojn inter komponentoj.

Sterndiagramo
Sterndiagramoj montras la rultempajn komponant-instancojn kaj iliajn asociojn. Ili inkluzivas Nodojn kiuj estas fizikaj rimedoj, tipe ununura komputilo. Ili ankaÅ­ montras interfacojn kaj objektojn (klasinstancojn).