You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
739 lines
22 KiB
739 lines
22 KiB
13 years ago
|
<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><<include>></emphasis>,
|
||
|
čo značí, že prípad použitia sa uskutočňuje <emphasis>v</emphasis> inom
|
||
|
prípade použitia.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para><emphasis><<extends>></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>
|