<chapter id="uml-basics">

<title>Základy UML</title>

<sect1 id="about-uml">

<title>O UML</title>

<para> Táto kapitola poskytuje krátky úvod do základov UML. Pripomíname však, že 
to nie je plnohodnotný úvod. Ak chcete vedieť viac o unifikovanom modelovacom
jazyku alebo všeobecne o analýze a návrhu softvéru, prečítajte si jednu z
mnohých kníh venovaných tejto tematike. Ako východzí bod môžeme nájsť mnohé
práce o tejto téme aj na internete.</para>

<para> Unifikovaný modelovací jazyk (Unified Modelling Language - UML) je
notácia
diagramov pre špecifikáciu, vizualizáciu a dokumentáciu modelov
objektovo-orientovaných softvérových systémov. UML nie je
modelom chovania, t.j. nič nehovorí o jednotlivých krokoch, ktoré sú potrebné
pre vytvorenie systému. Pomáha však vizualizovať systém a komunikovať s
ostatnými. O štandard UML sa stará skupina Object Management Group (OMG) a je to
priemyselný štandard pre popis softvérových modelov.
</para>

<para> UML bol vytvorený pre objektovo-orientovaný návrh softvéru a preto je pri
ostatných paradigmách programovania použiteľný len obmedzene.
</para>
<para>
UML sa skladá z mnohých prvkov modelu, ktoré predstavujú istý aspekt
softvérového systému. Tieto prvky sa kombinujú do diagramu, ktoré predstavujú
istú časť alebo istý pohľad na systém. Umbrello podporuje tieto typy diagramov:
</para>
<!-- FIXME, is it possible to link from these to the next pages?-->
<itemizedlist>
	<listitem>
		<para><emphasis>
		<link linkend="class-diagram">Diagram tried</link></emphasis>,
		reprezentuje triedy a ich vzájomné vzťahy
		</para>
	</listitem>
	<listitem>
		<para><emphasis>
		<link linkend="use-case-diagram">Diagram prípadov použitia</link> </emphasis>,
		reprezentuje aktérov (ľudí alebo iných užívateľov systému), prípady použitia 
		(scenáre, ako využívajú aktéri systém) a ich vzájomné vzťahy.
		</para>
	</listitem>
	<listitem>
		<para><emphasis>
		<link linkend="sequence-diagram">Sekvenčný diagram</link></emphasis>, 
		reprezentuje objekty a ich vzájomné vzťahy, pričom dôraz sa kladie na
		chronologické poradie výmeny správ medzi jednotlivými objektmi.
		</para>
	</listitem>
	<listitem>
		<para><emphasis>
		<link linkend="collaboration-diagram">Diagram spolupráce</link></emphasis>,
		reprezentuje objekty a ich vzájomné vzťahy, pričom dôraz sa kladie na
		jednotlivé objekty, ktoré sa zúčastňujú výmeny správ.
		</para>
	</listitem>
	<listitem>
		<para><emphasis>
		<link linkend="state-diagram">Stavový diagram</link></emphasis>,
		Reprezentuje stavy, zmeny stavov a výstupy v objekte alebo časti systému.
		</para>
	</listitem>
	<listitem>
		<para><emphasis>
		<link linkend="activity-diagram">Diagram aktivít</link></emphasis>,
		reprezentuje aktivity, stavy a zmeny stavov objektov a výstupy v častiach
		systému.
		</para>
	</listitem>
</itemizedlist>
</sect1>

<!-- about-uml-->

<sect1 id="uml-elements">   <!--FIXME diagram-types ????  -->

<title>Prvky UML</title>

<sect2 id="use-case-diagram">

<title>Diagram prípadov použitia</title>
<para>Diagramy prípadov použitia popisujú vzťahy a závislosti medzi skupinou
<emphasis>prípadov použitia</emphasis> a aktérov, ktorí sa zúčastňujú daného
procesu</para>

<para>
Pripomíname, že diagram prípadov použitia sa v návrhu systému neodzrkadlí a tým
nehovorí nič o interných záležitostiach systému. Diagramy prípadov použitia sa
používajú len na zjednodušenie komunikácie medzi vývojármi a budúcimi
užívateľmi, resp. zákazníkmi. Sú osožné hlavne pri stanovení požadovaných
kritérií budúceho systému. Tým diagramy prípadov použitia určujú,
<emphasis>čo</emphasis> treba urobiť, nie však <emphasis>ako</emphasis> to treba


