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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

18class departmenttype [dept_name:string, head:employee,staff:{employee}];Varattua sanaa class seuraa luokan nimi. Varatulla sanalla type määritelläänluokan tyyppi. Tyyppi määräytyy luokan attribuuttien <strong>ja</strong> niiden tietotyyppienmukaan. Kaarisulkujen sisällä määritellään attribuutti, joka on joukkoarvoinen.Yllä olevassa department-luokassa dept_name –attribuutti on siis merkkijonomuotoinen,head on puolestaan empolyee –tyyppinen olio. Se on määriteltymuualla luokkana, vaikka sitä ei esitellä tässä esimerkissä. Staff-attribuuttikoostuu puolestaan joukosta employee-tyyppisiä olioita.QAL-kielellä pystytään tekemään kyselyjä osa-kokonaisuussuhteita sisältäviinrakenteisiin. Tämän lisäksi kielellä pystytään muodostamaan uusia, kompleksisiarakenteita sisältäviä olioita. Seuraavaksi esittelen termistön, jota QALkielessäsovelletaan funktioiden käytön yhteydessä. Funktioita eli operaatioitakäytetään pelkistetysti seuraavasti: s.funktio1(p), missä s on operaation argumentti,funktio1 on operaation nimi <strong>ja</strong> p on operaation parametri. Funktiolla voiolla myös useampia parametrejä tai se voi olla parametritön. Argumentti on siisolio tai luokka, johon funktiota sovelletaan. Useista muista kielistä poiketenparametri <strong>ja</strong> argumentti ei siis tarkoita samaa asiaa. Funktio voi palauttaa toimintansatuloksena esimerkiksi numeromuotoisen arvon tai olion. QAL:ssä onkahden tyyppisiä operaatioita: malliin perustuvia <strong>ja</strong> deklaratiivisia. Kaikkimalliin perustuvat operaatiot on johdettu käsitteistä, joita on käytetty tietomallissa,johon QAL-kyselykieli poh<strong>ja</strong>utuu. Ne ovat siis teknisluonteisempia kuindeklaratiiviset operaatiot <strong>ja</strong> ne on tarkoitettu deklaratiivisten kyselyjen avuksi.Malliin perustuvia operaatioita ovat esimerkiksi val <strong>ja</strong> ext. Val käsittelee argumenttinaoliota tai luokkaa <strong>ja</strong> se palauttaa argumenttinsa arvon. Jos kyseessä onolio, arvoksi palautuu olion kaikki attribuutit <strong>ja</strong> niiden arvot. Oletetaan, ettäs1,p1 <strong>ja</strong> p2 ovat person-luokan olioiden identiteettejä. Person luokka on määriteltyseuraavalla tavalla:class persontype [name:string, age:int, address:string, family:{person}]Tällöin ilmaisun s1.val tulos voisi olla seuraava:[name:”Jim”,age:23,address:”Ljubl<strong>ja</strong>na”,family:{p1,p2}]

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

Saved successfully!

Ooh no, something went wrong!