# &UML; Osnove

## O &UML;

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.

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 (OMG) in je industrijski standard za grafično opisovanje programske opreme.

&UML; je zasnovan za objektno usmerjeno načrtovanje programske opreme in ima omejeno uporabo za druge paradigme programiranja.

&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:

- Diagrami primerov uporabe prikazujejo akterje (ljudje ali druge uporabnike sistema), primere uporabe (scenarije, ko uporabljajo sistem), in njihove odnose

- Diagrami razredov prikazujejo razrede in razmerja med njimi

- Diagrami zaporedij prikazujejo objekte in zaporedje klicev metod, ki jih opravijo drugim objektom.

- Diagrami sodelovanja prikazujejo predmete in njihov odnos, s poudarkom na objektih, ki sodelujejo pri izmenjavi sporočil

- Diagrami stanj prikazujejo stanja, spremembe stanja in dogodke v objektu ali delu sistema

- Diagrami dejavnosti prikazujejo dejavnosti in spremembe ene dejavnosti v drugo z dogodki, ki se zgodijo v nekem delu sistema

- Diagrami komponent prikazujejo komponente programiranja na visoki ravni (kot so KParts ali Java Beans).

- Diagrami uvajanja prikazujejo primerke komponent in njihove odnose.

- Diagrami odnosov entitet prikazujejo podatke ter razmerja in omejitve med podatki.

## &UML; Elementi

### Diagram primerov uporabe

Diagrami primerov uporabe opisujejo razmerja in odvisnosti med skupino primerov uporabe in akterji, ki sodelujejo v procesu.

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, kaj naj bi sistem naredil, vendar ne — in ne more — navesti kako naj bi to dosegli.

Primer diagrama primerov uporabe. &umbrello; prikazuje diagram primerov uporabe

&umbrello; prikazuje diagram primerov uporabe

#### Primer uporabe

Primer uporabe opisuje — z vidika akterjev — skupina dejavnosti v sistemu, ki proizvaja konkreten, otipljiv rezultat.

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

Pri delu s primeri uporabe si je pomembno zapomniti nekaj preprostih pravil:

- Vsak primer uporabe je povezan z vsaj enim akterjem

- Vsak primer uporabe ima pobudnika (&ie; akterja)

- Vsak primer uporabe vodi do ustreznega rezultata (rezultata s poslovno vrednostjo)

Primeri uporabe so lahko povezani tudi z drugimi primeri uporabe. Tri najbolj značilne vrste odnosov med primeri uporabe so:

- <<vsebuje>>, ki določa, da se primer uporabe odvija znotraj drugega primera uporabe

- <<razširja>>, 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.

- Posplošitev določa, da primer uporabe podeduje značilnosti primera super uporabe in lahko preglasi nekatere izmed njih ali doda nove na podoben način kot dedovanje med razredi.

#### Akter

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.

Akterji ne predstavljajo fizičnih ljudi ali sistemov, temveč njihovo vlogo. 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 Podporno osebje in akter Prodajni zastopnik

#### Opis primera uporabe

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.

### Diagram razreda

Diagrami razredov prikazujejo različne razrede, ki sestavljajo sistem, in kako so povezani drug z drugim. Za diagrame razredov pravimo, da so statični diagrami, ker prikazujejo razrede, skupaj z njihovimi metodami in atributi ter statične odnose med njimi: kateri razredi vedo o katerih razredih oz. kateri razredi so del drugega razreda, vendar ne prikazujejo klicev metod med njimi.

Primer diagrama razredov &umbrello; prikazuje diagram razredov

&umbrello; prikazuje diagram razredov

#### Razred

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 Vrsta se včasih uporablja namesto Razred, vendar je pomembno omeniti, da ta dva izraza nista ista in da je Vrsta bolj splošen izraz.

V &UML; so razredi predstavljeni s pravokotniki z imenom razreda in lahko prikazujejo tudi atribute in operacije razreda v dveh drugih predelih znotraj pravokotnika.

Razred v &UML; Vizualna predstavitev razreda v &UML;

Vizualna predstavitev razreda v &UML;

##### Lastnosti

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:

- `+` pomeni javne atribute

- `#` pomeni zaščitene atribute

- `-` pomeni zasebne atribute

##### Operacije

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:

- `+` pomeni javne operacije

- `#` pomeni zaščitene operacije

- `-` Označuje zasebne operacije

##### Predloge

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.

#### Asociacije razredov

Razredi so lahko med seboj povezani (asociirani) na različne načine:

##### Posploševanje

Dedovanje je eden od temeljnih konceptov objektno orientiranega programiranja, v katerem razred pridobi vse atribute in operacije razreda, ki ga podeduje, in lahko preglasi/spremeni nekatere od njih ter doda več lastnih lastnosti in operacij.

V &UML; je Posplošitev 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. Posploševanje Vizualna predstavitev posplošitve v &UML;

Vizualna predstavitev posplošitve v &UML;

##### Asociacije

Asociacija predstavlja razmerje med razredi in daje skupno semantiko in strukturo za številne vrste povezav med objekti.