dosiahnuť.
</para>
<para>
	<screenshot>
		<screeninfo>Ukážkový diagram prípadov použitia.</screeninfo>
		<mediaobject>
			<imageobject>
				<imagedata fileref="pics/use-case-diagram.png" format="PNG"/>
			</imageobject>
			<textobject>
				<phrase>Umbrello pri zobrazení ukážkového diagramu prípadov použitia
				</phrase>
			</textobject>
			<caption>
				<para>Umbrello pri zobrazení ukážkového diagramu prípadov použitia
				</para>
			</caption>
		</mediaobject>
	</screenshot>
</para>

<sect3 id="use-case">

<title>Prípad použitia</title>

<para>
<emphasis>Prípad použitia</emphasis> popisuje z hľadiska aktéra rad aktivít v
systéme, ktoré dávajú konkrétny hmatateľný výsledok.
</para>

<para>Prípady použitia slúžia ako popis typickej interakcie medzi užívateľom a
systémom. Reprezentujú externé rozhranie a špecifikujú tým, čo má systém robiť
(iba čo, no nie ako!).</para>
<para>
Pri práci s prípadmi použitia sa odporúča riadiť týmito pravidlami:
<itemizedlist>
	<listitem>
		<para>každý prípad použitia je spojený s aspoň jedným aktérom.
		</para>
	</listitem>
	<listitem>
		<para>každý prípad použitia je niekým vyvolaný (napr. aktérom).
		</para>
	</listitem>
	<listitem>
		<para>
		každý prípad použitia vedie k významnému výsledku (merateľnému a hospodársky
		významnému)
		</para>
	</listitem>
</itemizedlist>
</para>

<para>Prípady použitia môžu byť navzájom spojené. Tri najviac používané vzťahy
medzi prípadmi použitia sú:
</para>
<itemizedlist>
	<listitem>
		<para><emphasis>&lt;&lt;include&gt;&gt;</emphasis>,
		čo značí, že prípad použitia sa uskutočňuje <emphasis>v</emphasis> inom
		prípade použitia.
		</para>
	</listitem>
	<listitem>
		<para><emphasis>&lt;&lt;extends&gt;&gt;</emphasis>,
		čo značí, že v istej situácii (alebo v istom bode rozšírenia) sa daný prípad
		použitia rozšíri iným prípadom použitia.
		</para>
	</listitem>
	<listitem>
		<para><emphasis>Zovšeobecnenie</emphasis>,
		čo značí, že prípad použitia zdedí vlastnosti
		<quote>rodičovského</quote>prípadu použitia (nadriadeného) a môže tieto
		vlastnosti prepísať alebo rozšíriť, podobne, ako je to u dedenia v prípade
		tried.
		</para>
	</listitem>
</itemizedlist>
</sect3>

<sect3 id="actor">

<title>Aktér</title>
<para>Aktér je externý objekt (mimo systému), ktorý prichádza do styku so
systémom prostredníctvom účasti a spustenia prípadov použitia.
Aktéry môžu byť skutočné osoby (napr. užívatelia systému),
počítačové systémy alebo externé impulzy.
</para>
<para>Aktéry tým predstavujú nie
<emphasis>fyzické</emphasis> osoby alebo systémy, ale <emphasis>role</emphasis>
týchto objektov. Ak je fyzická v kontakte so systémom mnohými spôsobmi, (napr.
prostredníctvom rôznych Rolí) potom sa reprezentuje pomocou rôznych aktérov. Tým
sa osoba, ktorá pracuje na úseku zákazníckej podpory a zúčastňuje sa aj prijímania
objednávok bude raz aktérom <quote>Pracovník_zákazníckej_podpory</quote> a druhýkrát
aktérom <quote>Pracovník_odbytu</quote>.
</para>

</sect3>

<sect3 id="use-case-description">

<title>Popis prípadu použitia</title>

<para>
Popis prípadu použitia reprezentuje prípad použitia v textovej forme. Normálne 
sa pre tento účel používajú poznámky alebo dokumenty spojené s prípadom použitia 
a popisujú procesy alebo aktivity, ktoré v danom prípade použitia nastávajú.
</para>

</sect3>

</sect2> <!-- use-case-diagram-->

<sect2 id="class-diagram">

<title>Diagram tried</title>

<para>
Diagramy tried zobrazujú rôzne triedy, z ktorých pozostáva systém a ako sú tieto


