<chapter id="uml-basics">
<title
>&UML; Osnove</title>
<sect1 id="about-uml">
<title
>O &UML;</title>
<para
>To poglavje vam bo dalo hiter pregled osnov &UML;. Ne pozabite, da to ni obsežni učbenik o &UML; temveč kratek uvod v &UML; ki se lahko bere kot &UML; učbenik. Če bi radi izvedeli več o poenotenem modelnem jeziku ali na splošno o analizi in oblikovanju programske opreme, si oglejte eno od številnih knjig, ki so na voljo na to temo. Na internetu je tudi veliko vaj, ki jih lahko vzamete kot izhodišče. </para>

<para
>Unified Modeling Language (&UML;) je diagramski jezik ali zapis za določanje, vizualizacijo in dokumentiranje modelov objektno usmerjenih programskih sistemov. &UML; ni razvojna metoda, kar pomeni, da vam ne pove, kaj morate storiti najprej in kaj narediti naslednje ali kako oblikovati svoj sistem, ampak vam pomaga vizualizirati vašo zasnovo in komunicirati z drugimi. &UML; nadzira skupina za upravljanje objektov (<acronym
>OMG</acronym
>) in je industrijski standard za grafično opisovanje programske opreme. </para>
<para
>&UML; je zasnovan za objektno usmerjeno načrtovanje programske opreme in ima omejeno uporabo za druge paradigme programiranja. </para>
<para
>&UML; je sestavljen iz številnih elementov modela, ki predstavljajo različne dele programskega sistema. &UML; elementi se uporabljajo za ustvarjanje diagramov, ki predstavljajo določen del ali pogled na sistem. &umbrello; podpira naslednje vrste diagramov: </para>

<itemizedlist>

<listitem
><para
><emphasis
><link linkend="use-case-diagram"
>Diagrami primerov uporabe</link
></emphasis
> prikazujejo akterje (ljudje ali druge uporabnike sistema), primere uporabe (scenarije, ko uporabljajo sistem), in njihove odnose</para
> </listitem>

<listitem
><para
><emphasis
><link linkend="class-diagram"
>Diagrami razredov</link
></emphasis
> prikazujejo razrede in razmerja med njimi</para
> </listitem>

<listitem
><para
><emphasis
><link linkend="sequence-diagram"
>Diagrami zaporedij</link
></emphasis
> prikazujejo objekte in zaporedje klicev metod, ki jih opravijo drugim objektom.</para
> </listitem>

<listitem
><para
><emphasis
><link linkend="collaboration-diagram"
>Diagrami sodelovanja</link
></emphasis
> prikazujejo predmete in njihov odnos, s poudarkom na objektih, ki sodelujejo pri izmenjavi sporočil</para>
</listitem>

<listitem
><para
><emphasis
><link linkend="state-diagram"
>Diagrami stanj</link
></emphasis
> prikazujejo stanja, spremembe stanja in dogodke v objektu ali delu sistema</para
> </listitem>

<listitem
><para
><emphasis
><link linkend="activity-diagram"
>Diagrami dejavnosti</link
></emphasis
> prikazujejo dejavnosti in spremembe ene dejavnosti v drugo z dogodki, ki se zgodijo v nekem delu sistema</para
></listitem>

<listitem
><para
><emphasis
><link linkend="component-diagram"
>Diagrami komponent</link
></emphasis
> prikazujejo komponente programiranja na visoki ravni (kot so KParts ali Java Beans).</para
></listitem>

<listitem
><para
><emphasis
><link linkend="deployment-diagram"
>Diagrami uvajanja</link
></emphasis
> prikazujejo primerke komponent in njihove odnose.</para
></listitem
> 

<listitem
><para
><emphasis
><link linkend="entity-relationship-diagram"
>Diagrami odnosov entitet</link
></emphasis
> prikazujejo podatke ter razmerja in omejitve med podatki.</para
></listitem
> 

</itemizedlist>

</sect1
>   <!-- about-uml -->

