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.

44Kuvauskontruktori on tarkoitettu ilmaisemaan yhteydet kahden joukonelementtien välillä. Kuvausesitystavan matemaattisena taustakäsitteenä on binäärirelaatio.Kuvauskonstruktori on siis joukko, jonka alkioina on map-pare<strong>ja</strong>.Map-pari esitetään puolestaan yhditettynä terminä map(X,Y), missä termi Xkuvaa toisen joukon alkion <strong>ja</strong> termi Y toisen. On huomionarvoista, että termit X<strong>ja</strong> Y voivat olla myös monimutkaisen rakenteen sisältäviä Prolog-termejä.Tieto esitetään joukkona, jos on tarve mallintaa rakenteellisesti homogeenisiäalkioita sisältävä ryhmä, jonka alkioiden järjestyksellä ei ole merkitystä. Valitettavastistandardi Prolog ei tarjoa joukkoa esittävää tietorakennetta [Liu,1999]. Tämän vuoksi joukkojenkin esittämiseen käytän muun muuassa Niemen<strong>ja</strong> Järvelinin [1991] ehdottamaa esitystapaa. Siinä joukot esitetään listoina. Tätävalintaa tukee muun muassa monet listoille määritellyt systeemipredikaatit.Esimerkiksi predikaattia member(X,L) voidaan soveltaa tutkimaan, kuuluukoalkio X joukkoon L.Edellä mainitsemieni kolmen konstruktorin avulla voidaan PSE-esitystapaesittää Prolog-perustaisesti. Kuten yllä todettiin, esitystapa joudutaan lisäksiintegroimaan Prolog++:n mukaisten olioiden kanssa. PSE-formalismin [2001]tapa esittää oliot joukko-opillisesti ei ole riittävä. Tämä johtuu siitä, että olioilletäytyy mallintaa metode<strong>ja</strong>, jotka mahdollistavat osa-kokonaisuussuhteelle tyypillisenperiytymismekanismin toteuttamisen. Tämän vuoksi olioiden tulee olladynaamisina tietokoneen muistissa ajon aikana. Olioita haetaan muististaoliotunnisteiden avulla. Tieto oliotunnisteista tulee siis olla olioita esittävissätermeissä. Nämä olion, <strong>ja</strong> sitä vastaavan termin integroinnin seikat tulee ottaahuomioon luokkaa määriteltäessä.5.4.1. Esitystavan edellyttämän olion <strong>ja</strong> luokan piirteetIntensionaalisen <strong>ja</strong> ekstensionaalisen tasojen toteuttamisessa tulee ottaa huomioontasojen integroinnin yhteydessä esiintyvät tekniset vaatimukset. Intensionaalinentaso esitetään Prolog-terminä sen jälkeen, kun Prolog++ luokka onensin määritelty sille. Esimerkkinä käytän aiemmin esittelemääni tricycleesimerkkiä.Erona Junkkarin esittämään tricycle:en on kuitenkin se, että kaikissasen komponenttityypeissä on attribuuttina weigth. Weigth on johdettu attribuuttikaikissa tricycle:n kompositiotyypeissä, siis myös itse tricycle-oliotyypissä.Perusoliotyypissä weigth on normaali attribuutti, jota ei johdeta mistään. Intensionaalisessatasossa weigth esitetään kuitenkin myös komposiittienkin kohdallanormaalina attribuuttina, johon liittyy attribuutti-indeksi. Alla on intensionaalisentason Prolog-perustainen <strong>toteutus</strong> kuvan 2. tricycle:stä.

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

Saved successfully!

Ooh no, something went wrong!