Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna).

Koko: px
Aloita esitys sivulta:

Download "Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna)."

Transkriptio

1 Luokkakaavio (Class diagram) Oliokaavio (Object diagram) Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna). Ikkuna Olio (object) on luokan ilmentymä (instance). Olio esitetään suorakulmiona. Sisään kirjoitetaan olion nimi alleviivattuna (ja sen perään kaksoispisteen jälkeen luokan nimi). Esa Aava : Esa Aava : : Oliomallinnus TITE.2040 Hannu K. Niinimäki 1 Attribuutit (Attribute) Kuvaavat ominaisuuksia, joita luokan olioilla on. Esim. Nimi, Ikä, Paino ovat -luokan olioiden ominaisuuksia. Luokan ilmentymän, olion attribuuteilla on arvot. Esim. -luokan ilmentymän, olion "Esa Aava" attribuutilla ikä on arvo "24". Luokka nimi ikä pituus Olio Esa Aava : nimi = "Esa Aava" ikä = 24 pituus = 187 Oliomallinnus TITE.2040 Hannu K. Niinimäki 2 1

2 Attribuutit tarkemmin Tyyppi (eli määritysjoukko) kuvaa käytössä olevan arvoalueen. Standardityyppi tai itse määritelty Esim. int tai viikonpäivä Näkyvyys kertoo ketkä voivat käsitellä + julkinen (public): vapaasti muidenkin olioiden viitattavissa # suojattu (protected): vain omassa ja jälkeläisten käytössä - yksityinen (private): vain omassa käytössä Luokan ominaisuus kuvataan alleviivauksella Oliomallinnus TITE.2040 Hannu K. Niinimäki 3 Attribuutti-esimerkki Attribuutille voi määritellä alkuarvon. Taulukko-attribuutit voidaan merkitä attribuutin nimen yhteyteen. + nimi : String # ikä : integer - pituus : real + kieli : String = "suomi" # tilinrot [1..*] : integer - maxpit : real Tentti paiva : viikonpaiva pvm : päiväys aika : kellonaika aine : oppiaine kurssi : kurssi ilmoittautuneita: integer Oliomallinnus TITE.2040 Hannu K. Niinimäki 4 2

3 Operaatiot 1 Operaatio on funktio tai muunnos, jonka luokan olio suorittaa tai joka kohdistuu luokan olioon. Esim. Avaa, Sulje, Piilota ja Näytä ovat Ikkuna-luokan operaatioita. Esim. Palkkaa, Irtisano, MaksaOsinkoa ovat Yritys-luokan operaatioita. Luokan kaikilla olioilla on samat operaatiot käytettävissään. Oliomallinnus TITE.2040 Hannu K. Niinimäki 5 Operaatiot 2 Jokaisella operaatiolla on kohdeolio implisiittisenä argumenttinaan. Operaation käyttäytyminen riippuu kohteen luokasta. Olio tietää mihin luokkaan se kuuluu ja näin operaation oikea toteutus on mahdollista. Sama (oikeastaan saman niminen) operaatio voi liittyä useaan eri luokkaan. Tällainen operaatio on monimuotoinen (polymorphic). Oliomallinnus TITE.2040 Hannu K. Niinimäki 6 3

4 Metodit 1 Metodi on luokkaan liittyvän operaation toteutus. Esim. operaation Tulosta metodi (toteutus) riippuu siitä, tulostetaanko ASCII-tiedostoja, binääritiedostoja vai digitoituja kuvia.. Operaatiolla voi olla myös argumentteja; implisiittinen argumenttihan on suoraan kohdeolio. Myös argumentit vaikuttavat käytettävän metodin valintaan. Oliomallinnus TITE.2040 Hannu K. Niinimäki 7 Metodit 2 Koska operaatio voi liittyä useaan eri luokkaa ja siten sillä voi olla useita metodeja, on tärkeää, että kaikilla metodeilla on mahdollisimman pitkälti sama jälki (signature), mikä tarkoittaa, että niillä on (mielellään) sama määrä argumentteja, eri metodien argumentit ovat vastinjärjestyksessä samoja sekä eri metodit antavat tyypiltään saman tuloksen. Jos eri määrä parametreja tai eri tyyppisiä, niin samassa luokassa useita metodeja. -nimi -ikä -pituus +tulosta() +muutanimi() +vanhene() Geometrinen kuvio -muoto -väri -paikka -läpinäkyvyys +siirrä(in o) +kierrä(in kulma) Oliomallinnus TITE.2040 Hannu K. Niinimäki 8 4

