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.
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}]