Johdatus sovellussuunnitteluun, s 2001, osa 4b Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokkakaavion tarkoitus

Samankaltaiset tiedostot
Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus

Luokkakaavion laatiminen

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 ER-mallin peruskäsitteet.

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen luokkamallin laatiminen

Johdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta

Johdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Olioiden yhteistoiminta

Ohjelmistojen mallintaminen luokkamallin laatiminen

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Mitä on periytyminen?

Luokkakohtaiset eli stattiset metodit ja attribuutit

Johdatus sovellussuunnitteluun osa 2

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

UML - unified modeling language

Nimi: Henkilötunnus: {id} {+id}

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

Liiketoimintaprosessin kuvaus (esim. osapuolten välisenä yhteistyökaaviona) Sidosryhmäkaavio. karkea keskeistä tietosisältöä kuvaava luokkakaavio

1. Tarkastellaan seuraavaa kaaviota

Ohjelmistojen mallintaminen kertausta Harri Laine 1

UML - unified modeling language - use cases

Johdatus sovellussuunnitteluun

3. Käsiteanalyysi ja käsitekaavio

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Yhteistoimintakaavio (Esimerkki)

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

9. Periytyminen Javassa 9.1

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokannan suunnittelusta Harri Laine 1

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

Olioperustaisuus (object oriented)

Ohjelmistotekniikan menetelmät, kevät 2008

Kertaus: yleistys-erikoistus ja perintä

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistojen mallintaminen. Luento 7,

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Luokka- ja oliokaaviot

HELIA 1 (17) Outi Virkki Tiedonhallinta

UML- mallinnus: Tilakaavio

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Tietokannan suunnittelu

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2004 Tietokannan suunnittelusta. Harri Laine 1

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät, kesä 2008

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

Ohjelmistojen mallintaminen, mallintaminen ja UML

9. Periytyminen Javassa 9.1

Ohjelmistotekniikan menetelmät

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Johdatus sovellussuunnitteluun, s2001, osa 4a Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokka- ja oliokaaviot

Ohjelmistotekniikan menetelmät, koe

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

Palvelun versio 1.0 Toimeenpanopalvelun tunnus (ks. M ) 10fea, 9c2f, 4760, 9095, f4f9295f4b19

1. Olio-ohjelmointi 1.1

opiskelun suunnittelujärjestelmä, kurki ja ilmo käyttävät kaikki samaa tietokantaa, ja uusi järjestelmä tulee osaksi tätä.

Analyysi on tulkkaamista

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Ohjelmistojen suunnittelu

HELIA 1 (20) Outi Virkki Tiedonhallinta

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen, kertausta

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Antti-Jussi Lakanen Ohjelmointi 1, C# / kevät 2011

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

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

Oliotietokannat. Nääsvillen Oliopäivät Pekka Kähkipuro Kehitysjohtaja, FT

Ohjelmistojen mallintaminen Olioperustainen ohjelmistomalli Harri Laine 1

Transkriptio:

Luokkakaavion tarkoitus Järjestelmän tietosisällön kuvaaminen: tiedot ja niiden väliset kytkennät järjestelmän tiedot kuvaavat kohdealueiden ilmiöitä, joten luokkakaavion tulisi määritellä kohdealueen rakenne Luokkakaavion tarkoitus Ohjelman rakenteen kuvaaminen: tiedot ja niiden väliset kytkennät tietojen yhteys toimintaan Olio-ohjelman idea on usein simuloida vastaavaa reaalimaailman (kohdealueen) ilmiötä, joten luokat löytyvät reaalimaailmaa analysoimalla. Kohdealueen rakenteen mukaiset luokat muodostavat tällöin ohjelman luokkarakenteen ytimen. Luokkakaavion laatiminen Kokonaisvaltainen lähestymistapa: pyritään löytämään kerralla koko kohdealuetta kuvaava malli hankalaa, jos kohdealue on laaja ensin karkea yleiskuva, sitten lisää yksityiskohtia Osista kokonaisuuteen: jaetaan kokonaisuus osiin ja tehdään osakohtaisia malleja, jotka sitten yhdistetään kokonaismalliksi osa voisi olla käyttötapaus yksityiskohdista yleiskuvaan Luokkakaavion laatiminen Kartoita luokkaehdokkaita. Karsi ehdokkaita. Tunnista olioiden väliset yhteydet. Täsmennä luokkakuvauksia määrittelemällä attribuutit. Määrittele yhteyksiin liittyvät osallistumisrajoitteet. Liitä luokkiin palvelut. Varmista palvelujen ja tietosisällön yhteensopivuus. Kartoita luokkaehdokkaita Laadi luettelo tarkasteltavan ilmiön kannalta keskeisistä kohteista tai ilmiöistä, jotka voisivat tulla kyseeseen luokkina tai olioina: osallistujat, toiminnan kohteet, toimintaan liittyvät tapahtumat, materiaalit, tuotteet ja välituotteet, toiminnalle edellytyksiä luovat asiat. Kartoita luokkaehdokkaita Kartoituksen pohjana voi käyttää vapaamuotoista tekstikuvausta tarkasteltavasta ilmiöstä. Kuvauksesta alleviivataan luokkaehdokkaita ja kerätään ne luetteloon. Luokkaehdokkaat esiintyvät kuvauksessa usein substantiiveina. Verbit voivat ilmaista yhteyksiä. Alustavaa karsintaa voi tehdä sen perusteella, onko asia lainkaan oleellinen mallinnettavan ilmiön kannalta. Harri Laine / Inkeri Verkamo 1

Karsi ehdokkaita Löydetyt ehdokkaat käydään läpi ja arvioidaan, voisiko ehdokas tulla kyseeseen luokkana. Liittyykö luokan ilmentymiin tietosisältöä, joka on välttämätöntä järjestelmän kannalta (yleensä on oltava useita attribuutteja)? Tarvitaanko tietoa ilmentymien olemassaolosta? Onko asia riittävän tärkeä kohdealueen kannalta? Karsitaan synonyymit. Karsintaa ja ehdokkaiden kartoitusta voidaan joutua tekemään iteratiivisesti. Ensimmäinen karsintakierros ei välttämättä tuota lopullista tulosta. Tunnista yhteydet Yhteyksiä (ilmentymien välillä) voi etsiä vapaamuotoisesta kuvauksesta: verbit genetiivit muut ilmaukset, jotka kuvaavat kytkentää Yhteyksienkin suhteen tulisi miettiä onko yhteys oleellinen tarkasteltavan ilmiön kannalta? onko se rakenteellinen? Asia pitäisi esittää vain kertaalleen: johdettavissa olevat yhteydet? karsitaan tai merkitään Älä piilota yhteyksiä attribuuteiksi! Määrittele attribuutit Attribuutteja saattaa löytyä vapaamuotoisesta kuvauksesta. Yleensä niiden löytäminen edellyttää lisäselvityksiä kohdealueesta, esimerkiksi toiminnan osapuolten haastatteluja. Attribuuttien kohdalla pitäisi myös selvittää, mihin niitä tarvitaan. Ja uudelleen: Älä piilota yhteyksiä attribuutteihin! Määrittele osallistumisrajoitteet Osallistumisrajoitteiden avulla ilmaistaan rakenteellisia sääntöjä. Säännöt eivät välttämättä tule esiin vapaamuotoisessa kuvauksessa, vaan edellyttävät tarkempaa kohdealueen analysointia. Yhteyden piilottaminen Sama asia kahteen kertaan Osaston nimi Osasto Osaston nimi osasto Osasto osaston nimi osasto Osasto Osaston nimi osasto Osasto osaton nimi Harri Laine / Inkeri Verkamo 2