5 Linkit ja assosiaatiot 1 Linkki on fyysinen tai käsitteellinen yhteys olioiden välillä: Esim Esa Aava työskentelee Simplex yrityksessä. Assosiaatio kuvaa samanrakenteisten ja samaa semantiikkaa noudattavien linkkien ryhmän. Esim. työskentelee yrityksessä. Assosiaatio kuvaa potentiaalisia linkkejä samalla tavalla kuin luokka kuvaa potentiaalisia olioita. Oliomallinnus TITE.2040 Hannu K. Niinimäki 9 Linkit ja assosiaatiot 2 Assosiaatot ja linkit esiintyvät usein tehtävän sanallisessa määrittelyssä verbeinä. => Assosiaation nimenä on verbi. Esa Aava: työskentelee Simplex: Linkki työskentelee Yritys Assosiaatio Oliomallinnus TITE.2040 Hannu K. Niinimäki 10 5

6 Linkit ja assosiaatiot 3 Assosiaatiot ovat luonteeltaan kaksisuuntaisia. Binäärisen (kaksi osapuolta käsittävän) assosiaation nimi viittaa tavallisesti toiseen mahdollisista lukemissuunnista. Nimen ilmoittamaa suuntaa sanotaan suoraksi suunnaksi ja toista suuntaa vastakkaissuunnaksi. Esim. työskentelee liittää henkilön ja yhtiön toisiinsa. Vastakkainen suunta saadaan nimen työllistää avulla. työskentelee työllistää Yritys Oliomallinnus TITE.2040 Hannu K. Niinimäki 11 Linkit ja assosiaatiot 4 Vaikka assosiaatiot ovat kaksisuuntaisia, niitä ei tarvitse aina toteuttaa molemmansuuntaisina. Jos tarvitaan toisensuuntaista assosiaatiota, toteutus tapahtuu yksinkertaisesti osoitimen (pointer) avulla Analyysivaiheessa ei mietitä suuntia, toteutusta suunniteltaessa kylläkin. Esa Aava: Simplex: Oliomallinnus TITE.2040 Hannu K. Niinimäki 12 6

7 Assosiaation kerrannaisuus Merkitään kuinka monesta luokan oliosta voi olla linkki yhteen assosiaation toisen pään olioon. Merkintätavat (esimerkein): 1 tasan yksi * monta n 0..* nolla tai useampia 0..n 1..* yksi tai useampia 1..n 0..1 nolla tai yksi 2..6 tarkka määrittely 1..3,6,9,12-15 tarkka monimutkainen määrittely Oliomallinnus TITE.2040 Hannu K. Niinimäki 13 Assosiaatioesimerkki Tarkastellaan CAD-sovellusta (computer aided design) Ollaan kiinnostuneita janoista, jotka leikkaavat toisiaan leikkauspisteissä. Oliomallinnus TITE.2040 Hannu K. Niinimäki 14 7

8 Assosiaatioesimerkkejä * * Kaupunki 1 omistaa osakkeita * Yritys työskentelee 1 Yritys Valtio on pääkaupunki 0..1 Monikkoassosiaatio ja -linkki Joskus useampi kohde voi olla keskenään yhteisessä suhteessa => monikkoassosiaatio (n-ary association). Esim henkilöt voivat osallistua samanaikaisesti useampiin projekteihin ja käyttää niissä eri kieliä. Kirjanpito- Java ohjelmisto : :: : Mari :: CAD- C++ ohjelma : :: : Projekti Kieli Oliomallinnus TITE.2040 Hannu K. Niinimäki 16 8