navzájom závislé. Diagramy tried sa označujú ako <quote>statické</quote>
, keďže reprezentujú triedy s ich metódami a atribútmi, ako aj
vzájomnými statickými vzťahmi. Pritom sa ukazuje, ktoré triedy <quote>vedia
</quote> o iných triedach a ktoré triedy <quote>sú sčasti</quote> inými triedami.
Nezobrazuje však výmenu správ (volania metód) medzi jednotlivými triedami.
</para>

<para>
	<screenshot>
		<screeninfo>Veľavravný diagram tried</screeninfo>
		<mediaobject>
			<imageobject>
				<imagedata fileref="pics/class-diagram.png" format="PNG"/>
			</imageobject>
			<textobject>
				<phrase>Umbrello pri zobrazení veľavravného diagramu tried</phrase>
			</textobject>
			<caption>
				<para>Umbrello pri zobrazení veľavravného diagramu tried</para>
			</caption>
		</mediaobject>
	</screenshot>
</para>

<sect3 id="class">

<title>Trieda</title>

<para>Trieda definuje atribúty a metódy množiny objektov. Všetky objekty tejto
triedy (inštancie) majú rovnaké chovanie a rovnaké atribúty (avšak s odlišnými 
hodnotami). Pojem <quote>typ</quote> sa občas používa ako synonyma triedy, treba 



však dbať na to, že typ je všeobecný a tým tieto dva pojmy nemajú totožný 
význam.
</para>
<para>
V UML sa triedy zobrazujú ako obdĺžniky s názvami tried. Atribúty a 
operácie triedy môžeme zaznamenať do dvoch ďalších <quote>oddelených oblastí</quote>
v danom obdĺžniku.
</para>

<para>
	<screenshot>
		<screeninfo>Trieda v UML</screeninfo>
		<mediaobject>
			<imageobject>
				<imagedata fileref="pics/class.png" format="PNG"/>
			</imageobject>
			<textobject>
				<phrase>Zobrazenie triedy v UML</phrase>
			</textobject>
			<caption>
				<para>Zobrazenie triedy v UML</para>
			</caption>
		</mediaobject>
	</screenshot>
</para>

<sect4 id="attributes">

<title>Atribút</title>
<para> V UML sa atribúty zobrazujú prinajmenšom pomocou názvu, môžu však 
byť zobrazené aj typ, počiatočná hodnota a ostatné vlastnosti. Je tiež možné
zobraziť aj viditeľnosť atribútov:
</para>

<itemizedlist>
	<listitem>
		<para>+ značí verejné - <emphasis>public</emphasis> atribúty</para>
	</listitem>
	<listitem>
		<para># značí chránené - <emphasis>protected</emphasis> atribúty</para>
	</listitem>
	<listitem>
		<para>- značí súkromné - <emphasis>private</emphasis> atribúty</para>
	</listitem>
</itemizedlist>

</sect4>

<sect4 id="operation">

<title>Operácia</title>

<para>
Operácie  (metódy) musia byť reprezentované aspoň názvom a návratovou hodnotou. 
Podobne, ako je to u atribútov, môžeme zobraziť aj viditeľnosť:
<itemizedlist>
	<listitem>
		<para>+ značí verejné - <emphasis>public</emphasis> operácie</para>
	</listitem>
	<listitem>
		<para># značí chránené - <emphasis>protected</emphasis> operácie</para>
	</listitem>
	<listitem>
		<para>- značí súkromné - <emphasis>private</emphasis> operácie</para>
	</listitem>
</itemizedlist>
</para>

</sect4>

</sect3>

<sect3 id="class-associations">

<title>Asociácie tried</title>

<para>Triedy môžu byť vo vzájomných vzťahoch (asociáciách) mnohých typov.
</para>

<sect4 id="generalization">

<title>Zovšeobecnenie</title>

<para> Dedenie je základným konceptom objektovo-orientovaného programovania. 
Trieda <quote>získa</quote> pritom všetky atribúty a operácie triedy, od ktorej 
je odvodená. Trieda môže tieto operácie/atribúty prepísať a zmeniť, ako aj 
pridať nové.
</para>

<para> V UML sa prostredníctvom asociácie
<emphasis>zovšeobecnenie</emphasis> buduje hierarchia, ktorá predstavuje koncept
základnej triedy a odvodenej triedy. Zovšeobecnenie medzi dvoma triedami sa v
UML zobrazuje ako čiara medzi dvoma triedami, pričom na strane základnej triedy 
je šípka.
<screenshot>
	<screeninfo>Zovšeobecnenie</screeninfo>
	<mediaobject>
		<imageobject>
			<imagedata fileref="pics/generalization.png" format="PNG"/>
		</imageobject>
		<textobject>
			<phrase>Zobrazenie zovšeobecnenia v UML</phrase>
		</textobject>
		<caption>
			<para>Zobrazenie zovšeobecnenia v UML</para>
		</caption>
	</mediaobject>
