Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

1 582104 – Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä.

Samankaltaiset esitykset


Esitys aiheesta: "1 582104 – Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä."— Esityksen transkriptio:

1 1 582104 – Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

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

3 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

4 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..*

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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}

15 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

16 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»

17 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


Lataa ppt "1 582104 – Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä."

Samankaltaiset esitykset


Iklan oleh Google