9 Monikkoassosiaatio Assosiaatiolle voidaan antaa nimi, joka kirjoitetaan neliön yhteyteen (neliön sisälle nimi tuskin mahtuu). Nimi voidaan jättää antamatta, jos assosiaatio on tunnistettavissa siihen sisältyvien luokkien avulla. Kolmikkoassosiaatiot ovat tavallisia käytännössä. Nelikköassosiaatiot ja sitä korkeamman kertaluvun assosiaatiot ovat harvinaisia. Huom. Assosiaatio ei ole osa kohdeluokkiaan => luokissa ei attribuutteja sitä varten. Oliomallinnus TITE.2040 Hannu K. Niinimäki 17 Assosiaatioluokat 1 Assosiaatioon voi liittyä attribuutteja. Ne voidaan kuvata assosiaatioluokan (assosiation class) ominaisuuksina. Näin erityisesti monta-moneen assosiaatioissa. /projekti/palkat (read) Ari Aho /projekti/palkat (read,write) Esa Elo /projekti/hinnat (read,write) Ari Aho /projekti/hinnat (read) Esa Elo Tiedosto Käyttäjä käyttöoikeus Oliomallinnus TITE.2040 Hannu K. Niinimäki 18 9

10 Assosiaatioluokat 2 Linkkiattribuutit ovat selvästi linkin ominaisuuksia eikä niitä ole liitettävissä kohdeluokkien ominaisuuksiksi. Yhden suhde yhteen- ja yhden suhde moneen- tyyppisissä assosiaatioissa attribuutit on mahdollista viedä kohdeluokkaan, joka on vastakkainen ykköspuolelle; ei kuitenkaan suositeltavaa. Erityisesti monikkoassosiaatioihin liittyy attribuutteja, joten assosiaatioluokat tyypillisiä. Oliomallinnus TITE.2040 Hannu K. Niinimäki 19 Assosiaatioluokkaesimerkki Suositeltava ja vältettävä tapa -henkilötunnus -nimi -osoite * 1 * 1 Class1 -palkka -työtitteli Yritys -nimi -osoite -henkilötunnus -nimi -osoite -palkka -työtitteli * * Yritys -nimi -osoite Oliomallinnus TITE.2040 Hannu K. Niinimäki 20 10

11 Roolit 1 Rooli tarkentaa assosiaation liittymistä luokkaan. Sen avulla rajataan, missä laajuudessa assosiaatiota tarkastellaan.. työntekijä * työskentelee työnantaja 1 Yritys Oliomallinnus TITE.2040 Hannu K. Niinimäki 21 Roolit 2 Roolin avulla tunnistetaan assosiaation sisältyvästä luokasta ne oliot, jotka liittyvät rooliin. Roolinimiä täytyy käyttää, jos assosiaation kummassakin päässä on sama luokka. esimies 0..1 nimi osoite tt-numero * alainen * työskentelee 1 Yritys nimi osoite liikevaihto johtaa Oliomallinnus TITE.2040 Hannu K. Niinimäki 22 11

12 Roolit 3 Roolinimen käyttö on hyödyllistä, kun luokkaparien välillä vallitsee useita assosiaatioita. Oliomallinnus TITE.2040 Hannu K. Niinimäki 23 Järjestys Jos assosiaation toinen pää on tyyppiä "suhde moneen" ja jos olioilla selvä järjestys, se voidaan kaaviossa ilmoittaa. Tarkastellaan työaseman näyttöä, jossa on useita päällekkäisiä ikkunoita. Ikkunoilla on selvä järjestys. Päällimmäinen ikkuna näkyy kokonaan. Muista ikkunoista näkyy vain ne osat, joita sen päällä olevat eivät satu peittämään. Ikkuna {ordered} * näkyy 1 Näyttö Oliomallinnus TITE.2040 Hannu K. Niinimäki 24 12

13 Huomautus (note) Lisätään malliin täydentävää informaatiota, jota ei voi kuvata varsinaisilla UML-symboleilla. Liitetään haluttuun kohteeseen katkoviivalla. Käytetään moniin eri tarkoituksiin. Oliomallinnus TITE.2040 Hannu K. Niinimäki 25 Rajoitteet 1 Rajoitteen avulla asetetaan rajoituksia olioille, luokille, attribuuttien arvoille, linkeille ja assosiaatioille. Joskus käytetään huomautuksia, joskus erityisiä merkintöjä. Oliomallinnus TITE.2040 Hannu K. Niinimäki 26 13