Puutarhatonttu esimerkki Käyttötapaukset määrittelevät toiminnalliset vaatimukset järjestelmälle, mutta ne asettavat vaatimuksia myös järjestelmän tietosisällölle, koska toiminnot edellyttävät tietojen olemassaoloa. Eräs tapa järjestelmän sisältöluokkien suunnitteluun on tehdä suunnittelu käyttötapauksittain ja sitten yhdistää käyttötapauskohtaiset mallit. Lähtökohtana käyttötapaukset: Mitä tietoja ja tietokokonaisuuksia tarvitaan käyttötapauksen hoitamiseksi? Jokaisen käyttötapauksen perusteella laaditaan käyttötapauskohtainen näkymä tarvittavista tiedoista, eli pelkästään käyttötapauksen tarpeet huomioon ottava luokkakaavio. Näkymät yhdistetään sisällön kokonaismallin aikaansaamiseksi. KT-1 KT-i KT-n Näkymä-1 Näkymä-i Näkymä-n integrointi Koottu malli Käyttötapauksittain sisältömallia muodostettaessa saadaan ainakin periaatteessa malliin mukaan kaikki käyttötapauksen tarvitsemat tiedot. Käyttötapausmallin ja tietosisältömallin yhteensopivuuden varmistamiseksi voidaan käyttää riippuvuusmatriisia. Kampaamoesimerkki Harri Laine / Inkeri Verkamo 3

Riippuvuusmatriiseja: Luokat ja yhteydet / käyttötapaukset Matriisin alkiona riippuvuustieto: luo, muuttaa, poistaa, käyttää Matriisit voidaan esittää myös attribuuttitasolla, jolloin näkyisi attribuuttien käsittely. Tällöin matriisit on kuitenkin syytä pilkkoa luokkakohtaisiksi. Käyttötapaukset Uusi artikkeli Uusi artikkeliversio Tiedustelu artikkelin tilasta Lausunnonantajan valinta Lausunnon saapuminen Muistutus lausunnosta Puuttumaan jäänyt lausunto Valituksen käsittely Julkaisupäätöksen kirjaus Palautus korjattavaksi Julkaistavaksi hyväksymine Hylkääminen Viimeistellyn saapuminen Oikovedoksen lähettäminen Korjausten vastaanotto Eripainosten tilaus tietojen rekisteröinti Sisällysluettelo Vuosikertatiedot www-sivut Raportit Olioluokat Article L M K K K K K K M M M M M M M K K K K K Article version L L K M K K K M M M M M K Person X X X K K K K K K K K X K Reference K L M M M M K Journal L K K K K= Käyttää, L = Luo, M= Muuttaa, P= Poistaa, X=Luo tai muuttaa Jokaiselle luokalle ja yhteydelle täytyisi löytyä käyttötapaus, jolla voidaan luoda luokan ilmentymiä ja kytkeä olioita ko. yhteyteen. Jokaiselle luokalle ja yhteydelle täytyisi löytyä käyttötapaus, joka hyödyntää luokan tietoja ja yhteyksiä. Jos ilmentymät eivät ole ikuisia, pitää löytyä käyttötapaus, jolla hävitetään ilmentymiä. Jos ilmentymän tietosisältö ei ole muuttumaton, pitää löytyä käyttötapaus, jolla tietosisältöä voidaan muuttaa. Jos osapuoli voidaan irroittaa yhteydestä, täytyy tähän tarkoitukseen löytyä käyttötapaus. Toisaalta jokaisen käyttötapauksen täytyy jollain tavoin liittyä sisältöluokkiin. Luokkia määrittelemällä luodaan luokitusjärjestelmä. Eri menetelmät asettavat erilaisia vaatimuksia luokitusjärjestelmälle: joissakin edellytetään, että luokat ovat erillisiä (ei yhteisiä ilmentymiä) toisissa sallitaan päällekkäisyys (yhteiset ilmentymät) ssa luokka voidaan määritellä toisen luokan alaluokaksi esim. luokka on luokan alaluokka luokka on luokan alaluokka luokat auto, laiva ja lentokone ovat luokan kulkuväline alaluokkia Harri Laine / Inkeri Verkamo 4