Asociacije so mehanizem, ki omogoča objektom medsebojno komunikacijo. Opisuje povezavo med različnimi razredi (povezava med dejanskimi objekti se imenuje povezava objektov ali povezava.

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.

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 (`*`) na največji strani predstavlja neskončnost. &UML; Asociacija Vizualna predstavitev asociacije v &UML;

Vizualna predstavitev asociacije v &UML;

##### Agregacija

Agregacije so posebna vrsta asociacij, v katerih dva sodelujoča razreda nimata enakega statusa, ampak tvorita razmerje celo-del. 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.

V &UML; so agregacije predstavljene z asociacijo, ki prikazuje romb na strani celote. Agregacija Vizualna predstavitev razmerja agregacije v &UML;

Vizualna predstavitev razmerja agregacije v &UML;

##### Sestava

Sestave so asociacije, ki predstavljajo zelo močne 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.

V &UML; so sestave predstavljene s polnim rombom ob strani celote.

Sestava Vizualna predstavitev razmerja Sestava v &UML;

#### Druge postavke diagrama razredov

Diagrami razredov lahko poleg razredov vsebujejo še več drugih elementov.

##### Vmesniki

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.

##### Podatkovni tipi

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.

##### Naštevanja

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.

##### Paketi

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.

### Diagrami zaporedja

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.

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.

Diagram zaporedja &umbrello; prikazuje diagram zaporedja

&umbrello; prikazuje diagram zaporedja

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.

### Diagrami sodelovanja

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.

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.

Sodelovanje &umbrello; prikazuje diagram sodelovanja

&umbrello; prikazuje diagram sodelovanja

### Diagram stanja

Diagrami stanj prikazujejo različna stanja objekta v njegovem življenju in dražljaje, ki povzročijo, da objekt spremeni svoje stanje.

Diagrami stanja objekte obravnavajo kot stanje strojev 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 NetServer je lahko v svojem življenju v enem od naslednjih stanj:

- Pripravljen

- Poslušanje

- Delovanje

- Ustavljen

in dogodki, ki lahko povzročijo spremembo stanja objekta, so

- Objekt je ustvarjen

- Objekt prejme poslušanje sporočila

- Odjemalec zahteva povezavo prek omrežja

- Odjemalec zaključi zahtevo

- Zahteva je izvršena in končana

- Objekt prejme sporočilo stop

- itd

Diagram stanja &umbrello; prikazuje diagram stanja

&umbrello; prikazuje diagram stanja

#### Stanje

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

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

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.

### Diagram dejavnosti

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.

Primer diagrama dejavnosti. &umbrello; prikazuje diagram dejavnosti

&umbrello; prikazuje diagram dejavnosti

Diagrami dejavnosti so podobni proceduralnim diagramom toka, s to razliko, da so vse dejavnosti jasno povezane s predmeti.

Diagrami dejavnosti so vedno povezani z Razredom, Operacijo ali Primerom uporabe.

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)

#### Dejavnost

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.

Dejavnosti lahko oblikujejo hierarhije, kar pomeni, da je lahko dejavnost sestavljena iz več podrobnih dejavnosti, v tem primeru se morajo dohodni in odhodni prehodi ujemati z dohodnimi in odhodnimi prehodi podrobnega diagrama.

### Pomožni elementi

V &UML; je nekaj elementov. ki nimajo prave semantične vrednosti za model, vendar pomagajo razjasniti dele diagrama. Ti elementi so

- Besedilne vrstice

- Besedilne opombe in sidra

- Okvirji

Besedilne vrstice so uporabne za dodajanje kratkih besedilnih informacij v diagram. To je samostojno besedilo in nima pomena za sam model.

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 pripada določenemu predmetu ali situaciji.

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

### Diagrami komponent

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 .

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

### Diagrami uvajanja

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

### Diagrami relacij entitet

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.

Primer diagrama relacij entitet. Umbrello prikazuje diagram relacij entitet

Umbrello prikazuje diagram relacij entitet

#### Entiteta

Entiteta 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.

Opomba: 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: Elmasri R. in Navathe S. (2004). Osnove sistemov baz podatkov 4. izdaja. Addison Wesley

V diagramu ER so entitete predstavljene s pravokotniki, z imenom entitete na vrhu, lahko pa tudi prikazujejo atribute entitete v drugem predelku znotraj pravokotnika.

Entiteta v diagramu ER; Vizualna predstavitev entitete v diagramu ER

Vizualna predstavitev entitete v diagramu ER

##### Atributi entitete

V diagramih ER so atributi entitete prikazani s svojim imenom v drugem razdelku entitete, ki ji pripadajo.

##### Omejitve

Omejitve v diagramih ER določajo omejitve podatkov v informacijski shemi.

V Umbrellu so podprte štiri vrste omejitev:

- Primarni ključ: Niz atributov, deklariranih kot primarni ključ, je edinstven za entiteto. V entiteti je lahko samo en primarni ključ in noben od njegovih sestavnih atributov ne sme biti NULL.

- Edinstven ključ: Nabor atributov, ki so deklarirani kot edinstveni, 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)

- Tuji ključ: 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č.

- Omejitev preverjanja: 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.

  Primer: cena >= 0

### Koncepti diagrama razširjenega odnosa entitet (EER).

#### Specializacija

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.

V Umbrellu lahko določite ločeno in prekrivajočo se specializacijo

##### Disjunktna specializacija

Disjunktna specializacija določa, da morajo biti podrazredi specializacije ločeni. To pomeni, da je subjekt lahko član največ ene izmed izpeljanih subjektov specializacije

Subjekti, ki sodelujejo v disjunktni specializaciji Vizualna predstavitev ločene specializacije v diagramu EER

Vizualna predstavitev ločene specializacije v diagramu EER

##### Prekrivajoča specializacija

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

Subjekti, ki sodelujejo pri prekrivajoči se specializaciji Vizualna predstavitev prekrivajoče se specializacije v diagramu EER

Vizualna predstavitev prekrivajoče se specializacije v diagramu EER

##### Kategorija

Za izpeljano entiteto pravimo, da je Kategorija, 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).

Entitete, ki sodelujejo v razmerju Kategorija Vizualna predstavitev kategorije v diagramu EER

Vizualna predstavitev kategorije v diagramu EER