Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Luokkakaavion laatiminen

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

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

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

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

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

Mitä on periytyminen?

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

UML - unified modeling language

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

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

Johdatus sovellussuunnitteluun, s2000, osa4 Helsingin yliopisto;/tktl. Harri Laine 1. Luokka- ja oliokaaviot. Luokka- ja oliokaaviot

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

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

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

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

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

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

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

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

Kertaus: yleistys-erikoistus ja perintä

UML Luokkakaavio 14:41

9. Periytyminen Javassa 9.1

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

Ohjelmistojen mallintaminen, kesä 2010

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

Ohjelmistotekniikan menetelmät, kesä 2008

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

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

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

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät

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

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistotekniikan menetelmät, kevät 2008

9. Periytyminen Javassa 9.1

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

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

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

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

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

19. Unified Modeling Language (UML)

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

Kooste. Esim. Ympyrän keskipiste voidaan ajatella ympyrän osaksi.

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen. Luento 4,

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

Olio-ohjelmointi Johdanto olio-ohjelmointiin

Muutamia peruskäsitteitä

CS-A1150 Tietokannat CS-A1150 Tietokannat / 35

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

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

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

Periytyminen (inheritance)

2. Olio-ohjelmoinnin perusteita 2.1

1. Olio-ohjelmointi 1.1

815338A Ohjelmointikielten periaatteet

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

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

JHS 162 Paikkatietojen mallintaminen tiedonsiirtoa varten Liite 1 UML-mallinnus

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Harjoitustehtävät ja ratkaisut viikolle 48

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

Ohjelmistojen mallintaminen. Luento 7,

Johdatus sovellussuunnitteluun osa 2

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

UML ja luokkien väliset suhteet

Ohjelmistojen mallintaminen luokkamallin laatiminen

Luokka- ja oliokaaviot

Kertausta: Olioperustainen ohjelmistokehitys

Common Lisp Object System

Hakemistojen sisällöt säilötään linkitetyille listalle.

Ohjelmistojen mallintaminen luokkamallin laatiminen

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

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

4. Olio-ohjelmoinista lyhyesti 4.1

3. Käsiteanalyysi ja käsitekaavio

12. Monimuotoisuus 12.1

Ohjelmistojen mallintaminen. Luento 4,

P e d a c o d e ohjelmointikoulutus verkossa

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmistojen mallintaminen, kertausta

Abstraktit tietotyypit ja olio-ohjelmointi

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

2. Olio-ohjelmoinnin perusteita 2.1

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Ohjelmistojen mallintaminen. Luento 8,

12. Monimuotoisuus 12.1

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

16. Javan omat luokat 16.1

Transkriptio:

582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1

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 Joukkue * jäsen Pelaaja 3

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 Rakennus osoite 1..* Huone koodi 4

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 nimiattribuutti esim. jos Henkilö on määritelty osapuoleksi työsuhde-yhteyteen, myös Johtajalla on työsuhdeyhteys 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 esimies 0..1 Johtaja alainen 0..* Henkilö vastuualue 0..* käyttöoikeus 0..1 Edustustili 11

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ö Auto Auto * yritysomistus * henkilöomistus * 0..1 0..1 1 Yritys Henkilö Omistaja Voiko autolla olla - sekä yritys- että henkilöomistaja? - nolla omistajaa? Yritys Henkilö 13

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) Henkilö Henkilö {complete, disjoint} Nainen Johtaja Nainen Mies Erillisin perustein muodostettuja osin päällekkäisiä aliluokkia Yhteen luokitteluperusteeseen perustuva kattava ja poissulkeva luokittelu 14

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 Henkilö Henkilö Nainen Johtaja Nainen Johtaja «instanceof» «instanceof» Naisjohtaja liisa Reaalimaailmassa olio voi olla usean luokan välitön ilmentymä liisa «instanceof» Oliokielissä tarvitaan usein esim. keinotekoinen kokoava yliluokka, koska olio ei voi olla usean luokan välitön ilmentymä 16

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