selykielen suunnittelu ja toteutus Samu Viita
selykielen suunnittelu ja toteutus Samu Viita
selykielen suunnittelu ja toteutus Samu Viita
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
45pse([map(tricycle,t(1)),map(price,t(1,1)),map(weigth,t(1,2)),map(frame,t(1,3)),map(saddle,t(1,4)),map(steering,t(1,5)),map(rear,t(1,6)),map(frame_no,t(1,3,1)),map(material,t(1,3,2)),map(weigth,t(1,3,3)),map(pad,t(1,4,1)),map(weigth,t(1,4,2)),map(h,t(1,5,1)),map(weigth,t(1,5,2)),map(front_axle,t(1,5,3)),map(handlebars,t(1,5,4)),map(pedals,t(1,5,5)),map(wheel,t(1,5,6)),map(b,t(1,6,1)),map(weigth,t(1,6,2)),map(rear_axle,t(1,6,3)),map(wheel,t(1,6,4)),map(l,t(1,5,3,1)),map(weigth,t(1,5,3,2)),map(b,t(1,5,4,1)),map(weigth,t(1,5,4,2)),map(diam,t(1,5,5,1)),map(weigth,t(1,5,5,2)),map(diam,t(1,5,6,1)),map(r_type,t(1,5,6,2)),map(weigth,t(1,5,6,3)),map(b,t(1,6,1)),map(weigth,t(1,6,2)),map(diam,t(1,6,3,1)),map(l,t(1,6,3,2)),map(weigth,t(1,6,3,3)),map(wheel,t(1,6,4)),map(diam,t(1,6,4,1)),map(r_type,t(1,6,4,2)),map(weigth,t(1,6,4,3))]).Intensionaalista tasoa esittävän Prolog-termin funktorina on atomi pse. Intensionaalisentason binäärirelaation esitän kuvaustyyppisenä rakenteena. Siinämap-parin ensimmäisenä elementtinä on attribuutin tai olion tyypin nimi <strong>ja</strong> toisenasiihen liittyvä indeksi. Esitän indeksin tuple-konstruktorina. Esimerkkinäon vain tricycle:n intensionaalisen tason esitys. Jos intensionaalisella tasolla olisimallinnettava muitakin osa-kokonaisuussuhteita, niin ne olisivat omina listoinaanpse-termin elementteinä.Aikaisempi tricycle:ä kuvaava Prolog++:lla kuvattu luokka ei ole riittäväekstensionaalisen tason esittämiseen. Luokaa muodostettaessa täytyy kyetäluomaan PSE-formalismin ekstensionaalinen esitystapa. Toisin sanoen oliontäytyy pystyä muodostamaan itsestään PSE-esitystavan mukainen ekstensionaalinenesitys. Prolog-esityksen tulee olla lisäksi sellainen, että sitä voidaanhyödyntää Prolog++:n yhteydessä. Tämä tarkoittaa sitä, että ekstensionaalisentason termiesityksestä tulee pystyä siirtymään muistissa olevaan olioon.Jotta olio pystyy muodostamaan Prolog-esityksen itsestään, täytyy oliotavastaavassa luokassa määritellä metodi, joka koostaa olion osista oikeanlaisenesityksen. Määrittelen metodin siten, että kaikki oliot tulostavat itsestään tuplerakenteen.Termin nimenä on merkkijono, jonka alku muodostuu t-kir<strong>ja</strong>imesta.Tämä vain siksi, että t-kir<strong>ja</strong>in osoittaa kyseessä olevan tuple-konstruktorin. Välittömästit-kir<strong>ja</strong>imen jälkeen merkkijonossa on oliota vastaavan luokan nimi.Tämän jälkeen merkkijonossa on olioidentiteetti. Jos kyseessä on perusolio, oliomuodostaa itsestään tuple-rakenteen, jonka sisältönä ovat olioiden attribuuttienarvot. Jos sen si<strong>ja</strong>an on kyse kompositiosta, tuple-esityksen sisällä on attribuuttienjälkeen alkioina sen komponenttien esitys tuple-rakenteena. Kompositioidenkohdalla rakenne muodostetaan siis rekursiivisesti. Rakenteen rekursiivi-