Jos luokka A on luokan B alaluokka, siitä seuraa, että jokainen A:n ilmentymä on myös B:n ilmentymä. jokainen on myös Tästä taas seuraa, että kaikki attribuutit, palvelut ja yhteydet, jotka on määritelty luokan B ilmentymille, liittyvät myös A:n ilmentymiin. Jos lle on määritelty attribuutti Nimi, niin myös lla on automaattisesti Nimiattribuutti. Jos on määritelty osapuoleksi työsuhde-yhteyteen, myös voi olla osapuolena työsuhde-yhteydessä. Tätä ilmiötä kutsutaan periytymiseksi (inheritance). Periytymisessä yläluokkaan liitetyt attribuutit, palvelut ja yhteydet periytyvät alaluokalle. Yläluokan ja alaluokan välinen riippuvuussuhde kuvataan kaaviossa: Huom. periytyminen on luokkien välistä määrittelyjen periytymistä - ilmentymät eivät peri mitään toisilta ilmentymiltä. Alaluokka Yläluokka Johtaja Alaluokkaan voidaan liittää yläluokalta perittyjen attribuuttien, palvelujen ja yhteyksien lisäksi omia attribuutteja, yhteyksiä ja palveluja. Johtajalla on ominaisuudet vastuualue ja alaisten määrä, joita ei ole llä yleisesti. Vain lla voi olla oikeus käyttää edustustiliä. Johtajalla voi olla alaisia. 1 Johtaja vastuualue alaisten määrä 0..* Käyttöoikeus 0..1 alainen 0..* Edustustili Harri Laine / Inkeri Verkamo 5

Alaluokkaan voidaan liittää uusia palveluita, joita yläluokalla ei ole. Alaluokassa voidaan myös syrjäyttää (override) yläluokassa määritelty palvelu. Syrjäyttäminen on sisällön uudelleenmäärittelyä. llä voisi olla palvelu viikkoraportti: kerro ajankäyttö työtehtäviin Johtajan viikkoraportti-palvelun sisältö voisi olla: kerro ajankäyttö työtehtäviin laadi yhteenveto alaisten viikkoraporteista raportoi edustustilin käyttö Syrjäyttäminen on erityisesti olioohjelmoinnissa hyödyllinen tekniikka. Olio-ohjelmoinnin merkittävimmät hyödyt tulevat esiin juuri syrjäyttämismahdollisuuden kautta: muokattavat kirjastopalvelut yksinkertaisemmat ohjelmat Tilannetta, jossa luokka on useamman kuin yhden luokan välitön alaluokka, kutsutaan moniperiytymiseksi (multiple inheritance). Kaikki olio-ohjelmointikielet eivät tarjoa moniperintää (esim. Javassa ei ole, C++:ssa on). Järjestelmää mallinnettaessa luokkahierarkiasta on eniten hyötyä: sääntöjen ilmaisemisessa kuvauksen ekonomisuudessa (ei tarvitse toistaa samoja asioita useassa luokassa) kenraali sotilas Esimerkki säännöistä: Autolla täytyy olla omistaja. Omistaja voi olla yritys tai. Ellei yläluokkaa käytettäisi: mahdollinen omistaja 1..* 0..* auto yritys 0..* 0..* yritysomistus auto 0..* yritys Voiko autolla olla - sekä yritys- että omistaja? - nolla omistajaa? omistus 0..* Harri Laine / Inkeri Verkamo 6

Aliluokkia voidaan muodostaa monin erilaisin perustein. erillisin perustein muodostettuja aliluokkia Samaan luokitteluperusteeseen perustuvat poissulkevat luokat. overlaps ehto mies Kun reaalimaailmassa luokitellaan ilmiöitä, voidaan käyttää samanaikaisesti useita erilaisia luokitteluperusteita: sukupuoli, kengännumero, virka-asema, auton omistus, jne. Monissa oliomenetelmissä ja olio-ohjelmointikielissä ollaan paljon rajoittuneempia. overlaps Reaalimaailmassa olio voi olla usean luokan välitön ilmentymä. Liisa nais Olio-ohjelmointikielissä olio ei yleensä voi olla usean luokan välitön ilmentymä. Liisa Oliokielissä olio on vain yhden luokan välitön ilmentymä. Liisa Harri Laine / Inkeri Verkamo 7

Edellinen tilanne johtuu siitä, että olioohjelmoinnissa olio on esiteltävä johonkin (yhteen) luokkaan kuuluvaksi ja tämä luokka perii vain yläluokkiensa ominaisuudet. Kohdealueen analyysin kannalta rakenne on kömpelö. Harri Laine / Inkeri Verkamo 8