</screenshot>
</para>

</sect4>

<sect4 id="uml-associations">

<title>Asociácia</title>

<para>
Asociácia predstavuje vzťah medzi triedami dar a tým popisuje všeobecný význam a 
štruktúru rôznych typov <quote>vzťahov</quote> medzi objektmi.
</para>

<para>Asociácie sú mechanizmom, ktorý umožňuje, aby
objekty medzi sebou navzájom komunikovali. Popisujú vzťahy medzi rôznymi
triedami (vzťahy medzi jednotlivými objektmi sa označujú ako vzťahy objektov
alebo ako <emphasis>prepojenie</emphasis>).
</para>

<para>
Asociácie môžu mať role, ktoré popisujú účel vzťahu a sú buď jednosmerné
alebo obojsmerné (t.j. či je vzťah medzi objektmi jedno- alebo
obojstranný).
Oba konce asociácie majú hodnotu násobnosti, ktorá určuje, koľko objektov na
jednej strane môže byť v spojení s koľkými objektmi na strane druhej.
</para>

<para> V UML sa asociácia zobrazuje prostredníctvom čiary medzi triedami,
ktoré sa zúčastňujú asociácie. Môžeme pritom zobraziť aj rolu a násobnosť.
Násobnosť je rozsah [min..max] nezáporných čísel, pričom hviezda (*) na strane
maxima predstavuje nekonečno.
<screenshot>
	<screeninfo>Asociácie UML</screeninfo>
	<mediaobject>
		<imageobject>
			<imagedata fileref="pics/association.png" format="PNG"/>
		</imageobject>
		<textobject>
			<phrase>Zobrazenie asociácie v UML</phrase>
		</textobject>
		<caption>
			<para>Zobrazenie asociácie v UML</para>
		</caption>
	</mediaobject>
</screenshot>
</para>

</sect4>

<sect4 id="aggregation">

<title>Agregácia</title>

<para>agregácie sú špeciálnym prípadom asociácií.
Vo vzťahu nemajú triedy rovnaký status, táto asociácia predstavuje vzťah
<quote>súčasť celku</quote>. Agregácia popisuje, ako trieda, ktorá je v úlohe
celku, sa skladá z tried, ktoré majú úlohu častí. Pri agregáciách majú triedy v 
úlohe celku vždy násobnosť 1.
</para>
<para> V UML sa agregácie zobrazujú ako asociácie, pričom na strane celku je 
kosoštvorec.
<screenshot>
	<screeninfo>Agregácia</screeninfo>
	<mediaobject>
		<imageobject>
			<imagedata fileref="pics/aggregation.png" format="PNG"/>
		</imageobject>
		<textobject>
			<phrase>Zobrazenie vzťahu agregácie v UML</phrase>
		</textobject>
		<caption>
			<para>Zobrazenie vzťahu agregácie v UML</para>
		</caption>
	</mediaobject>
</screenshot>
</para>

</sect4>

<sect4 id="composition">

<title>Kompozícia</title>

<para>Kompozície sú asociácie, ktoré predstavujú <emphasis>veľmi 
silnú</emphasis> agregáciu.
To znamená, že kompozície reprezentujú vzťah súčasť celku, avšak vzťah je taký 
silný, že súčasti nemôžu existovať samostatne. Preto existujú iba v celku a ak
celok zanikne, zaniknú aj ony.
</para>

<para>V UML sa kompozície zobrazujú ako vyplnený kosoštvorec na strane celku.
</para>

<para>
<screenshot>
	<screeninfo>Kompozícia</screeninfo>
	<mediaobject>
		<imageobject>
			<imagedata fileref="pics/composition.png" format="PNG"/>
		</imageobject>
		<textobject>
			<phrase>Zobrazenie vzťahu kompozície v UML</phrase>
		</textobject>
	</mediaobject>
</screenshot>
</para>

</sect4>

</sect3> <!--class-associations-->

</sect2> <!--class diagram -->

<sect2 id="activity-diagram">

<title>Diagram aktivít</title>

<para>Diagramy aktivít popisujú postupnosť aktivít v systéme.
Sú špeciálnou formou stavových diagramov, pričom takmer výlučne obsahujú len
aktivity.
</para>

