Moniperintä 2 Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Oliomallinnus TITE.2040 Hannu K. Niinimäki 1 Delegointi 1 Moniperinnän toteuttaminen voi olla ongelmallista. Delegoinnissa luokan operaatio siirretään toisen luokan suoritettavaksi. Voidaan käyttää esim. aggregaatiota korvaamaan yleistyksen. Oliomallinnus TITE.2040 Hannu K. Niinimäki 2 1
Delegointi-esimerkki Tiedekunnan jäsen ( opettaja ) voi olla jollakin toisella kurssilla opiskelijana tai opiskelija voi toimia jollakin kurssilla opetustehtävissä. Oliomallinnus TITE.2040 Hannu K. Niinimäki 3 Delegointi 2 Tärkeimmän luokan perintä ja muun delegointi. Oliomallinnus TITE.2040 Hannu K. Niinimäki 4 2
Delegointi 3 Sisäkkäinen yleistäminen. Oliomallinnus TITE.2040 Hannu K. Niinimäki 5 Rajapinnat Usein halutaan kuvata erikseen ulkoiseen käyttäytymiseen liittyviä asioita. Ne voidaan mallintaa erityisenä rajapintaluokkana. Kaikki rajapinnan määrittelemät toiminnallisuudet toteutetaan sitä noudattavissa luokissa. Toiminnallisuus voidaan ottaa käyttöön rajapinnan kautta. Kuvataan sanalla <<interface>> (<<rajapinta>>) tai pallona. Oliomallinnus TITE.2040 Hannu K. Niinimäki 6 3
Rajapinta-esimerkki Oliomallinnus TITE.2040 Hannu K. Niinimäki 7 Abstrakti luokka Luokka, jonka metodeista ainakin yksi on abstrakti. Abstraktin metodin olemassaolo määritellään, mutta ei toteutusta. Abstraktista luokasta ei voida tehdä oliota. Aliluokista, jotka toteuttavat abstraktiksi määritellyt metodit, voidaan. Kuvataan kallistamalla luokan nimi. Realisointi tarkoittaa, että jokin luokka toteuttaa rajapinnan (tai toisen luokan) määrittelemän toiminnan. Oliomallinnus TITE.2040 Hannu K. Niinimäki 8 4
Pakkauskaavio (Package Diagram) Kun halutaan ryhmitellä minkä tahansa kaaviotyypin kuvauksia (esim luokkia) siten, että toisiinsa läheisesti liittyvät ovat samassa pakkauksessa. Oliomallinnus TITE.2040 Hannu K. Niinimäki 9 Sijoittelukaavio (Deployment diagram) Fyysisten laitteiden välisten yhteyksien kuvamiseen Oliomallinnus TITE.2040 Hannu K. Niinimäki 10 5
Komponenttikaavio (component diagram) Esim ohjelmistokomponenttien kuvaamiseen. Oliomallinnus TITE.2040 Hannu K. Niinimäki 11 Olioiden välinen viestintä Tapahtumat (events) 1 Ulkoiset tapahtumat aiheuttavat muutoksia järjestelmässä (oliossa). Tapahtuma Vaikuttaa järjestelmään; järjestelmän on reagoitava tapahtumaaan. Sattuu selvästi tunnistettavana ajan hetkenä. On hetkellinen eli sillä ei katsota olevan ajallista kestoa. Esim. "käyttäjä painaa vasemmanpuoleista nappia" tai "Lento 123 lähtee Chicagoon". Oliomallinnus TITE.2040 Hannu K. Niinimäki 12 6
Tapahtumat 2 Tapahtuma voi edeltää tai seurata ajallisesti toista tapahtumaa, tai tapahtumat voivat olla toisistaan riippumattomia. Lennon 123 täytyy lähteä Chicagosta ennen, kuin se voi saapua San Franciscoon. Tapahtumien välillä on kausaali- (syy-seuraus)suhde. Lento 123 voi lähteä ennen lentoa 456 Roomaan tai sitten sen jälkeen. Tapahtumien välillä ei ole kausaalisuhdetta. Tapahtumat ovat riippumattomia. Oliomallinnus TITE.2040 Hannu K. Niinimäki 13 Tapahtumat 3 Edustaa yhdensuuntaista tiedonvälitystä olioiden kesken. Poikkeaa metodikutsusta, joka saattaa palauttaa arvoja käsittelyn tuloksena. Kun olio lähettää tapahtuman toiselle oliolle, se voi odottaa vastausta tapahtumaan. Vastaus on kuitenkin toinen tapahtuma, josta toinen olio on vastuussa ja sen valittavissa on, lähettääkö se vastauksen vai jättääkö lähettämättä. Voivat liittyä myös virhetilanteisiin. Esim. "moottori juuttui kiinni", "käsittely keskeytetty" ja "time-out" Oliomallinnus TITE.2040 Hannu K. Niinimäki 14 7
Tapahtumaluokat 1 Samankaltaisten tapahtumien kuvaus. Luokka: lentoneen lähdöt, attribuutit: lennon numero lähtöaika lähtöpaikka saapumispaikka Tapahtumaolio: Lento AY-835, lähtee Helsingistä Pariisiin klo 17.30. Attribuutit välittävät tapahtuman mukana tietoa. Signaalit eivät sisällä attribuuttitietoa. Oliomallinnus TITE.2040 Hannu K. Niinimäki 15 Tapahtumasekvenssi Tapahtumasekvenssi on jono tapahtumia, jotka sattuvat järjestelmän yhden suorituskerran aikana. Laajuus voi vaihdella. Voi sisältää kaikki järjestelmässä esiintyvät tapahtumat tai joihinkin olioihin kohdistuvat tapahtumat tai sitten joidenkin olioiden muodostamat tapahtumat. Käytetään usein apuna ajateltua järjestelmää hahmoteltaessa. Oliomallinnus TITE.2040 Hannu K. Niinimäki 16 8
Puhelimen käytön tapahtumasekvenssi. Oliomallinnus TITE.2040 Hannu K. Niinimäki 17 Tapahtumasekvenssikaavio Sequence diagram Tunnetaan myös nimillä sekvenssikaavio ja viestiyhteyskaavio. Liittää tapahtumat, metodikutsut ja kutsujen paluuviestit olioihin. Pystyviivoin kuvataan olioita, vaakaviivoin (nuolin) olioiden välisiä viestejä. Viestit esitetään aikajärjestyksessä ylhäältä alas Oliomallinnus TITE.2040 Hannu K. Niinimäki 18 9
Perusmerkinnät : Luok1 : Luok2 Signaali Kutsu1(param) Aika Kutsu2(param) Paluuarvo Viesti Oliomallinnus TITE.2040 Hannu K. Niinimäki 19 Esimerkki Oliomallinnus TITE.2040 Hannu K. Niinimäki 20 10
Lisämahdollisuuksia Kaaviolla voidaan korostaa olion elinaika (luonti, häviäminen). Tapahtumat voivat olla ehdollisia. Olio voi kutsua myös itseään (rekursio). Tehtävien tekemiseen kuluva aika voidaan kuvata. Oliomallinnus TITE.2040 Hannu K. Niinimäki 21 Lisämahdollisuudet kaaviona Oliomallinnus TITE.2040 Hannu K. Niinimäki 22 11