<sect1 id="uml-elements"
>  
<title
>&UML; Elementi</title>
<sect2 id="use-case-diagram">
<title
>Diagram primerov uporabe</title>
<para
>Diagrami primerov uporabe opisujejo razmerja in odvisnosti med skupino <emphasis
>primerov uporabe</emphasis
> in akterji, ki sodelujejo v procesu.</para>
<para
>Pomembno je opozoriti, da diagrami primerov uporabe niso primerni za predstavitev zasnove in ne morejo opisati notranjosti sistema. Diagrami primerov uporabe so namenjeni olajšanju komunikacije s prihodnjimi uporabniki sistema in s stranko ter so še posebej v pomoč pri določanju zahtevanih funkcij, ki jih mora sistem imeti. Diagrami primerov uporabe povedo, <emphasis
>kaj</emphasis
> naj bi sistem naredil, vendar ne &mdash; in ne more &mdash; navesti <emphasis
>kako</emphasis
> naj bi to dosegli.</para>
<para>
<screenshot>
<screeninfo
>Primer diagrama primerov uporabe.</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="use-case-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; prikazuje diagram primerov uporabe</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; prikazuje diagram primerov uporabe </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="use-case">
<title
>Primer uporabe</title>
<para
><emphasis
>Primer uporabe</emphasis
> opisuje &mdash; z vidika akterjev &mdash; skupina dejavnosti v sistemu, ki proizvaja konkreten, otipljiv rezultat.</para>
<para
>Primeri uporabe so opisi tipičnih interakcij med uporabniki sistema in samim sistemom. Predstavljajo zunanji vmesnik sistema in določajo obliko zahtev, kaj mora sistem narediti (ne pozabite, samo kaj, ne kako). </para>
<para
>Pri delu s primeri uporabe si je pomembno zapomniti nekaj preprostih pravil: <itemizedlist>
 <listitem
><para
>Vsak primer uporabe je povezan z vsaj enim akterjem</para
></listitem>
 <listitem
><para
>Vsak primer uporabe ima pobudnika (&ie; akterja)</para
></listitem>
 <listitem
><para
>Vsak primer uporabe vodi do ustreznega rezultata (rezultata s <quote
>poslovno vrednostjo</quote
>)</para>
 </listitem>
 </itemizedlist>
</para>
<para
>Primeri uporabe so lahko povezani tudi z drugimi primeri uporabe. Tri najbolj značilne vrste odnosov med primeri uporabe so:</para>
<itemizedlist>
<listitem
><para
><emphasis
>&lt;&lt;vsebuje&gt;&gt;</emphasis
>, ki določa, da se primer uporabe odvija <emphasis
>znotraj</emphasis
> drugega primera uporabe</para
></listitem>
<listitem
><para
><emphasis
>&lt;&lt;razširja&gt;&gt;</emphasis
>, ki določa, da bo v določenih situacijah ali na neki točki (imenovani razširitvena točka) primer uporabe razširjen z drugim.</para
></listitem>
<listitem
><para
><emphasis
>Posplošitev</emphasis
> določa, da primer uporabe podeduje značilnosti primera <quote
>super</quote
> uporabe in lahko preglasi nekatere izmed njih ali doda nove na podoben način kot dedovanje med razredi. </para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="actor">
<title
>Akter</title>
<para
>Akter je zunanja entiteta (zunaj sistema), ki sodeluje s sistemom tako, da sodeluje (in pogosto sproži) primer uporabe. Akterji so lahko ljudje iz resničnega življenja (na primer uporabniki sistema), drugi računalniški sistemi ali zunanji dogodki. </para>
<para
>Akterji ne predstavljajo <emphasis
>fizičnih</emphasis
> ljudi ali sistemov, temveč njihovo <emphasis
>vlogo</emphasis
>. To pomeni, da ko oseba komunicira s sistemom na različne načine (prevzema različne vloge), jo predstavlja več akterjev. Osebo, ki strankam nudi podporo po telefonu in sprejema naročila strank v sistem, bi na primer predstavljala akter <quote
>Podporno osebje</quote
> in akter <quote
>Prodajni zastopnik</quote
> </para>
</sect3>
<sect3 id="use-case-description">
<title
>Opis primera uporabe</title>
<para
>Opisi primerov uporabe so besedilne pripovedi primerov uporabe. Običajno so v obliki opombe ali dokumenta, ki je nekako povezan s primerom uporabe in pojasnjuje procese ali dejavnosti, ki potekajo v primeru uporabe. </para>
</sect3>
</sect2
> <!-- use-case-diagram -->