<para>
<screenshot>
	<screeninfo>Názorný diagram aktivít</screeninfo>
	<mediaobject>
		<imageobject>
			<imagedata fileref="pics/activity-diagram.png" format="PNG"/>
		</imageobject>
	<textobject>
		<phrase>Umbrello pri zobrazení diagramu aktivít</phrase>
	</textobject>
		<caption>
			<para>Umbrello pri zobrazení diagramu aktivít</para>
		</caption>
	</mediaobject>
</screenshot>
</para>

<para>Diagramy aktivít sú veľmi podobné procedurálnym diagramom dátových tokov.
Sú však odlišné tým, že aktivity sú jasne viazané na 
objekty.</para>

<para>
Diagramy aktivít patria vždy jednoznačne <emphasis>k triedam</emphasis>,
<emphasis>operáciám</emphasis> alebo <emphasis>prípadom použitia</emphasis>.
</para>

<para>V diagrame aktivít môžeme zaznamenať aj sekvenčné či dokonca súbežné
aktivity. Paralelné spracovanie sa zaznamenáva vo forme symbolov
Rozdeliť/spojiť (fork/join). Pre paralelne bežiace aktivity je pritom dôležité,
v akom poradí sa budú vykonávať. Môžu byť vykonávané v rovnakom časovom okamihu,
ale aj za sebou.
</para>

<sect3 id="activity">

<title>Aktivita</title>

<para>Aktivita je jediný krok v procese. Tým je aktivita stavom systému s
internou aktivitou a aspoň jedným prechodom. Môžu existovať viaceré prechody, ak
sa aktivita vykonáva v rôznych podmienkach.
</para>

<para>
Aktivity môžu byť usporiadané do hierarchie, v ktorej sa jedna aktivita skladá z 
mnohých iných. Pritom sa musia vstupujúce a vystupujúce prechody zosúladiť s 
príslušnými prechodmi dekonštrukcie.
</para>

</sect3>

</sect2> <!-- activity diagram-->

<sect2 id="sequence-diagram">

<title>Sekvenčný diagram</title>

<para>Sekvenčné diagramy zobrazujú výmenu správ (napr. volanie metód) medzi
Objektmi v danom časovom priestore. Kladie sa pritom dôraz na poradie a čas,
v ktorom sa správy posielajú objektom.
</para>

<para>
V sekvenčnom diagrame sa objekt označuje zvislou prerušovanou čiarou. Názov objektu sa
nachádza na hornom konci. Časová os je tiež zvislá, pričom hodnoty sa zväčšujú 
smerom nadol. Správy medzi objektmi sa označujú ako šípky s názvami operácií a 
ich parametrov.
</para>

<para>
	<screenshot>
		<screeninfo>Sekvenčný diagram</screeninfo>
		<mediaobject>
			<imageobject>
				<imagedata fileref="pics/sequence-diagram.png" format="PNG"/>
			</imageobject>
		<textobject>
			<phrase>Umbrello pri zobrazení sekvenčného diagramu</phrase>
		</textobject>
		<caption>
			<para>Umbrello pri zobrazení sekvenčného diagramu
			</para>
		</caption>
		</mediaobject>
	</screenshot>
</para>

</sect2>

<sect2 id="collaboration-diagram">

<title>Diagram spolupráce</title>

<para>Diagram spolupráce zobrazuje interakciu medzi objektmi, ktoré sa 
zúčastňujú špecifickej situácie. Toto predstavuje v princípe
informácie zo sekvenčného diagramu, pričom pri tomto diagrame sa kladie dôraz na 
časovú následnosť. V prípade diagramu spolupráce sa však do popredia dostáva 
vzťah medzi objektmi a jeho topológia.
</para>

<para>Správy medzi objektmi sa v
diagrame spolupráce zobrazujú ako šípky označené názvom, parametrom a poradovým 
číslom správy. Diagramy spolupráce sa výborne hodia pre zobrazenie špeciálnych 
programových postupov alebo situácií. Môžeme nimi demonštrovať a vyjasniť časť 
logiky programu veľmi jednoducho a rýchlo.
</para>

<para>
<screenshot>
	<screeninfo>Diagramy spolupráce</screeninfo>
	<mediaobject>
		<imageobject>
			<imagedata fileref="pics/collaboration-diagram.png" format="PNG"/>
		</imageobject>
		<textobject>
			<phrase>Umbrello pri zobrazení diagramu spolupráce</phrase>
		</textobject>
		<caption>
			<para>Umbrello pri zobrazení diagramu spolupráce
			</para>
		</caption>
	</mediaobject>
