Luokkakaavion laatiminen

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

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

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen, sekvenssikaaviot

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

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

Olioiden yhteistoiminta

Johdatus sovellussuunnitteluun

Johdatus sovellussuunnitteluun

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

Luokkakohtaiset eli stattiset metodit ja attribuutit

UML - unified modeling language

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

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

Mitä on periytyminen?

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

Olioperustaisuus (object oriented)

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

Johdatus sovellussuunnitteluun

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

1. Olio-ohjelmointi 1.1

1. Tarkastellaan seuraavaa kaaviota

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistotekniikan menetelmät, UML

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

Kertaus: yleistys-erikoistus ja perintä

Ohjelmistojen mallintaminen. Luento 7,

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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

Olioiden yhteistyön mallintaminen

9. Periytyminen Javassa 9.1

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

Luokka- ja oliokaaviot

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

Ohjelmistotekniikan menetelmät, koe

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Ohjelmistojen mallintaminen, mallintaminen ja UML

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

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

Ohjelmistojen mallintaminen luokkamallin laatiminen

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Ohjelmistojen mallintaminen. Luento 3, 9.11.

Ohjelmistojen mallintaminen luokkamallin laatiminen

Ohjelmistojen mallintaminen. Luento 4,

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

Johdatus sovellussuunnitteluun osa 2

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

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

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

1. Käyttötapalähtöinen suunnittelu. Ohjelmistotuotanto. Käyttötapalähtöinen suunnittelu. Käyttötapalähtöinen suunnittelu

UML - unified modeling language - use cases

4. Olio-ohjelmoinista lyhyesti 4.1

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

HELIA 1 (17) Outi Virkki Tiedonhallinta

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

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

Ohjelmistojen mallintaminen. Luento 6,

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

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

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Javan perusteita. Janne Käki

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

9. Periytyminen Javassa 9.1

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IV Periytyminen ja monimuotoisuus

UML Luokkakaavio 14:41

Ohjelmistotekniikan menetelmät

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Ohjelmoinnin jatkokurssi, kurssikoe

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Ohjelmistotekniikan menetelmät

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

2. Olio-ohjelmoinnin perusteita 2.1

Ohjelmistojen mallintaminen, kertausta

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Olioiden yhteistoiminta

2. Olio-ohjelmoinnin perusteita 2.1

3. Käsiteanalyysi ja käsitekaavio

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

UML ja luokkien väliset suhteet

Transkriptio:

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.. Kartoituksen pohjana voi käyttää vapaamuotoista tekstikuvausta tarkasteltavasta ilmiöstä. Kuvauksesta alleviivattaan luokkaehdokkaita ja kerätään ne luetteloon. Luokkaehdokkaat esiintyvät kuvauksessa usein substantiiveina. Verbit voivat ilmaista yhteyksinä. Alustavaa karsintaa voi tehdä sen perusteella onko asia lainkaan oleellinen mallinnettavan ilmiön kannalta.

Karsi ehdokkaita Luetteloon saadut ehdokkaat käydään läpi ja arvioidaan voisiko ehdokas tulla kyseeseen luokkana. Liittyykö ilmiöön tietosisältöä, joka on välttämätöntä järjestelmän kannalta Yleensä useita attribuutteja Onko asia riittävän tärkeä kohdealueen kannalta. Synomyymit karsitaan Karsintaa ja ehdokkaiden kartoitusta voidaan joutua tekemään iteratiivisesti. Ensimmäinen karsintakierros ei välttämättä tuota lopullista tulosta.

Tunnista yhteydet Yhteyksiä 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ä. Eivät välttämättä tule esiin vapaamuotoisessa kuvauksessa vaan edellyttävät tarkempaa kohdealueen analysointia.

Henkilö osaton nimi Henkilö osaton nimi osasto

Luokkia määrittelemällä luodaan luokitusjärjestelmä Eri menetelmät asettavat erilaisia vaatimuksia luokitusjärjestemälle joissakin edellytetään, että luokat ovat erillisiä (ei yhteisiä ilmentymiä) toisissa sallitaan päällekkäisyys (yhteiset ilmentymät)

Luokkahierarkiassa luokka voidaan määritellä toisen luokan alaluokaksi esim. luokka nainen on luokan henkilö alaluokka luokka johtaja on luokan henkilö alaluokka luokat auto, laiva ja lentokone ovat luokan kulkuväline alaluokkia

Siitä, että luokka A on luokan B alaluokka seuraa, että jokainen A:n ilmentymä on myös B:n ilmentymä jokainen johtaja on myös henkilö tästä taas seuraa, että kaikki attribuutit, palvelut ja yhteydet, jotka on määritelty luokan B ilmentymille ovat liittyvät myös A:n ilmentymiin.

Jos henkilölle on määritelty attribuutti Nimi, niin myös johtajalla on automaattisesti Nimiattribuutti Jos henkilö on määritelty osapuoleksi työsuhde-yhteyteen, myös johtaja voi olla osapuolena työsuhde yhteydessä. Tätä ilmiötä kutsutaan periytymiseksi (inheritance)