<sect2 id="class-diagram">
<title
>Diagram razreda</title>
<para
>Diagrami razredov prikazujejo različne razrede, ki sestavljajo sistem, in kako so povezani drug z drugim. Za diagrame razredov pravimo, da so <quote
>statični</quote
> diagrami, ker prikazujejo razrede, skupaj z njihovimi metodami in atributi ter statične odnose med njimi: kateri razredi <quote
>vedo</quote
> o katerih razredih oz. kateri razredi <quote
>so del</quote
> drugega razreda, vendar ne prikazujejo klicev metod med njimi. </para>
<para>
<screenshot>
<screeninfo
>Primer diagrama razredov</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="class-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; prikazuje diagram razredov</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; prikazuje diagram razredov </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="class">
<title
>Razred</title>
<para
>Razred definira atribute in metode nabora predmetov. Vsi objekti tega razreda (instance tega razreda) imajo enako vedenje in imajo enak niz atributov (vsak objekt ima svoj niz). Izraz <quote
>Vrsta</quote
> se včasih uporablja namesto Razred, vendar je pomembno omeniti, da ta dva izraza nista ista in da je Vrsta bolj splošen izraz. </para>
<para
>V &UML; so razredi predstavljeni s pravokotniki z imenom razreda in lahko prikazujejo tudi atribute in operacije razreda v dveh drugih <quote
>predelih</quote
> znotraj pravokotnika. </para>
<para>
<screenshot>
<screeninfo
>Razred v &UML;</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="class.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev razreda v &UML;</phrase>
	  </textobject>
	  <caption>
	    <para
>Vizualna predstavitev razreda v &UML; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect4 id="attribute">
<title
>Lastnosti</title>
<para
>V &UML; so atributi prikazani vsaj z imenom, lahko pa tudi prikazujejo svojo vrsto, začetno vrednost in druge lastnosti. Atributi so lahko prikazani tudi z njihovo vidnostjo: </para>
<itemizedlist>
<listitem
><para
><literal
>+</literal
> pomeni <emphasis
>javne</emphasis
> atribute</para
></listitem>
<listitem
><para
><literal
>#</literal
> pomeni <emphasis
>zaščitene</emphasis
> atribute</para
></listitem>
<listitem
><para
><literal
>-</literal
> pomeni <emphasis
>zasebne</emphasis
> atribute</para
></listitem>
</itemizedlist>
</sect4>
<sect4 id="operation">
<title
>Operacije</title>
<para
>Operacije (metode) so prav tako prikazane vsaj z njihovim imenom, lahko pa tudi svoje parametre in povratne vrste. Operacije lahko tako kot atributi prikažejo svojo vidnost: <itemizedlist>
<listitem
><para
><literal
>+</literal
> pomeni <emphasis
>javne</emphasis
> operacije</para
></listitem>
<listitem
><para
><literal
>#</literal
> pomeni <emphasis
>zaščitene</emphasis
> operacije</para
></listitem>
<listitem
><para
><literal
>-</literal
> Označuje <emphasis
>zasebne</emphasis
> operacije</para
></listitem>
</itemizedlist>
</para>
</sect4>

<sect4 id="templates">
<title
>Predloge</title>
<para
>Razredi imajo lahko predloge, vrednost, ki se uporablja za nedoločen razred ali vrsto. Vrsta predloge je določena, ko je razred iniciiran (tj. ustvarjen objekt). Predloge obstajajo v sodobnem C++ in bodo predstavljene v Javi 1.5, kjer se bodo imenovale Generics. </para>
</sect4>
</sect3>

<sect3 id="class-associations">
<title
>Asociacije razredov</title>
<para
>Razredi so lahko med seboj povezani (asociirani) na različne načine:</para>
<sect4 id="generalization">
<title
>Posploševanje</title>
<para
>Dedovanje je eden od temeljnih konceptov objektno orientiranega programiranja, v katerem razred <quote
>pridobi</quote
> vse atribute in operacije razreda, ki ga podeduje, in lahko preglasi/spremeni nekatere od njih ter doda več lastnih lastnosti in operacij.</para>
<para
>V &UML; je <emphasis
>Posplošitev</emphasis
> asociacija med dvema razredoma ju postavi v hierarhijo, ki predstavlja koncept dedovanja izpeljanega razreda iz osnovnega razreda. V &UML; so generalizacije predstavljene s črto, ki povezuje oba razreda, s puščico na strani osnovnega razreda. <screenshot>
<screeninfo
>Posploševanje</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="generalization.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev posplošitve v &UML;</phrase>
	  </textobject>
	  <caption>
	    <para
>Vizualna predstavitev posplošitve v &UML; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect4>