14 Rajoitteet 2 Joskus assosiaatio on toisen assosiaation alijoukko. Joskus vain toinen assosiaatioista voi olla olemassa Oliomallinnus TITE.2040 Hannu K. Niinimäki 27 Johdetut attribuutuit, luokat ja assosiaatiot Johdettu attribuutti (kuokka, assosiaatio) määräytyy suoraan muista attribuuteista (luokista, assosiaatioista). Käytetään silloin, kun sillä tavoin voidaan helpottaa mallin ymmärtämistä. Edustavat usein tuttuja reaalimaailman käsitteitä. Ilmaistaan kauttaviivan avulla. Johdetun arvon määräytyminen esitetään rajoitteen tavoin aaltosulkujen sisällä Oliomallinnus TITE.2040 Hannu K. Niinimäki 28 14

15 Esimerkkejä johdetuista Attribuutti: Luokka ja assosiaatio Oliomallinnus TITE.2040 Hannu K. Niinimäki 29 Tarkennettu (qualified) assosiaatio Assosiaation suhdeluku voidaan supistaa yhdeksi (tai ainakin pienemmäksi) antamalla erityinen attribuutti, joka tunnistta olion assosiaation sillä puolella, joka on tyyppiä "suhde moneen. Oliomallinnus TITE.2040 Hannu K. Niinimäki 30 15

16 Aggregaatio eli kooste 1 Aggregaatio (kooste) on relaatio, jossa oliot (komponentit) liittyvät kokonaisuutta edustavaan olioon (kokoelmaolioon). Aggregaatio on assosiaation erikoistapaus. Nimenä voi olla "koostuu" ("a-part-of", "has-a"). Lauma Susi Oliomallinnus TITE.2040 Hannu K. Niinimäki 31 Aggregaatio eli kooste 2 On transitiivinen: Jos A on B:n osa, ja B on C:n osa, niin A on C:n osa. On antisymmetrinen: Jos A on B:n osa, niin silloin B ei ole A:n osa. Osa kokoelmaluokan ominaisuuksista siirtyy komponenttiluokan ominaisuuksiksi. Täsmennetään suhdelukusymbolien avulla. Oliomallinnus TITE.2040 Hannu K. Niinimäki 32 16

17 Kompositio eli muodoste Kompositio (muodoste) on relaatio, jossa oliot (komponentit) ovat osa kokonaisuutta edustavaa oliota (kokoelmaoliota). Nimenä voi olla "muodostuu" ("a-part-of", "has-a"). Muodosteen ja koosteen eroa ei aina kuvata vaan käytetään kooste (aggregaatio)-kuvausta. Dokumentti Kappale Lause Merkki Oliomallinnus TITE.2040 Hannu K. Niinimäki 33 Muodoste, kooste ja assosiaatio Kooste (aggregaatio) ja muodoste (kompositio) edustavat vahvaa assosiaatiota, jossa kokoelmaolio käsittää joukon alisteisia olioita, komponentteja. Kokoelmaolio on laajennettu olio, jota voidaan käsitellä kokonaisuutena monissa operaatioissa, vaikkakin se käsittää joukon alisteisia olioita. Joskus on selvää, että assosiaatio on syytä mallintaa aggregaationa tai kompositiona. Jos asia ei tunnu selvältä, kysymyslistat saattavat auttaa päättelemään, onko kysymyksessä kompositio, aggregaatio vai tavallinen assosiaatio. Oliomallinnus TITE.2040 Hannu K. Niinimäki 34 17

18 Assosiaatiokysymyksiä Aggregaatio tai kompositio on kysymyksessä, jos vastaukset ovat myönteisiä, kun kysytään: Voiko assosiaatiota kuvata sanoilla "koostuu", "muodostuu", "sisältää", "on osana"? Kohdistuvatko jotkin operaatiot automaattisesti assosiaation osiin? Kulkeutuvatko jotkin attribuutin arvot kokonaisuudesta kokonaisuuden osiin? Liittyykö assosiaatioon epäsymmetria niin, että toinen on alisteinen toiselle? Oliomallinnus TITE.2040 Hannu K. Niinimäki 35 Koosteen ja muodosteen ero Muodoste: olio syntyy toisen olion komponentiksi kun kokoelmaolio hävitetään, myös siihen muodostesuhteessa olevat oliot häviävät. Komponenttiolio voi olla muodostesuhteessa vain yhteen kokoelmaolioon kerrallaan Oliomallinnus TITE.2040 Hannu K. Niinimäki 36 18