</screenshot>
</para>

</sect2>

<sect2 id="state-diagram">

<title>Stavový diagram </title>

<para>Stavové diagramy zobrazujú objekty v rôznych stavoch ich života a 
zobrazujú vplyvy, ktorými objekty menia stav.
</para>

<para>Stavové diagramy zobrazujú objekty ako
<emphasis>stavové stroje</emphasis> alebo konečné automaty, ktoré môžu byť v
konečnom počte stavov a dokážu meniť stav prostredníctvom konečného počtu
vplyvov. Takto sa môže objekt <emphasis>sieťový_server</emphasis> počas
svojej existencie nachádzať v týchto stavoch:
</para>
<itemizedlist>
	<listitem>
		<para>pripravený</para>
	</listitem>
	<listitem>
		<para>čakajúci</para>
	</listitem>
	<listitem>
		<para>pracujúci</para>
	</listitem>
	<listitem>
		<para>zastavený</para>
	</listitem>
</itemizedlist>

<para>
a impulzy, ktoré vyvolávajú zmenu stavu objektu môžu byť:
</para>
<itemizedlist>
	<listitem>
		<para>Objekt bol vytvorený</para>
	</listitem>
	<listitem>
		<para>Objekt dostal správu, že má počkať</para>
	</listitem>
	<listitem>
		<para>Klient požaduje pripojenie cez sieť</para>
	</listitem>
	<listitem>
		<para>Klient ukončil spojenie</para>
	</listitem>
	<listitem>
		<para>Požiadavka sa spracuje a ukončí</para>
	</listitem>
	<listitem>
		<para>Objekt zachytí správu, že má ukončiť činnosť</para>
	</listitem>
	<listitem>
		<para>atď.</para>
	</listitem>
</itemizedlist>

<para>
<screenshot>
	<screeninfo>Stavový diagram </screeninfo>
	<mediaobject>
		<imageobject>
			<imagedata fileref="pics/state-diagram.png" format="PNG"/>
		</imageobject>
		<textobject>
			<phrase>Umbrello pri zobrazení stavového diagramu</phrase>
		</textobject>
		<caption>
			<para>Umbrello pri zobrazení stavového diagramu</para>
		</caption>
	</mediaobject>
</screenshot>
</para>

<sect3 id="state">

<title>Stav</title>

<para>Stavy sú stavebné kamene stavového diagramu. Stav patrí k práve jednej 
triede predstavuje istú konšteláciu hodnôt atribútov triedy. Tým popisuje stav v 
UML interný stav objektu istej triedy.</para>
<para>
Je pritom dôležité, že nie každá zmena atribútov vedie k novému stavu objektu.
Ako nový stav má byť označená len zmena atribútov s citeľným vplyvom.
</para>
<para>Dva špeciálne stavy sú Počiatočný a Konečný stav. To znamená, že sa nemôže 
stať to, že sa objekt vráti do počiatočného stavu a žiaden impulz nemôže objekt 
preniesť do iného stavu, ak dosiahol konečný stav.
</para>

</sect3>

</sect2>

<sect2 id="helper-elements">
<title>Pomocné prvky</title>
<para>V UML existujú 3 prvky, ktoré nemajú sémantický význam v modeli, 
zjednodušujú však pochopenie diagramov. Tieto prvky sú:
</para>

<itemizedlist>
	<listitem>
		<para>Riadok textu</para>
	</listitem>
	<listitem>
		<para>Poznámkový štítok</para>
	</listitem>
	<listitem>
		<para>Ukotvenie</para>
	</listitem>
</itemizedlist>

<para> Pomocou riadku textu môžeme do diagramu vložiť krátku informáciu. Text je
samostatný a nemá žiaden význam z pohľadu modelu.
</para>

<para>
Pomocou poznámkového štítku môžeme vložiť detailné informácie o objekte alebo o
 situácii. Veľkou prednosťou textovej poznámky je, že ju môžeme pripojiť k
prvku UML a tým textová poznámka <quote>patrí</quote> k tomuto prvku alebo
špeciálnej situácii.
</para>
<para>Ani ukotvenia nemajú žiaden obsahový význam, sú však užitočné k spojení dvoch
prvkov. Takto môžeme napríklad spojiť textové poznámky a objekt diagramu.
</para><!--
FIXME, screenshot -->
</sect2>
</sect1> <!-- uml-elements -> diagram types ???
--></chapter>