<sect4 id="uml-associations">
<title
>Asociacije</title>
<para
>Asociacija predstavlja razmerje med razredi in daje skupno semantiko in strukturo za številne vrste <quote
>povezav</quote
> med objekti.</para>
<para
>Asociacije so mehanizem, ki omogoča objektom medsebojno komunikacijo. Opisuje povezavo med različnimi razredi (povezava med dejanskimi objekti se imenuje povezava objektov ali <emphasis
>povezava</emphasis
>. </para>
<para
>Asociacije imajo lahko vlogo, ki določa namen asociacije in so lahko enosmerne ali dvosmerne (označuje, ali lahko dva objekta, ki sodelujeta v razmerju, pošiljata sporočila drugemu ali če le eden od njiju ve za drugega). Vsak konec asociacije ima tudi vrednost večkratnosti, ki narekuje, koliko predmetov na tej strani asociacije se lahko nanaša na en objekt na drugi strani. </para>
<para
>V &UML; so asociacije predstavljene kot črte, ki povezujejo razrede, ki sodelujejo v razmerju, in lahko prikazujejo tudi vlogo in mnogoterost vsakega od udeležencev. Večkratnost je prikazana kot razpon [min..max] nenegativnih vrednosti, pri čemer zvezdica (<literal
>*</literal
>) na največji strani predstavlja neskončnost. <screenshot>
<screeninfo
>&UML; Asociacija</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="association.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev asociacije v &UML;</phrase>
	  </textobject>
	  <caption>
	    <para
>Vizualna predstavitev asociacije v &UML; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect4>

<sect4 id="aggregation">
<title
>Agregacija</title>
<para
>Agregacije so posebna vrsta asociacij, v katerih dva sodelujoča razreda nimata enakega statusa, ampak tvorita razmerje <quote
>celo-del</quote
>. Agregacija opisuje, kako je razred, ki prevzame vlogo celote, sestavljen (ima) iz drugih razredov, ki prevzamejo vlogo delov. Za agregacije ima razred, ki deluje kot celota, vedno številčnost ena. </para>
<para
>V &UML; so agregacije predstavljene z asociacijo, ki prikazuje romb na strani celote. <screenshot>
<screeninfo
>Agregacija</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="aggregation.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev razmerja agregacije v &UML;</phrase>
	  </textobject>
	  <caption>
	    <para
>Vizualna predstavitev razmerja agregacije v &UML; </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
</sect4>
<sect4 id="composition">
<title
>Sestava</title>
<para
>Sestave so asociacije, ki predstavljajo <emphasis
>zelo močne</emphasis
> agregacije. To pomeni, da sestave tvorijo tudi razmerja celota-del, vendar je razmerje tako močno, da deli ne morejo obstajati sami. Obstajajo le znotraj celote in če je celota uničena, odmrejo tudi deli.</para>
<para
>V &UML; so sestave predstavljene s polnim rombom ob strani celote. </para>
<para
><screenshot>
<screeninfo
>Sestava</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="composition.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev razmerja Sestava v &UML;</phrase>
	  </textobject>
	</mediaobject>
</screenshot
></para>
</sect4>
</sect3
> <!--class-associations-->

<sect3 id="other-class-diagram-items">
<title
>Druge postavke diagrama razredov</title>
<para
>Diagrami razredov lahko poleg razredov vsebujejo še več drugih elementov.</para>
<sect4 id="interfaces">
<title
>Vmesniki</title>
<para
>Vmesniki so abstraktni razredi, kar pomeni, da iz njih ni mogoče neposredno ustvariti pojavkov. Vsebujejo lahko operacije, ne pa tudi atributov. Razredi lahko podedujejo vmesnike (preko realizacijske asociacije) in iz teh razredov se lahko naredijo pojavki.</para>
<!-- FIXME screenshot -->
</sect4>
<sect4 id="datatype">
<title
>Podatkovni tipi</title>
<para
>Podatkovni tipi so primitivni elementi, ki so običajno vgrajeni v programski jezik. Pogosti primeri vključujejo cela števila in logične vrednosti. Ne morejo imeti odnosov do razredov, lahko pa so razredi povezani z njimi.</para>
<!-- FIXME screenshot -->
</sect4>
<sect4 id="enum">
<title
>Naštevanja</title>
<para
>Naštevanja so preprost seznam vrednosti. Tipičen primer je naštevanje dni v tednu. Možnosti naštevanj se imenujejo literali naštevanj. Tako kot podatkovni tipi ne morejo imeti razmerja do razredov, lahko pa imajo razredi razmerja do njih.</para>
<!-- FIXME screenshot -->
</sect4>
<sect4 id="package">
<title
>Paketi</title>
<para
>Paketi predstavljajo imenski prostor v programskem jeziku. V diagramu se uporabljajo za predstavitev delov sistema, ki vsebujejo več kot en razred, morda na stotine razredov.</para>
<!-- FIXME screenshot -->
</sect4>
</sect3>

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

<sect2 id="sequence-diagram">
<title
>Diagrami zaporedja</title>

<para
>Diagrami zaporedja prikazujejo izmenjavo sporočil (&ie; klic metode) med več objekti v določeni časovno razmejeni situaciji. Objekti so pojavki razredov. Diagrami zaporedja dajejo poseben poudarek vrstnemu redu in času, v katerem so sporočila poslana objektom.</para>

<para
>V diagramih zaporedja so predmeti predstavljeni z navpičnimi črtkanimi črtami, z imenom predmeta na vrhu. Tudi časovna os je navpična, narašča navzdol, tako da se sporočila pošiljajo od enega objekta do drugega v obliki puščic z imenom operacije in parametrov. </para>

<!-- FIXME update screenshot to show synchronous messages -->
<screenshot>
<screeninfo
>Diagram zaporedja</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="sequence-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; prikazuje diagram zaporedja</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; prikazuje diagram zaporedja </para>
	  </caption>
	</mediaobject>
</screenshot>

<para
>Sporočila so lahko bodisi sinhrona, običajna vrsta sporočilnega klica, kjer se nadzor prenese na klicani objekt, dokler ta metoda ne konča z izvajanjem, ali asinhrona, kjer se nadzor posreduje nazaj neposredno klicnemu objektu. Sinhronska sporočila imajo navpično polje ob strani klicanega predmeta, ki prikazuje potek nadzora programa.</para>
</sect2
> <!-- sequence diagrams -->

<sect2 id="collaboration-diagram">
<title
>Diagrami sodelovanja</title>

<para
>Diagrami sodelovanja prikazujejo interakcije med predmeti, ki sodelujejo v določeni situaciji. To so bolj ali manj enake informacije, ki jih prikazujejo diagrami zaporedja, vendar je poudarek na tem, kako se interakcije odvijajo v času, medtem ko diagrami sodelovanja postavljajo v ospredje odnose med objekti in njihovo topologijo.</para>

<para
>V diagramih sodelovanja so sporočila, poslana iz enega objekta v drugega, predstavljena s puščicami, ki prikazujejo ime sporočila, parametre in zaporedje sporočila. Diagrami sodelovanja so še posebej primerni za prikaz določenega poteka programa ali situacije in so ena najboljših vrst diagramov za hitro predstavitev ali razlago enega procesa v logiki programa. </para>

<screenshot>
<screeninfo
>Sodelovanje</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="collaboration-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; prikazuje diagram sodelovanja</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; prikazuje diagram sodelovanja </para>
	  </caption>
	</mediaobject>
</screenshot>

</sect2
> <!-- collaboration diagrams -->

<sect2 id="state-diagram">
<title
>Diagram stanja</title>
<para
>Diagrami stanj prikazujejo različna stanja objekta v njegovem življenju in dražljaje, ki povzročijo, da objekt spremeni svoje stanje. </para
>                              
<para
>Diagrami stanja objekte obravnavajo kot <emphasis
>stanje strojev</emphasis
> ali končne avtomate, ki so lahko v enem od niza končnih stanj in lahko spremenijo svoje stanje prek enega od končnega niza dražljajev. Na primer, objekt vrste <emphasis
>NetServer</emphasis
> je lahko v svojem življenju v enem od naslednjih stanj: </para>
<itemizedlist>
<listitem
><para
>Pripravljen</para
></listitem>
<listitem
><para
>Poslušanje</para
></listitem>
<listitem
><para
>Delovanje</para
></listitem>
<listitem
><para
>Ustavljen</para
></listitem>
</itemizedlist>
<para
>in dogodki, ki lahko povzročijo spremembo stanja objekta, so</para>
<itemizedlist>
<listitem
><para
>Objekt je ustvarjen</para
></listitem>
<listitem
><para
>Objekt prejme poslušanje sporočila</para
></listitem>
<listitem
><para
>Odjemalec zahteva povezavo prek omrežja</para
></listitem>
<listitem
><para
>Odjemalec zaključi zahtevo</para
></listitem>
<listitem
><para
>Zahteva je izvršena in končana</para
></listitem>
<listitem
><para
>Objekt prejme sporočilo stop</para
></listitem>
<listitem
><para
>itd</para
></listitem>
</itemizedlist>
<para>
<screenshot>
<screeninfo
>Diagram stanja</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="state-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; prikazuje diagram stanja</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; prikazuje diagram stanja </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="state">
<title
>Stanje</title>
<para
>Stanja so gradniki diagramov stanj. Stanje pripada točno enemu razredu in predstavlja povzetek vrednosti, ki jih lahko imajo atributi razreda. &UML; Stanje opisuje kot notranje stanje objekta enega določenega razreda </para
>                       
<para
>Upoštevajte, da vsaka sprememba enega od atributov predmeta ne bi smela biti predstavljena s stanjem, ampak le tiste spremembe, ki lahko bistveno vplivajo na delovanje objekta</para>
<para
>Obstajata dve posebni vrsti stanj: Začetek in Konec. Posebni so v tem, da ni dogodka, ki bi lahko povzročil vrnitev objekta v njegovo začetno stanje, na enak način kot ni dogodka, ki bi lahko vzel predmet iz njegovega končnega stanja, ko ga je dosegel. </para>
</sect3>

</sect2
> <!-- state diagrams -->

<sect2 id="activity-diagram">
<title
>Diagram dejavnosti</title>
<para
>Diagrami dejavnosti opisujejo zaporedje dejavnosti v sistemu s pomočjo dejavnosti. Diagrami dejavnosti so posebna oblika diagramov stanja, ki vsebujejo samo (ali večinoma) dejavnosti. </para>
<para>
<screenshot>
<screeninfo
>Primer diagrama dejavnosti.</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="activity-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>&umbrello; prikazuje diagram dejavnosti</phrase>
	  </textobject>
	  <caption>
	    <para
>&umbrello; prikazuje diagram dejavnosti </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<para
>Diagrami dejavnosti so podobni proceduralnim diagramom toka, s to razliko, da so vse dejavnosti jasno povezane s predmeti.</para>

<para
>Diagrami dejavnosti so vedno povezani z <emphasis
>Razredom</emphasis
>, <emphasis
>Operacijo</emphasis
> ali <emphasis
>Primerom uporabe</emphasis
>.</para>

<para
>Diagrami dejavnosti podpirajo zaporedne in vzporedne dejavnosti. Vzporedno izvajanje je predstavljeno z ikonami Razcep/Čakaj, za aktivnosti, ki tečejo vzporedno, pa ni pomembno, v kakšnem vrstnem redu se izvajajo (lahko se izvajajo istočasno ali ena za drugo)</para>
<sect3 id="activity">
<title
>Dejavnost</title>
<para
>Dejavnost je en korak v procesu. Ena dejavnost je eno stanje v sistemu z notranjo dejavnostjo in vsaj enim odhodnim prehodom. Dejavnosti imajo lahko tudi več kot en izhodni prehod, če imajo različne pogoje. </para
> 
<para
>Dejavnosti lahko oblikujejo hierarhije, kar pomeni, da je lahko dejavnost sestavljena iz več <quote
>podrobnih</quote
> dejavnosti, v tem primeru se morajo dohodni in odhodni prehodi ujemati z dohodnimi in odhodnimi prehodi podrobnega diagrama. </para>

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

<sect2 id="helper-elements">
<title
>Pomožni elementi</title>
<para
>V &UML; je nekaj elementov. ki nimajo prave semantične vrednosti za model, vendar pomagajo razjasniti dele diagrama. Ti elementi so </para>
<itemizedlist>
<listitem
><para
>Besedilne vrstice</para
></listitem>
<listitem
><para
>Besedilne opombe in sidra</para
></listitem>
<listitem
><para
>Okvirji</para
></listitem>
</itemizedlist
>   
<para
>Besedilne vrstice so uporabne za dodajanje kratkih besedilnih informacij v diagram. To je samostojno besedilo in nima pomena za sam model. </para
>           

<para
>Opombe so uporabne za dodajanje podrobnejših informacij o predmetu ali določeni situaciji. Imajo veliko prednost, da je mogoče zapiske zasidrati v &UML; Elementi, ki kažejo, da opomba <quote
>pripada</quote
> določenemu predmetu ali situaciji. </para>

<para
>Okvirji so samostoječi pravokotniki, ki jih lahko uporabite za združevanje elementov, da so diagrami bolj berljivi. V modelu nimajo logičnega pomena.</para>

<!-- FIXME, screenshot -->
</sect2
> <!-- helper elements -->

<sect2 id="component-diagram">
<title
>Diagrami komponent</title>
<para
>Diagrami komponent prikazujejo komponente programske opreme (bodisi komponente komponent, kot so komponente KParts, CORBA ali Java Beans, ali samo dele sistema, ki so jasno razločljivi) in artefakte, iz katerih so sestavljene, kot so datoteke izvorne kode, programske knjižnice ali tabele relacijske baze podatkov .</para>

<para
>Komponente imajo lahko vmesnike (&ie; abstraktne razrede z operacijami), ki omogočajo povezave med komponentami.</para>
</sect2>

<sect2 id="deployment-diagram">
<title
>Diagrami uvajanja</title>

<para
>Diagrami uvajanja prikazujejo primerke komponent izvajalnega okolja in njihove povezave. Vključujejo vozlišča, ki so fizični viri, običajno en sam računalnik. Prikazujejo tudi vmesnike in objekte (pojavke razreda).</para>

</sect2>

<sect2 id="entity-relationship-diagram">
<title
>Diagrami relacij entitet</title>

<para
>Diagrami relacij entitet (ER diagrami) prikazujejo konceptualno zasnovo aplikacij baze podatkov. Prikazujejo različne entitete (koncepte) v informacijskem sistemu ter obstoječa razmerja in omejitve med njimi. Razširitev diagramov razmerij med entitetami, imenovana 'Diagrami razširjenih razmerij med entitetami' ali 'Izboljšani diagrami odnosov med entitetami' (EER), se uporablja za vključitev tehnik objektno usmerjenega načrtovanja v diagrame ER. </para
> 
<para>
<screenshot>
<screeninfo
>Primer diagrama relacij entitet.</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="entity-relationship-diagram.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Umbrello prikazuje diagram relacij entitet</phrase>
	  </textobject>
	  <caption>
	    <para
>Umbrello prikazuje diagram relacij entitet </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect3 id="entity">
<title
>Entiteta</title>
<para
><emphasis
>Entiteta</emphasis
> je vsak koncept v resničnem svetu z neodvisnim obstojem. Lahko je predmet s fizičnim obstojem (na primer računalnik, robot) ali pa je lahko predmet s konceptualnim obstojem (npr. univerzitetni tečaj). Vsaka entiteta ima nabor atributov, ki opisujejo lastnosti entitete.</para>
<para
><emphasis
>Opomba:</emphasis
> Za prikaz diagramov ER ne obstajajo standardne oznake. Različna besedila na to temo uporabljajo različne zapise. Koncepti in zapisi za diagrame EER, uporabljeni v Umbrellu, so iz naslednje knjige: <emphasis
>Elmasri R. in Navathe S. (2004). Osnove sistemov baz podatkov 4. izdaja. Addison Wesley</emphasis
> </para>
<para
>V diagramu ER so entitete predstavljene s pravokotniki, z imenom entitete na vrhu, lahko pa tudi prikazujejo atribute entitete v drugem <quote
>predelku</quote
> znotraj pravokotnika. </para>
<para>
<screenshot>
<screeninfo
>Entiteta v diagramu ER;</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="entity.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev entitete v diagramu ER</phrase>
	  </textobject>
	  <caption>
	    <para
>Vizualna predstavitev entitete v diagramu ER </para>
	  </caption>
	</mediaobject>
</screenshot>
</para>
<sect4 id="entity-attribute">
<title
>Atributi entitete</title>
<para
>V diagramih ER so atributi entitete prikazani s svojim imenom v drugem razdelku entitete, ki ji pripadajo. </para>
</sect4>
<sect4 id="constraint">
<title
>Omejitve</title>
<para
>Omejitve v diagramih ER določajo omejitve podatkov v informacijski shemi. </para>
<para
>V Umbrellu so podprte štiri vrste omejitev: <itemizedlist>
 <listitem>
    <para
><emphasis
>Primarni ključ:</emphasis
> Niz atributov, deklariranih kot <emphasis
>primarni ključ</emphasis
>, je edinstven za entiteto. V entiteti je lahko samo en primarni ključ in noben od njegovih sestavnih atributov ne sme biti NULL. </para>
</listitem>
 <listitem>
    <para
><emphasis
>Edinstven ključ:</emphasis
> Nabor atributov, ki so deklarirani kot <emphasis
>edinstveni</emphasis
>, je edinstven za entiteto. Za entiteto je lahko veliko edinstvenih omejitev. Njegovi sestavni atributi so lahko NULL. Edinstveni ključi in primarni ključi edinstveno identificirajo vrstico v tabeli (entiteto)</para>
 </listitem>
 <listitem>
    <para
><emphasis
>Tuji ključ:</emphasis
> Tuji ključ je referenčna omejitev med dvema tabelama. Tuji ključ identificira stolpec ali niz stolpcev v eni (sklicevalni) tabeli, ki se nanaša na stolpec ali niz stolpcev v drugi (sklicevani) tabeli. Stolpci v navedeni tabeli morajo tvoriti primarni ključ ali edinstven ključ. </para>
 </listitem>
 <listitem>
     <para
><emphasis
>Omejitev preverjanja:</emphasis
> Omejitev preverjanja (znana tudi kot omejitev preverjanja tabele) je pogoj, ki definira veljavne podatke pri dodajanju ali posodabljanju vnosa v tabeli relacijske baze podatkov. Za vsako vrstico v tabeli se uporabi kontrolna omejitev. Omejitev mora biti predikat. Lahko se nanaša na enega ali več stolpcev tabele. </para>
     <para
>Primer: cena 
>= 0 </para>
 </listitem>
 </itemizedlist>
</para>
</sect4>
</sect3>
</sect2>
<sect2 id="extended-entity-relationship-concepts">
<title
>Koncepti diagrama razširjenega odnosa entitet (EER).</title>
<sect3 id="specialization">
<title
>Specializacija</title>
<para
>Specializacija je način oblikovanja novih entitet z uporabo že definiranih entitet. Nove entitete, znane kot izpeljane entitete, prevzamejo (ali podedujejo) atribute že obstoječih entitet, ki se imenujejo osnovne entitete. Namenjen je pomoči pri ponovni uporabi obstoječih podatkov z malo ali brez sprememb.</para>
<para
>V Umbrellu lahko določite ločeno in prekrivajočo se specializacijo</para>
 <sect4 id="disjoint-specialization">
   <title
>Disjunktna specializacija</title>
   <para
>Disjunktna specializacija določa, da morajo biti podrazredi specializacije ločeni. To pomeni, da je subjekt lahko član največ ene izmed izpeljanih subjektov specializacije</para>
   <para>
   <screenshot>
    <screeninfo
>Subjekti, ki sodelujejo v disjunktni specializaciji</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="disjoint-specialization.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev ločene specializacije v diagramu EER</phrase>
	  </textobject>
	  <caption>
	    <para
>Vizualna predstavitev ločene specializacije v diagramu EER </para>
	  </caption>
	</mediaobject>
   </screenshot>
    </para>
 </sect4>
 <sect4 id="overlapping-specialization">
   <title
>Prekrivajoča specializacija</title>
   <para
>Kadar izpeljane entitete niso omejene na ločenost, se reče, da je njihov niz entitet v prekrivajoči se specializaciji. To pomeni, da je ista entiteta iz resničnega sveta lahko članica več kot ene izpeljane entitete specializacije</para>
   <para>
   <screenshot>
    <screeninfo
>Subjekti, ki sodelujejo pri prekrivajoči se specializaciji</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="overlapping-specialization.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev prekrivajoče se specializacije v diagramu EER</phrase>
	  </textobject>
	  <caption>
	    <para
>Vizualna predstavitev prekrivajoče se specializacije v diagramu EER </para>
	  </caption>
	</mediaobject>
   </screenshot>
  </para>
 </sect4>
 <sect4 id="category">

 <title
>Kategorija</title>
 <para
>Za izpeljano entiteto pravimo, da je <emphasis
>Kategorija</emphasis
>, ko predstavlja zbirko predmetov, ki je podmnožica Unije različnih tipov entitet. Kategorija je modelirana, ko se pojavi potreba po enem samem razmerju nadrazred/podrazred z več kot enim nadrazredom, pri čemer nadrazredi predstavljajo različne tipe entitet. (Podobno kot večkratno dedovanje v objektno usmerjenem programiranju). </para>
   <para>
   <screenshot>
    <screeninfo
>Entitete, ki sodelujejo v razmerju Kategorija</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="category.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Vizualna predstavitev kategorije v diagramu EER</phrase>
	  </textobject>
	  <caption>
	    <para
>Vizualna predstavitev kategorije v diagramu EER</para>
	  </caption>
	</mediaobject>
   </screenshot>
  </para>
 </sect4>

</sect3>
</sect2>

</sect1
> 
</chapter>