19 Rekursiivinen aggregaatio/kompositio Rekursiivinen aggregaatio/kompositio sisältää suoraan tai epäsuorasti samantyyppisen aggregaation/komposition ilmentymän. Tietokoneohjelman rakenne on hyvä esimerkki rekursiivisesta aggregaatiosta/kompositiosta Oliomallinnus TITE.2040 Hannu K. Niinimäki 37 Yleistäminen ja periytyminen 1 Yleistäminen ja periytyminen ovat keinoja, joiden avulla oliot varustetaan yhteisillä ominaisuuksilla niiden yksilöllisten ominaisuuksien lisäksi. Esim. jokaisella laitteistolla on valmistaja, on paino ja on kustannus. Pumpuilla on myös omia ominaisuuksia kuten imupaine ja virtausnopeus. Säiliöillä on tilavuutensa ja paineensa. Tällöin laitteisto edustaa yhteisiä ominaisuuksia, joista saadaan pumpun, säiliön ja muiden laitteistojen ominaisuudet lisäämällä mukaan niiden omat ominaisuudet. Oliomallinnus TITE.2040 Hannu K. Niinimäki 38 19

20 Yleistäminen ja periytyminen 2 Yleistys on relaatio luokan ja sen kertaalleen tai useampaan kertaan tarkennettujen luokkien välillä. Tarkennettavaa luokkaa sanotaan yliluokaksi (isäntäluokaksi) ja tarkennuksen tuloksena saatuja luokkia aliluokiksi. Esim. Laitteisto on Pumppu- ja Säiliöluokkien yliluokka. Yliluokalle määritellään yhteiset attribuutit ja operaatiot. Ne ovat myös aliluokkien käytettävissä; aliluokat perivät ne. Oliomallinnus TITE.2040 Hannu K. Niinimäki 39 Yleistäminen ja periytyminen 3 Yleistäminen ja periytyminen ovat transitiivisia läpi useamman aliluokkatason. Esi-isäksi (ancestor) ja jälkeläisiksi (descendendants) sanotaan luokkia, joiden välillä vallitsee yleistämisrelaatio läpi mahdollisesti usean aliluokkatason. Aliluokan ilmentymä on samalla sen kaikkien esiisäluokkien ilmentymä. Jälkeläisillä on siten käytettävissään kaikki esi-isiensä attribuutit ja operaatiot. Oliomallinnus TITE.2040 Hannu K. Niinimäki 40 20

21 Yleistäminen ja periytyminen 4 Kaavioon voidaan laittaa yleistyssymbolin oheen erottimia (discriminator) Erotin attribuutti, joka ilmoittaa, minkä ominaisuuden pohjalta yleistäminen tapahtuu. Yleistäminen viittaa luokkien väliseen relaatioon. Periytyminen viittaa mekanismiin, jonka välityksella jälkeläiset saavat käyttöönsä esi-isien attribuutit ja operaatiot. Oliomallinnus TITE.2040 Hannu K. Niinimäki 41 Aggregaatio/kompositio ja yleistäminen Aggreg/kompos. liittää ilmentymiä yhteen. Siinä on kaksi erillistä oliota mukana; toinen on osa toisesta. Yleistäminen liittyy luokkien kuvaamiseen. Sekä yliluokka että aliluokka viittaavat yhden erillisen olion ominaisuuksiin. Yleistämisessä olio on samanaikaisesti sekä yliluokan että aliluokan ilmentymä. Kumpikin johtaa hierarkiseen, puurakenteiseen kuvaustapaan. Oliomallinnus TITE.2040 Hannu K. Niinimäki 42 21

22 Moniperintä (Multiple Inheritance) Moniperinnässä luokalla voi olla useampia yliluokkia. Useamman yliluokan omaavaa luokkaa sanotaan yhdysluokaksi (join class). Ilmaistaan teksti {overlapping}. Oliomallinnus TITE.2040 Hannu K. Niinimäki 43 22