1 582104 – Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä.

Slides:



Advertisements
Samankaltaiset esitykset
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
Advertisements

19. Unified Modeling Language (UML)
ER-mallista relaatiomalliin
Koostumussuhde Jukka Juslin © Jukka Juslin.
Ohjelmiston tekninen suunnittelu
Luokkien väliset koostesuhteet
© Jukka Harju, Jukka Juslin1 Java-ohjelmointi opas ammattimaiseen osaamiseen Luku 12 Periytyminen.
Muutamia käsitteitätMyn1 Muutamia käsitteitä •Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan,
Luokkakaaviot Luokkakaaviot Tekninen suunnittelu.
Outi Grotenfelt & Vesa Ollikainen
Tietokanta.
2. Olio-ohjelmoinnin perusteita
Olio-ohjelmointi. Mitä olio-ohjelmointi on ?  Pyritään mallintamaan jotain reaalimaailman kohdetta tietokoneohjelman avulla  Olio on luokan ilmentymä.
1. Olio-ohjelmointi.
Olio-mallinnus Tietojärjestelmien suunnittelu KYAMK, Liiketalous, Kouvola Jarkko Ansamäki, 2002.
Perintä. Yleistä Olio-ohjelmoinnin menetelmä muodostaa uusia luokkia aiemmin määriteltyjen luokkien avulla Luokka saa automaattisesti käyttöönsä kaikki.
Antti-Jussi Lakanen Nuorten peliohjelmointi 2009 / Jyväskylän yliopisto.
Ohjelmiston toteutus (teknisestä näkökulmasta)
– Ohjelmistojen mallintaminen, kesä 2009
@ Leena Lahtinen OHJELMAN OSITTAMINEN LUOKKA ATTRIBUUTIT METODIT.
Olio-ohjelmoinnin perusteet luento 3
Oliomallittaminen ja UML
9. Periytyminen Javassa.
SE-02 Olioperustainen ohjelmistokehitys Tampereen yliopisto, syksy 2000 Roope Raisamo perustuu Kai Koskimiehen Oliokirjaan ja kurssin aiempiin materiaaleihin.
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
Johdanto Luokat (ja oliot) mallintava järjestelmän rakennetta
Cmap-tools opetus käyttö kongnitiivinen merkitys.
Muunnos luokkakaaviosta relaatiokaavioon
Systeemityö 2 Olioajattelu, luokkakaavio
– Ohjelmistojen mallintaminen luokkamallin laatiminen
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
10. Abstrakti luokka Johdanto Abstrakti luokka (abstract class) poikkeaa konkreettisesta luokasta (ei-abstrakti luokka) siten, että siitä ei.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
17. Kooste Kooste Kooste (aggregation) on luokkien A ja B välinen suhde, joka tarkoittaa “A on B:n osa” tai “A kuuluu B:hen”. − Koostesuhteessa.
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Komponenttipohjainen ohjelmistotekniikka (TJTSS56) Osa 4 Kevätlukukausi 2010 Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Markku Sakkinen.
@ Leena Lahtinen Toistorakenne Ohjelmassa toistetaan tiettyjä toimenpiteitä monta kertaa peräkkäin Toisto noudattaa sille kuuluvia tarkkoja standardoituja.
– Ohjelmistojen mallintaminen, mallintaminen ja UML.
Testaus Testaus Testauksella pyritään löytämään virheitä, jotka sitten korjataan. Yksittäinen testi on yleensä ohjelman suoritus (tietyillä.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Rinnakkaisuus Järjestelmässä, jossa voi olla useita prosesseja rinnakkain suorituksessa voi tulla tilanteita, joissa prosessien suoritusta täytyy kontrolloida.
Jouni Juntunen Oulun seudun ammattikorkeakoulu Liiketalouden yksikkö
Oliot ja luokat Oliot ja luokat Oliot (object) ja luokat (class) ovat keskeisiä olio- ohjelmoinnin käsitteitä. Olio-ohjelmointi on ohjelmointiparadigma,
© Jukka Harju, Sisältö 1. Mitä on periytyminen Javassa? 2. Periytyminen UML-luokkakaaviossa 3. Termejä 4. Periytymishierarkia 5. Periytyminen vs.
Vesa Ollikainen & Outi Grotenfelt
11. Rajapinnat Sisällys Mitä rajapinnat ovat? Kuinka ne määritellään ja otetaan käyttöön? Moniperiytyminen rajapintojen avulla. Varoituksen.
Tekstitiedostoon kirjoittaminen tMyn1 Tekstitiedostoon kirjoittaminen Tiedostoja käsitellään ohjelmassa tiedosto-olion avulla. Tiedosto-olion luokka sisältää.
Component diagram– Komponenttikaavio J. Pätsi & H. Malmihuhta
Johdetun luokan olion alustus tMyn1 Johdetun luokan olion alustus määrätyillä arvoilla Kun ohjelmassa esiintyy johdetun luokan olion määrittely, järjestelmä.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
1 © Jukka Juslin Luokat, attribuutit ja metodit Yleistietoa: seuraavalla koulutusviikolla tarkempi käsittely.
8. Periytyminen Sisällys Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö.
OMT Design System design –design technical environment Object design –design class diagram.
Toistorakenne Toistorakennetta käytetään ohjelmissa sellaisissa tilanteissa, joissa jotain tiettyä ohjelmassa tapahtuvaa toimenpidekokonaisuutta halutaan.
UML-luokkakaavio ● Luokkakaavio (class diagram) kuvaa järjestelmän luokkarakennetta ● Mitä luokkia on olemassa ● Minkälaisia luokat ovat ● Luokkien suhteet.
17. Kooste.
Ohjelmistotekniikan menetelmät, luokkamallin laatiminen
11. Rajapinnat.
1. Olio-ohjelmointi.
UML-mallinnus osana tietotuotemäärittelyä
Kantaluokan määrittely
Rajapintaluokat Rajapintaluokka luettelee metodit, joille tulee löytyä toteutus asianomaisen rajapinnan toteuttavista luokista. Rajapintaluokka on siis.
– Ohjelmistojen mallintaminen, kesä 2010
Muutamia käsitteitä Perintä (inheritance) on luokkien välinen suhde, jossa johdettu luokka (subclass, derived class) perii kantaluokan, perusluokan (superclass,
8. Periytyminen.
– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä
8. Periytyminen.
4. Luokan testaus ja käyttö olion kautta
2. Olio-ohjelmoinnin perusteita
1. Olio-ohjelmointi.
Esityksen transkriptio:

– Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Luokkamallin lisäpiirteitä •Erilaiset yhteystyypit –kooste –kompositio •Muita luokkien välisiä suhteita –riippuvuudet –periytyminen eli luokkahierarkia 2

Kooste (aggregation) •Erikoistapaus, jossa yhteyden osapuolta voidaan pitää osana toista osapuolta •Esitetään yhteysviivan kokonaisuuden puoleisen pään avoimella salmiakkisymbolilla •Selventää olioiden välistä semanttista suhdetta –ei välttämättä vaikutusta navigointimahdollisuuksiin –yleensä kuitenkin kokonaisuudesta on pääsy sen osiin 3 jäsen * Joukkue Pelaaja

Kompositio (composition) •Koostetta merkittävämpi erikoistapaus, jossa –osan olemassaolo kytketty kokonaisuuteen: kun kokonaisuus poistetaan, häviävät myös osat (vrt. kooste) –osa(-olio) voi sisältyä vain yhteen kompositio(- olioon) –osa ei voi vaihtaa kompositiotaan –kokonaisuus vastuussa osien luonnista ja poistamisesta (yksityiskohdat riippuvat yhteyden toteutuksesta) •Merkitään suljetulla salmiakkisymbolilla 4 –Rakennus–Huone –osoite–koodi –1..*

Kompositiosta •Kompositio on UML:ssä ainoa tapa ilmaista olemassaoloriippuvuus –mallintamisessa tärkeä asia (tärkeämpi kuin osan ja kokonaisuuden yhteys) –jos olemassaoloriippuvuus pitää kyetä esittämään, on syytä käyttää kompositiota, vaikka osa-kokonaisuus -yhteys ei aivan selvältä näyttäisikään •Kompositiota käytetään myös usein hyväksi olioiden identifioinnissa –esim. ‘Exactum-rakennuksen huone C227’ 5

Muita luokkien välisiä suhteita •Edellä on tarkasteltu sellaisia luokkakaavioissa esiintyviä suhteita, jotka ilmenevät olioiden välisinä yhteyksinä •Lisäksi UML:ssä voidaan esittää –luokkien välisiä riippuvuuksia (dependency) –luokkahierarkia (class hierarchy, inheritance hierarchy) 6

Riippuvuus (dependency) •Ilmaisee luokan muuttamisen mahdollista vaikutusta toiseen luokkaan •Kuvataan katkoviivalla –nuolenkärki osoittaa siihen luokkaan, josta viivan toisessa päässä oleva on riippuva –riippuvuuden luonne ilmaistaan yleensä stereotyypillä •Esim. luontiriippuvuus 7

Luokkahierarkia •Luokkahierarkiassa (class hierarchy, inheritance hierarchy) luokka voidaan määritellä toisen luokan aliluokaksi (subclass) •Esimerkiksi: –luokka Johtaja on luokan Henkilö aliluokka –luokat Auto, Laiva ja Lentokone ovat luokan Kulkuväline aliluokkia 8

Ilmentymät ja luokkahierarkia •Jos luokka A on luokan B aliluokka (ja B vastaavasti A:n yliluokka), niin –jokainen A:n ilmentymä on myös B:n ilmentymä –esim. jokainen Johtaja on myös Henkilö •Tästä seuraa, että –kaikki ominaisuudet, jotka on määritelty luokan B ilmentymille, liittyvät myös A:n ilmentymiin –esim. jos Henkilölle on määritelty attribuutti nimi, niin myös Johtajalla on automaattisesti nimi- attribuutti –esim. jos Henkilö on määritelty osapuoleksi työsuhde-yhteyteen, myös Johtajalla on työsuhde- yhteys 9

Periytyminen •Em. ilmiötä kutsutaan periytymiseksi (inheritance) –yliluokkaan (super class, base class) liitetyt attribuutit, operaatiot ja yhteydet periytyvät aliluokalle –aliluokkaan voidaan liittää lisäksi omia ominaisuuksia •Periytyminen on luokkien välistä määrittelyrakenteiden periytymistä, joten –ilmentymät eivät peri attribuuttien arvoja toisiltaan –moniarvoisuusmäärettä ei voi merkitä periytymissuhteeseen, sillä moniarvoisuus täsmentää ilmentymien välistä yhteyttä 10

Luokkahierarkia eli yleistyssuhteet (generalization) •Viiva, jossa yliluokan päässä avoin kolmio •Esimerkiksi: –johtajalla on vastuualue, jota ei ole henkilöillä yleisesti –vain johtajalla voi olla oikeus käyttää edustustiliä –johtajalla voi olla alaisia 11 Johtaja vastuualue Henkilö 0..*0..1 alainenesimies Edustustili 0..* 0..1 käyttöoikeus

Luokkahierarkia mallinnuksessa •Järjestelmää korkealla tasolla mallinnettaessa luokkahierarkiasta on eniten hyötyä –rakenteellisten sääntöjen ilmaisemisessa •esim. “jokin on joko A tai B” –kuvauksen ekonomisuudessa •ei tarvitse toistaa samoja asioita useassa luokassa •tarvittaessa voidaan esittää vain hierarkian juuriluokka 12

Esimerkki rakenteellisesta säännöstä •Autolla on tasan yksi omistaja, joka voi olla joko yritys tai henkilö 13 Auto * HenkilöYritys 0..1 * henkilöomistusyritysomistus Voiko autolla olla - sekä yritys- että henkilöomistaja? - nolla omistajaa? Omistaja Auto * HenkilöYritys 1

Luokkahierarkian kattavuus •Aliluokkia voidaan muodostaa monin eri perustein •Luokittelut voivat olla –kattavia (complete) tai ei-kattavia (incomplete) –poissulkevia (disjoint) tai osittain päällekkäisiä (overlapping) 14 Henkilö JohtajaNainen Erillisin perustein muodostettuja osin päällekkäisiä aliluokkia Henkilö MiesNainen Yhteen luokitteluperusteeseen perustuva kattava ja poissulkeva luokittelu {complete, disjoint}

Luokittelu mallinnuksessa ja ohjelmoinnissa •Kun reaalimaailmassa luokitellaan ilmiöitä, voidaan käyttää samanaikaisesti useita erilaisia luokitteluperusteita –esim. sukupuoli, virka-asema, auton omistus, … •Monissa oliomenetelmissä ja oliokielissä ollaan kuitenkin paljon rajoittuneempia, mikä voi pakottaa kömpelöihin mallinnusratkaisuihin •Tyypillisesti esim. ohjelmointikielissä olio ei voi olla usean luokan välitön ilmentymä 15

Luokittelu mallinnuksessa ja ohjelmoinnissa 16 Henkilö JohtajaNainen liisa Reaalimaailmassa olio voi olla usean luokan välitön ilmentymä «instanceOf» Oliokielissä tarvitaan usein esim. keinotekoinen kokoava yliluokka, koska olio ei voi olla usean luokan välitön ilmentymä Henkilö JohtajaNainen liisa Naisjohtaja «instanceOf»

Moniperiytyminen (multiple inheritance) •Tarkoittaa tilannetta, jossa luokka on useamman kuin yhden luokan välitön aliluokka  Erityisesti toteutuksen moniperiytyminen voi aiheuttaa monikäsitteisyysongelmia  esim. kaksi signatuuriltaan samaa operaatiota  kaikki olio-ohjelmointikielet eivät tarjoa (toteutuksen eli lauseiden ja lausekkeiden) moniperiytymistä  esim. Javassa ei ole, C++:ssa on 17 SotilasJohtaja Kenraali