11.07.2015 Views

selykielen suunnittelu ja toteutus Samu Viita

selykielen suunnittelu ja toteutus Samu Viita

selykielen suunnittelu ja toteutus Samu Viita

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

22kaksisuuntaisesti. Seuraavaksi tarkastelen standardia, jossa suhteetmallinnetaan tällä tavalla.ODMG:n (Object Data Management Group) tekemässä standardissa [Cattellet al., 2000] tyyppi määrittelee olion rakenteen <strong>ja</strong> käyttäytymisen. Käyttäytyminenmääritellään joukkona metodeita. ODMG:ssä oliotyypillä voi olla useampiavälittömiä yliluokkia. Tätä kutsutaan moniperiytymiseksi. Luokka voi siis periäominaisuuksia monilta luokilta. Oliot <strong>ja</strong> literaalit on eroteltu toisistaan Oliollavoi olla attribuuttien arvo<strong>ja</strong>, suhteita <strong>ja</strong> metode<strong>ja</strong>. Standardissa voidaan käyttäämyös ra<strong>ja</strong>pinto<strong>ja</strong>. Ra<strong>ja</strong>pintojen käytön mahdollisuus tukee sovelluksen rakentamista<strong>ja</strong> suunnittelemista toteutuksen yksityiskohdista välittämättä. Ra<strong>ja</strong>pintamekanismiavoi pitkälle vietynä kuitenkin kritisoida luokkien lukumäärienkasvulla [Koskimies, 2000]. Suhteiden mallintaminen tapahtuu määrittelemälläeksplisiittisesti suhteelle rajoite: suhde voidaan rajoittaa yksittäiseksi, joukkotyyppiseksitai listaksi. Suhteen rajoitteen lisäksi määritellään suhteen kohde.Tätä seuraa jokin kuvaileva suhteen nimi. Tämän lisäksi suhteelle määritelläänkäänteissuhde.Seuraavaksi esittelen esimerkkiä polkupyörän oh<strong>ja</strong>ussysteemistä, jossa etupyörän<strong>ja</strong> oh<strong>ja</strong>uksen välitön komponenttisuhde mallinnetaan ODMG-standardillaseuraavasti:class steering{relationship wheel has_componentinverse wheel is_component}Lihavoidulla kirjoitetut sanat ovat varattu<strong>ja</strong>. Luokan sisällä oleva ensimmäinenlause tarkoittaa, että steering-luokalla on wheel-luokka välittömänä komponenttinaan.Toisena lauseena on ensimmäisen käänteissuhde, eli wheel-luokka onkomponenttina steering:ssä. Suhteen mallinnus pitää tehdä myös wheelluokkaan.Wheel-luokassa siis määritellään suhde ilmaisulla ”relationship steeringhas_composite” sekä käänteinen suhde: ”inverse steering is_composite”.Jos oh<strong>ja</strong>uksella voisi olla useampia renkaita, joiden keskinäisellä järjestyksellä eiole merkitystä, relationship –termin si<strong>ja</strong>sta käytettäisiin relationship set –sanaa. Jos puolestaan oh<strong>ja</strong>uksella olisi useampi rengas <strong>ja</strong> niiden keskinäiselläjärjestyksellä olisi väliä, käytettäisiin varattua sanaa relationship list.Tämänkaltainen suhteiden mallintaminen on työlästä, koska suhteet joudutaanmallintamaan moneen kertaan. Se ei silti poista navigoinnin tarvetta,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!