Periytymisessä yläluokkaan liitetyt attribuutit, palvelut ja yhteydet periytyvät alaluokalle Huom. periytyminen on luokkien välistä määrittelyjen periytymistä - ilmentymät eivät peri mitään toisilta ilmentymiltä.

Yläluokan ja alaluokan välinen riippuvuussuhde kuvataan kaaviossa: Alaluokka Yläluokka Johtaja Henkilö

Alaluokkaan voidaan liittää yläluokalta perittyjen attribuuttien, palvelujen ja yhteyksien lisäksi omia attribuutteja, yhteyksiä ja palveluja johtajalla on vastuualue ja alaisten määrä ominaisuudet, joita ei ole henkilöllä yleisesti vain johtajalla voi olla oikeus käyttää edustustiliä johtajalla voi olla alaisia

1 Johtaja vastuualue alaisten määrä alainen 0..* Henkilö 0..* Käyttöoikeus 1 Edustustili

Alaluokaan 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ä. Henkilö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) johtaja kenraali sotilas

Järjestelmää mallinnettaessa luokkahierarkiasta on eniten hyötyä sääntöjen ilmaisemisessa kuvauksen ekonoomisuudessa (ei tarvitse toistaa samoja asioita useassa luokassa)

Esimerkki säännöistä: Autolla täytyy olla omistaja. Omistaja voi olla yritys tai henkilö. mahdollinen omistaja 1..* 0..* auto yritys henkilö

Ellei yläluokkaa käytettäisi yritys 0..* 0..* yritysomistus auto 0..* henkilöomistus 0..* henkilö

Aliluokkia voidaan muodostaa monin erilaisin perustein henkilö erillisin perustein muodostettuja aliluokkia overlaps nainen johtaja ehto

Samaan luokitteluperusteeseen perustuvat poissulkevat luokat henkilö nainen mies

Kun reaalimaailmassa luokitellaan ilmiöitä voidaan käyttää useita erilaisia luokitteluperusteita samanaikaisesti: sukupuoli, kengännumero, virka-asema, auton omistus, jne. monissa oliomenetelmissä ja olioohjelmointikielissä ollaan paljon rajoittuneempia

henkilö overlaps nainen johtaja reaalimaailmassa olio voi olla usean luokan välitön ilmentymä Liisa

henkilö nainen johtaja olio-ohjelmointikielissä olio ei yleensä voi olla usean luokan välitön ilmentymä Liisa

henkilö johtaja nainen naisjohtaja oliokielissä olio on vain yhden luokan välitön ilmentymä Liisa

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ö

Olioiden yhteistoiminta: Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu palvelujen kautta. Yhteistoimintakuvauksilla kuvataan, miten palveluja käytetään. Olioiden yhteistoiminnan kuvaaminen on ohjelmiston suunnitteluvaiheen tehtävä Yhteistyökuvauksia voidaan määrittelyvaiheessa käyttää liiketoiminnan kuvaamiseen

UML esittelee kaksi tekniikkaa yhteistoiminnan kuvaamiseen. Sekvenssikaavion (yhteistyöpolut) (sequence diagram), jossa keskitytään erityisesti kuvaamaan operaatioiden tapahtumajärjestystä ja toimintaan liittyvien viestien kulkua. Sekvenssikaavion toinen ulottuvuus on aika. Yhteistyörakennekaavion (collaboration diagram), jossa keskitytään kuvaaman, sitä miten yhteistyö hyödyntää olioiden välisiä kytkentöjä

Sekvenssikaavio Sekvenssikaavio kuvaa: olion (myös järjestelmä on olio) palvelun suoritukseen liittyvän olioiden yhteistyön mitä avustavia olioita palvelun suoritukseen osallistuu ja mitä näiden palveluja käytetään missä järjestyksessä avustavien olioiden palveluita käytetään

Sekvenssikaavio aloitus viesti olio1:luokka olio2:luokka operaatio / palvelu [ehto] viesti (parametrit) nimeää käytettävän palvelun palkin pituus kuvaa palvelun kestoa aika

Sekvenssikaavio Viestit ovat yleensä palvelujen kutsuja (palvelupyyntöjä) = pavelun nimi (parametrit) käytännössä metodikutsu oliohjelmassa ehto ei ole välttämätön palveluun liittyvä paluunuoli jätetään yleensä piirtämättä vaikka palaute saataisiinkin (kaavio tulee näin yksinkertaisemmaksi)

Sekvenssikaavio Esimerkki class A { B oliob; C olioc; D oliod; public int doit() { oliob.assist1(); olioc.assist2(oliod); } class B { E olioe; public void assist1() { olioe.dosomething(); } class C { public void assist2(d od) { od.serviced()}

Sekvenssikaavio doit olioa:a oliob:b olioe:e olioc:c oliod:d assist1() dosomething assist2(oliod); serviced