Sanasto
Tämä sivu selittää valikoitujen ohjelmointiin liittyvien termien merkityksiä lyhyesti.
Selittelyjä
Termien kaikkia merkityksiä ja kaikkia vaihtoehtoisia määritelmiä ei ole selitetty, vaan on keskitytty kurssin kannalta oleellisimpiin. Useilla sanastossa esiintyvistä termeistä on muitakin merkityksiä sekä ohjelmoinnin ulkopuolella että muissa ohjelmointiyhteyksissä. Osa alla olevista määritelmistä on epämuodollisia ja hieman epätarkkoja, mutta kurssimme tarpeisiin riittäviä.
Annetut englanninkieliset lähimmät vastineet eivät kaikissa tapauksissa tarkoita prikulleen samaa kuin suomenkieliset.
Jos etsit sivulta englanninkielistä sanaa (Ctrl+F
), niin huomaa, että jotkut sanat
esiintyvät luettelossa usean eri suomenkielisen sanan käännöksinä.
Katso myös Scala-kielen virallinen sanasto, jota emme tosin kurssilla noudata aivan pilkuntarkasti.
Puuttuuko jotain?
Etsitkö tältä sivulta jotain, mitä täällä ei ole? Ilmoita asiasta Ohjelmointi 1 -kurssin vastaavalle opettajalle (juha.sorva@aalto.fi). Lisäyksiä voidaan tehdä.
Selityksiä
- abstrakti luokka
- abstract class luokka, jolle pätee: 1) siinä voi olla (myös) abstrakteja metodeja; 2) siitä ei voi luoda ilmentymiä kuin aliluokkiensa kautta; 3) sille voidaan määritellä konstruktoriparametreja ¶ Ks. luku 6.4 ja vrt. piirreluokka.
- abstrakti metodi
- abstract method metodi, jolle on määritelty puumerkki muttei runkoa ¶ Ks. luvut 6.2, 6.4. Abstrakteja metodeita voi olla piirreluokissa ja abstrakteissa luokissa eli sellaisissa luokissa, joista ei suoraan luoda ilmentymiä.
- abstraktio
- abstraction yleistys, käsitteellistys; malli, josta on jätetty pois epäoleellisia yksityiskohtia ¶ Ohjelmointi on abstraktioiden määrittelemistä ja hyödyntämistä; ks. esim. luvut 1.6, 2.1, 2.3, 2.6, 6.2, 6.4, 7.5, 8.1 ja 10.1.
- aihealue
- domain ongelmakenttä tai aihepiiri, jota ohjelma käsittelee ¶ Esimerkiksi tietokonepelin aihealueeseen kuuluu pelimaailma sääntöineen.
- ajaa
- run 1) määrätä tietokone toimimaan tietyn ohjelman mukaisesti; 2) toimia ohjelman määräämällä tavalla, suorittaa ¶ Vrt. “Aurora ajoi kirjoittamansa ohjelman ja huomasi tulosteesta, että ohjelmassa oli bugi.” ja “Tietokone ajaa ohjelman vaihe vaiheelta käskyjä noudattaen.”
- ajonaikainen tyyppi
- runtime type sama kuin dynaaminen tyyppi
- ajonaikainen virhe
- runtime error virhe, joka ilmenee (vasta) ohjelmaa ajettaessa, kun jonkin toimenpiteen suorittaminen epäonnistuu ¶ Ks. luvut 1.8, 3.2 ja 4.1 ja vrt. käännösaikainen virhe ja looginen virhe. Esimerkiksi nollalla jakaminen ja tietokoneen vapaan muistin loppuminen aiheuttavat ajonaikaisia virheitä. Ajonaikainen virhe johtaa usein ohjelma-ajon “kaatumiseen” eli keskeytymiseen ellei sitä onnistuneesti ehkäistä tai käsitellä.
- ajuri
- driver ohjelma, jonka tehtävänä on ohjata tietyn oheislaitteen, kuten hiiren tai näytönohjaimen, käyttöä ¶ Käyttöjärjestelmä käyttää oheislaitteita ajurien avulla.
- algoritmi
- algorithm vaiheittainen, toimiva ratkaisumenetelmä jollekin ongelmalle ¶ Ks. luku 1.2. Algoritmit eivät välttämättä liity tietokoneisiin tai ohjelmointiin; esimerkiksi tapa, jolla lukuja jaetaan jakokulmassa, on algoritmi (joka voidaan kyllä toteuttaa tietokoneohjelmaksikin).
- aliluokka
- subclass/derived class luokka, joka perii jonkin toisen luokan ja edustaa yliluokkansa kuvaaman käsitteen alakäsitettä ¶ Aliluokka “perii” yliluokan ominaisuudet; ks. luku 6.4. Sen ilmentymät ovat paitsi aliluokan itsensä tyyppisiä, myös yliluokan tyyppisiä. Aliluokka määritellään mm. Scalassa siten, että aliluokan määrittelyyn kirjataan merkintä sen välittömästä yliluokasta; aliluokalle voi Scalassa kirjata vain yhden välittömän yliluokan. Vrt. piirreluokan liittäminen ja ks. moniperintä.
- aliohjelma
- subprogram sama kuin funktio
- alkio
- element kokoelman tai vastaavan tietorakenteen sisältämä arvo ¶ Ks. luku 1.5.
- alkiokokoelma
- ks. kokoelma
Any
- Any kaikkien Scala-luokkien yliluokka ¶ Ks. luku 6.4.
AnyRef
- AnyRef
useimpien Scala-luokkien yliluokka ¶ Ks. luku 6.4. Scala-ohjelmaa
suorittava virtuaalikone käsittelee
AnyVal
-olioita viittausten kautta; vrt. AnyVal.AnyRef
on Anyn välitön aliluokka. Ks. myös Object. AnyVal
- AnyVal
eräiden tehokkuusoptimoitujen Scala-luokkien yliluokka ¶ Ks.
luku 6.4 (ja 2.9). Scala-ohjelmaa suorittava virtuaalikone ei käsittele
AnyVal
-olioita viittausten kautta; vrt. AnyRef.AnyVal
on Anyn välitön aliluokka. - API
- API application programming interface eli sovelluskirjasto
apply
- apply
(Scalassa:) nimi, joka voidaan antaa metodille, jotta tuota metodia voisi kutsua mainitsematta
metodin nimeä laisinkaan ¶ Ks. luvut 4.5 ja 7.4. Eräänlainen “olion oletusmetodi”:
olio(parametrit)
on lyhennysmerkintä kutsulleolio.apply(parametrit)
ja toimii vain, jos oliolle onapply
-niminen metodi asianmukaisesti määritelty.apply
-metodeita käytetään Scalassa mm. tehdasmetodeina mutta myös muihin tarkoituksiin. - argumentti
- argument 1) parametrilauseke; 2) parametriarvo ¶ Sanoja “parametri” ja “argumentti” käytetään monesti sekaisin. On kohtalaisen yleistä (ja joidenkin mielestä ainoa oikea tapa) käyttää sanaa “argumentti”, kun funktiolle välitettävää tietoa tarkastellaan funktion itsensä ulkopuolelta (esimerkiksi funktiokutsulausekkeessa), ja sanaa “parametri”, kun funktion vastaanottamia tietoja tarkastellaan funktion sisällä (erityisesti: parametrimuuttujista puhuttaessa). Tämän kurssin materiaalissa on vältetty “argumentti”-termiä.
- arvo
- value
1) “yksittäinen ohjelman käsittelemä tiedonjyvänen” eli lausekkeen evaluoimisen tulos, jota
ei voi enää evaluoida yksinkertaisemmaksi; 2) hakurakenteen sisältämän
avain–arvo-parin toinen osa, joka voidaan hakea avaimen perusteella ¶ Esimerkiksi
Scala-kielisen aritmeettisen lausekkeen
1 + 1
arvo on kokonaisluku kaksi (ks. oppimateriaalin luku 1.3), funktiokutsunmin(10, 5)
arvo on luku viisi (ks. luku 1.6) ja lausekkeenBuffer(10, 2, 3)
arvo on viittaus erääseen puskuriin (ks. luku 1.5). Huom. termiä “arvo” käytetään kurssilla eri tavoin kuin osassa Scala-kieltä hyödyntävästä ohjelmointikirjallisuudesta, jossa arvoiksi sanotaan mitä tahansa olioita. - askeltaja
- stepper muuttuja, jota käytetään pitämään kirjaa arvosta, joka on viimeisin tietyssä etukäteen tunnetussa arvojen sarjassa ¶ Yksi muuttujien rooleista. Ks. luvut 2.6 ja 5.3. Askeltaja voi esimerkiksi pitää kirjaa kasvavasta järjestysnumerosta: 0, 1, 2, jne.
- avain
- key tieto, jonka perusteella voidaan paikantaa toinen tieto eli arvo (hakurakenteessa) ¶ Ks. luku 9.1 ja vrt. indeksi.
- avain–arvo-pari
- key–value pair avaimen ja arvon muodostama pari ¶ Käytetään erityisesti hakurakenteiden alkioina; ks. luku 9.1.
- bitti
- b(inary dig)it digitaalisen tiedon perusyksikkö, jolla voi olla yksi kahdesta arvosta ¶ Usein bitin kahteen arvoon viitataan numeroilla 0 ja 1; biteistä voidaan näin muodostaa binaarilukuja. Bittejä järjestelmällisesti yhdistelemällä voidaan kuvata erilaista tietoa esimerkiksi tietokoneessa; ks. luku 5.2.
Boolean
- Boolean
totuusarvoja Scala-ohjelmissa kuvaava tietotyyppi ¶
Boolean
-tyyppisiä arvoja on vain kaksi: tosi ja epätosi, joita kuvaavat Scalassa literaalittrue
jafalse
. Ks. luku 2.8; ks. myös vertailuoperaattori ja logiikkaoperaattori. - bugi
- bug virhe ¶ Sanaa käytetään erityisen usein toimintavirheistä, jotka ilmenevät ohjelmaa ajettaessa, eli ajonaikaisista ja loogisista virheistä.
catch
- catch
(Scala-kielessä:) poikkeustenkäsittelyssä käytetty varattu sana,
jolla aloitetaan try-lohkon jälkeinen toinen lohko, joka suoritetaan
try
-lohkon jälkeen (mutta mahdollista finally-lohkoa ennen) siinä tapauksessa, ettätry
-lohkoa suoritettaessa tapahtui virhe - debugata
- debug etsiä virheitä ohjelmasta; erityisesti: etsiä ajonaikaisia tai loogisia virheitä
- debuggeri
- debugger apuohjelma, jonka avulla ohjelmoija voi tutkia ohjelman suoritusta vaiheittain samalla tarkastellen tietokoneen muistin sisältöä ¶ Debuggeria voi käyttää debugatessa tai muusta syystä ohjelmaan perehtyessä. Ks. luku 4.1.
- deklaratiivinen ohjelmointi
- declarative programming yleinen ohjelmointiparadigma, jossa ohjelma muodostuu oleellisesti ongelman ratkaisemiseen tarvittavista määritelmistä, säännöistä, rajoitteista (tms.) eikä peräkkäisten käskyjen sarjoista kuten imperatiivisessa ohjelmoinnissa ¶ Ks. luku 7.5. Deklaratiiviseen paradigmaan luetaan monesti erilaisia toisistaan paljonkin poikkeavia ohjelmointitapoja. Funktionaalinen ohjelmointi lienee deklaratiivisen ohjelmoinnin merkittävin aliparadigma.
- dialogi(-ikkuna)
- dialog (box) eräänlainen GUI-elementti; ikkuna, joka näytetään käyttäjälle väliaikaisesti ja jota käytetään käyttäjän ja ohjelman väliseen “vuoropuheluun” ¶ Ks. luku 11.2. Monissa sovelluksissa on suurempi pääikkuna, jonka oheen avataan väliaikaisesti erilaisia pienempiä dialogeja.
do
-silmukka- do loop
silmukka, joka on muodostettu
do
-avainsanaa käyttäen ja joka toistaa toimenpidettä yhden tai useampia kertoja ¶ Ks. luku 6.1 ja vrt. while-silmukka. - dokumentaatio
- documentation ohjelmaa siihen perehtyvälle ihmiselle selkiyttävä asiakirja tai sellaisten kokoelma ¶ Erityisesti ohjelman osien rajapinnat on tapana kuvata laatimalla niistä dokumentaatiota; ks. luku 2.6. Ks. myös Scaladoc.
- dokumentaatiokommentti
- doc(umentation) comment erityisellä tavalla muotoiltu kommentti, jota voidaan käyttää dokumentaation tuottamiseen osittain automaattisesti ¶ Ks. luku 2.6. Scala-ohjelman ja siihen upotettujen dokumentaatiokommentien perusteella voidaan luoda dokumentaatiota Scaladoc-työkalulla.
- domain
- domain
sama kuin aihealue ¶ Sanalla viitataan usein (kurssimme ulkopuolella) myös verkkotunnuksiin kuten
aalto.fi
, mikä on ihan eri asia. Double
- Double (Scala-kielessä:) tietotyyppi, jolla kuvataan desimaalilukuja liukulukuina ¶ Ks. luvut 1.3 ja 5.2. Vastaavalla tietotyypillä on samankaltainen nimi useassa muussakin ohjelmointikielessä; nimi tulee ilmaisusta double precision floating point number.
- DRY
- DRY periaate, jonka mukaan kukin ohjelmistoon liittyvä seikka tulee olla määritelty vain kerran yhdessä paikassa ¶ Sanoista don’t repeat yourself. Lähdekoodin laatimiseen sovellettuna DRY-periaate kannustaa välttämään toisteisuutta koodissa, ja periaatteen noudattaminen parantaa usein mm. ohjelman muokattavuutta. Ks. esim. luvut 1.4, 3.5, 6.2 ja 10.1. Vastaava periaate on esitetty ohjelmoijien keskuudessa myös monella muulla nimellä. Vastakohta: WETWET.
- DSL
- DSL domain-specific language eli täsmäkieli
- dynaaminen
- dynamic ohjelma-ajoon tai ohjelman suorittamisen tuottamaan prosessiin liittyvä, ohjelmaa ajaessa määrittyvä; ei-staattinen, muuttuva ¶ Tietokoneohjelmalla voidaan sanoa olevan kaksi “olomuotoa”, staattinen ja dynaaminen; ks. esim. luvut 1.2 ja 2.1. Ohjelman dynaamisiin piirteisiin voi vaikuttaa esimerkiksi ohjelman käyttäjän antama syöte. Ks. myös dynaaminen tyyppi.
- dynaaminen ohjelmointi
- dynamic programming ohjelmien toteuttamistekniikka, jossa pienempien osaongelmien ratkaisuja tallennetaan muistiin, jotta niitä voidaan tehokkaasti hyödyntää (kenties useita kertoja) isompien osaongelmien ratkaisuissa ¶ Tästä tekniikasta on yksi pieni esimerkki luvussa 11.3. Huom. Sanalla “dynaaminen” ei ole tässä yhteydessä aivan samanlaista merkitystä kuin muissa kurssilla esiintyvissä yhteyksissä. Sana on valittu tekniikan nimeen osin markkinointimielessä.
- dynaaminen sidonta
- dynamic binding/dispatch käytäntö, jossa vasta ohjelma-ajon aikana lyödään ajonaikaisen tiedon perusteella lukkoon, mitkä funktiot suoritetaan ¶ Olio-ohjelmoinnissa dynaaminen sidonta ilmenee muun muassa siten, että vasta metodikutsua suoritettaessa tehdään kohdeolion dynaamisen tyypin perusteella päätös siitä, mikä metoditoteutus suoritetaan; päätökseen vaikuttaa siis se, minkä aliluokan olio on viestiä vastaanottamassa. Ks. luvut 6.2 ja 6.4.
- dynaaminen tyyppi
- runtime/dynamic type arvon tyyppi ¶ Määrittyy dynaamisesti ohjelma-ajon aikana. Staattiselta tyypiltään tietynlaisen lausekkeen tai muuttujan arvolla voi olla mikä tahansa sellainen dynaaminen tyyppi, joka on staattisen tyypin kanssa yhteensopiva; ks. luvut 6.2 ja 6.4.
- dynaamisesti tyypitetty
- dynamically typed (ohjelmointikielestä:) tyyppijärjestelmältään sellainen, että lähdekoodin osille ei määritetä tyyppejä staattisesti, vaan ainoastaan arvojen dynaamisilla tyypeillä on merkitystä. ¶ Esimerkiksi muuttujilla ei siis dynaamisesti tyypitetyssä kielessä ole tyyppejä, vaan niihin voi sijoittaa mitä tahansa arvoja. Vrt. staattisesti tyypitetty. Dynaamisesti tyypitettyjä ohjelmointikieliä ovat esimerkiksi Python, JavaScript ja Ruby. Scala ei lähtökohtaisesti ole dynaamisesti tyypitetty, mutta taipuu myös sellaiseen käyttöön.
- Eclipse
- Eclipse eräs sovelluskehitin ¶ Ks. luvut 1.2 ja 5.2. Eclipse ja ja sen Scala IDE -lisäosa ovat kurssin virallinen (joskaan ei pakollinen) työskentely-ympäristö.
- editori
- editor sovellusohjelma tekstin muokkaamiseen
- ehdollinen operaattori
- short-circuited operator logiikkaoperaattori, jonka jälkimmäistä operandia ei evaluoida, mikäli loogisen operaation tulos määrittyy jo ensimmäisen operandin perusteella ¶ Ks. luku 3.4.
- eksplisiittinen
- explicit nimenomaisesti sanottu, selvästi ilmoitettu; ohjelmakoodiin nimenomaisesti kirjattu ¶ Vastakohta: implisiittinen.
- elementti
- element 1) alkio; 2) GUI-elementti
- ensimmäisen asteen funktio
- first-order function funktio, joka ei ole korkeamman asteen funktio
- evaluoida
- evaluate
määrittää lausekkeen arvo ¶ Ks. esim. luku 1.3. Lausekkeen evaluoimiseksi
tarvittavat toimenpiteet riippuvat lausekkeesta. Esimerkiksi aritmeettisen lausekkeen kuten
1 + 1
evaluoiminen edellyttää laskutoimituksen tekemistä, ja muuttujan nimen muodostama lauseke evaluoidaan noutamalla arvo nimetystä muuttujasta. Funktiokutsulauseke evaluoidaan suorittamalla kyseinen funktio; tällaisen lausekkeen arvo on funktion palautusarvo. - evaluointialue
- tietokoneen muistin osa (kehyksen sisällä), jota käytetään apuna lausekkeita evaluoitaessa ¶ Ks. esim. luvut 1.3 ja 1.7. Tämä on lähinnä tässä kurssimateriaalissa käytetty termi. Evaluointialue on keskeisessä roolissa kurssimateriaaliin upotetuissa ohjelman suorittamista kuvaavissa animaatioissa.
finally
- finally
(Scala-kielessä:) poikkeustenkäsittelyssä käytetty varattu sana, jolla aloitetaan try-lohkon jälkeinen toinen lohko, joka
suoritetaan
try
-lohkon (ja mahdollisen catch-lohkon) jälkeen riippumatta siitä, tapahtuikotry
-lohkoa suoritettaessa aikana virhettä vai ei. for
-silmukka- for loop
silmukka, joka on muodostettu
for
-avainsanaa käyttäen ¶ Scalassa kaikkifor
-silmukat ovat ns. foreach-silmukoita. Joissakin muissa kielissä on myös muunlaisiafor
-sanaa käyttäen muodostettavia silmukoita. - foreach-silmukka
- foreach loop
silmukka, joka käy läpi annetun kokoelman ja toistaa tiettyä
toimenpidettä kunkin tuon kokoelman alkion kohdalla ¶ Scalassa ns. foreach-silmukka kirjoitetaan sanaa
for
-käyttäen; ks. luvut 5.3 ja 5.4. (Huom. Scalan foreach-silmukka on erittäin monipuolinen, eikä sen kaikkia piirteitä käsitellä Ohjelmointi 1 -kurssilla. Lisää aiheesta toisilla ohjelmointikursseilla taimuista lähteistä
.) - funktio
- function aliohjelma; ohjelman osa, joka huolehtii tietystä tehtävästä ja joka voidaan määrätä suoritettavaksi kutsumalla sitä ¶ Ks. luvut 1.6, 1.7 ja 1.8. Funktio määritellään kirjaamalla ohjelmakoodiin sen puumerkki ja runko. Kun funktio on määritelty, sitä voi kutsua, jolloin sen ohjelmakoodi suoritetaan. Mm. Scala-kielessä funktiot voivat olla tilaa muuttavia tai tilaa muuttamattomia. Metodit ovat olioihin liitettyjä funktioita.
- funktiokutsu
- function call 1) lauseke, joka evaluoidaan suorittamalla tietyn funktion ohjelmakoodi; 2) tällaisen lausekkeen suorittamisesta syntyvä toiminta ¶ Ks. luvut 1.6 ja 1.7. Monille funktioille välitetään parametreja; parametrilausekkeet kirjataan funktiokutsulausekkeeseen. Kun funktiokutsu suoritetaan, sen tarpeisiin luodaan (tavallisesti) kehys ja funktion rungon sisältämät käskyt suoritetaan. Funktiokutsulausekkeen arvo on funktion koodin suorittamisen tuottama palautusarvo. Scala-ohjelmien funktiot palauttavat aina jonkin arvon, joskin palautusarvo voi olla vain Unit merkkinä siitä, ettei merkityksellistä palautusarvoa ole.
- funktioliteraali
- function literal literaali, joka määrittelee nimettömän funktion ¶ Scala tarjoaa useita vaihtoehtoisia tapoja kirjoittaa funktioliteraaleja; ks. luku 7.4.
- funktion runko
- function body funktion määrittelyn se osa, joka määrittelee, mitkä käskyt suoritetaan, kun funktiota kutsutaan ¶ Ks. luku 1.7. Scala-koodissa funktion runko kirjoitetaan funktion puumerkin ja yhtäsuuruusmerkin perään.
- funktionaalinen ohjelmointi
- functional programming ohjelmointiparadigma, joka perustuu tilaa muuttamattomiin funktioihin ja muuttumattomaan tietoon ja johon tyypillisesti yhdistyy runsas korkeamman asteen funktioiden käyttäminen ¶ Ks. luku 7.5 ja vrt. imperatiivinen ohjelmointi. Funktionaalinen ohjelmointi on keskeinen deklaratiivisen ohjelmoinnin muoto.
- generoiva rekursio
- generative recursion rekursion muoto, jossa algoritmi tai ohjelma luo muistiin uusia arvoja ja soveltaa sitten itseään niihin rekursiivisella kutsulla ¶ Ks. luku 11.3 ja vrt. rakenteellinen rekursio.
- graafinen käyttöliittymä
- graphical user interface käyttöliittymä, joka perustuu pelkkien kirjoitusmerkkien sijaan myös graafisiin elementteihin kuten ikkunoihin ja nappuloihin ¶ Ks. luku 11.2. Graafisiin käyttöliittymiin viitataan suomeksikin hyvin usein lyhenteellä GUI. Graafiset käyttöliittymät ovat nykyään erittäin yleisiä erityisesti sellaisissa sovellusohjelmissa, joiden käyttäjät eivät itse ole ohjelmoijia.
- GUI
- GUI graphical user interface eli graafinen käyttöliittymä
- GUI-elementti
- GUI element graafisen käyttöliittymän osa ¶ Ks. GUI-komponentti.
- GUI-komponentti
- GUI component graafisen käyttöliittymän osa; erityisesti: sellainen graafisen käyttöliittymän osa, joka on sijoitettu ikkunan sisälle ¶ Esimerkiksi nappulat ja tekstikentät ovat GUI-komponentteja. GUI-elementillä tarkoitetaan usein samaa, mutta joissain yhteyksissä komponenteiksi kutsutaan vain käyttöliittymäikkunan varsinaisen sisällön muodostavia osia (ei esim. dialogeja ja muita ikkunoita), kun taas “elementti”-sanalla on yleisempi merkitys.
- hakurakenne
- map/dictionary kokoelma, jonka alkiot ovat avain–arvo-pareja ja josta voi poimia arvon käyttämällä tuon arvon yksiselitteisesti osoittavaa avainta ¶ Ks. luvut 9.1 ja 9.2. Hakurakenteita on (esim. Scalassa) sekä muuttuvatilaisia että muuttumattomia. Hakurakenteista käytetään monia muitakin nimiä, esim. “sanakirja”, “assosiatiivinen taulukko” ja “mäppi”.
- hierarkia
- hierarchy ks. luokkahierarkia
- I/O
- I/O lyhenne termille input/output
- IDE
- IDE integrated development environment eli sovelluskehitin
if
- if monissa ohjelmointikielissä esiintyvä valintakäsky, jolla voidaan määrätä tietokone valitsemaan kahdesta vaihtoehdosta totuusarvoisen lausekkeen arvon perusteella ¶ Ks. luku 2.9.
- ilmentymä
- instance luokan perusteella luotu olio, yksittäistapaus luokan kuvaamasta käsitteestä ¶ Ks. luku 2.3. Ilmentymien tietoja ei kirjata ohjelmakoodiin samoin kuin yksittäisolioiden, vaan ne luodaan luokkamäärittelyn perusteella instantioimalla. Ilmentymiä sanotaan myös “instansseiksi”.
- ilmentymämuuttuja
- instance variable 1) luokan jäsenmuuttuja; 2) luokan jäsenmuuttujan ilmentymäkohtainen kopio tietokoneen muistissa ¶ Ilmentymien tiedot varastoidaan ilmentymämuuttujiin; ks. luku 2.4.
- implisiittinen
- implicit kätketty; (vain) epäsuorasti pääteltävissä oleva; ei eksplisiittinen
- imperatiivinen ohjelmointi
- imperative programming yleinen ohjelmointiparadigma, joka perustuu muuttuvatilaisen tiedon käsittelyyn peräkkäin järjestetyillä lauseilla ja tilaa muuttavilla aliohjelmilla ja johon tyypillisesti yhdistyy runsas silmukoiden käyttö toiston välineenä ¶ Ks. luku 7.5 ja vrt. funktionaalinen ohjelmointi.
- implisiittinen riippuvuus
- implicit tilanne, jossa yhden ohjelmakoodin osan muuttaminen edellyttää muutoksia myös toisaalle ohjelmassa, mutta tämä tarve ei ole ilmeinen ¶ Esimerkiksi maagiset luvut aiheuttavat implisiittisiä riippuvuuksia; ks. myös luku 10.1. Implisiittiset riippuvuudet huonontavat ohjelmakoodin muokattavuutta ja kasvattavat bugien riskiä.
- indeksi
- index alkion järjestysnumero sellaisessa kokoelmassa, jonka alkiot ovat numeroidussa järjestyksessä ¶ Esimerkiksi taulukot, vektorit ja puskurit ovat indeksoituja kokoelmia. Indeksoidun kokoelman alkioihin pääsee käsiksi indeksin perusteella; ks. luku 1.5. Joissakin ohjelmointikielissä indeksointi alkaa ykkösestä eli ensimmäisen alkion indeksi on 1. Toisissa (kuten Scalassa) se alkaa nollasta.
- indeksoida
- index
1) osoittaa alkiokokoelman kohta indeksiä käyttäen;
2) varustaa indekseillä ¶ Esim. lausekkeessa
puskuri(0) = 10
indeksoidaan puskuria (merkitys 1), ja näin sijoitetaan sen ensimmäiseksi alkioksi luku 10. - indeksoitu
- indexed (kokoelmasta:) indekseihin perustuva
- input/output
- input/output ohjelman ja sen ulkopuolisten tahojen välinen viestintä; lukeminen ja kirjoittaminen ¶ “Ulkopuolisia tahoja” voivat olla esimerkiksi tiedostot (ks. luku 9.4), tietokoneen oheislaitteet (esim. näppäimistö, näyttö) ja toiset tietoverkossa sijaitsevat tietokoneet. Usein käytetään lyhennettä I/O tai IO.
- instanssi
- instance sama kuin ilmentymä
- instantioida
- instantiate
luoda olio tietyn luokan ilmentymäksi ¶ Instantioiminen
tapahtuu siten, että käytössä on luokan määrittely ja suoritetaan käsky, joka määrää olion luotavaksi
tämän määrittelyn perusteella. Scalassa instantiointiin käytetään
new
-sanaa; ks. luku 2.3. Instantioinnin yhteydessä uudelle oliolle varataan muistitilaa ja alustetaan olio konstruktorin avulla. Instantiointikäskyn voidaan sanoa olevan eräänlainen erikoisfunktiokutsu. - iteraatio
- iteration 1) toistaminen siten, että kukin toistokerta jatkaa siitä, mihin edellinen jäi; 2) sellaiseen toistoon perustuva ohjelmien toteutustapa, erityisesti: lauseiden toistaminen silmukalla ¶ Vrt. rekursio ja ks. luku 11.3.
- iteraattori
- iterator olio, joka tarjoaa palvelun tietyn kokoelman sisällön läpikäymiseen jossakin järjestyksessä ¶ Ks. luku 9.4.
- itsenäinen yksittäisolio
- standalone object yksittäisolio, joka ei ole kumppaniolio
- Java
- Java 1) eräs ohjelmointikieli; 2) alun perin Java-kielen yhteyteen suunniteltu ohjelmointityökalusto, ns. Java platform, johon sisältyy eritoten Java-virtuaalikone ¶ Java-kieli on tarkoitettu lähinnä imperatiiviseen olio-ohjelmointiin. Java-ohjelmia ajetaan yleensä Java-virtuaalikoneessa kuten Scala-ohjelmiakin, ja Scala-ohjelmistakin on helppo käyttää Java-kielellä laadittuja kirjastoja; ks. luvut 5.2, 9.4, 11.2.
- Java-virtuaalikone
- Java Virtual Machine eräs virtuaalikone ¶ Ks. luku 5.2. Java-virtuaalikone eli JVM suunniteltiin Java-ohjelmointikielen yhteyteen, mutta sittemmin on ryhdytty kääntämään monia muitakin ohjelmointikieliä sellaiseksi tavukoodiksi, jota JVM osaa suorittaa. Scala on yksi näistä kielistä.
- julkinen
- public ulospäin näkyvä; rajapintaan kuuluva; mistä tahansa ohjelmassa käytettävissä oleva ¶ Ks. luku 2.6 ja vrt. yksityinen. Scalassa kaikki sellaiset luokkien ja yksittäisolioiden jäsenet, joiden näkyvyyttä ei erikseen ole rajoitettu, ovat julkisia.
- JVM
- JVM Java Virtual Machine eli Java-virtuaalikone
- järjestäminen
- sorting kokoelman alkioiden asettaminen järjestykseen jonkin kriteerin perusteella ¶ Esimerkiksi lukuja sisältävä taulukko voidaan järjestää siten, että sen sisältämät luvut asetetaan nousevaan tai laskevaan suuruusjärjestykseen; ks. luku 9.2. Järjestämisen yhteydessä voidaan luoda uusi kokoelma järjestettyä tietoa varten; muuttuvatilainen kokoelma voidaan myös järjestää “paikallaan” (in place).
- jäsen
- member nimetty luokan tai yksittäisolion osa ¶ Metodit ja jäsenmuuttujat ovat jäseniä.
- jäsenmuuttuja
- member variable muuttuja, joka on luokan tai yksittäisolion jäsen ¶ Luokkien jäsenmuuttujia sanotaan usein ilmentymämuuttujiksi, koska niistä luodaan muistiin kopio jokaista luokan ilmentymää kohden; ks. luku 2.4.
- kapselointi
- encapsulation sana, jolla tarkoitetaan jompaakumpaa seuraavista tai niiden yhdistelmää: 1) tiedon piilottaminen jonkin rajapinnan taakse esimerkiksi näkyvyysmääreitä käyttäen; 2) aliohjelmien liittäminen samaan kokonaisuuteen niiden käsittelemien tietojen kanssa (kuten olioissa)
- katenoida
- catenate yhdistää peräkkäin asettaen ¶ Käytetään ohjelmoinnin yhteydessä erityisesti merkkijonoista; esimerkiksi merkkijonot “kon” ja “katenoida” katenoimalla syntyy merkkijono “konkatenoida”.
- kehys
- (stack) frame osa tietokoneen muistista, joka on varattu tietyn funktiokutsun suorittamiseen tarvittavien tiedon varastoimiseen ¶ Ks. luvut 1.7 ja 1.8. Kehysten tyypilliseen sisältöön lukeutuvat mm. paikalliset muuttujat, osio lausekkeiden evaluoimiselle funktiokutsun aikana sekä tieto siitä, mistä ohjelman kohdasta funktiota on kutsutta ja mihin siis tulee palata funktiokutsun päättyessä. Kukin kehys pidetään varattuna niin kauan kuin funktiokutsu kestää. Kehykset muodostavat kutsupinon.
- kenttä
- field sama kuin jäsenmuuttuja
- keskeytyskohta
- breakpoint debuggerissa tehty asetus, joka saa ohjelman suorituksen pysähtymään, kun tarkasteltavan ohjelman suorituksessa saavutaan tiettyyn vaiheeseen ¶ Ks. luku 4.1. Myös “keskeytyspiste”.
- kiintoarvo
- fixed value muuttuja, jonka arvoa ei vaihdeta sen jälkeen, kun muuttuja on kerran alustettu sopivalla arvolla ¶ Yksi muuttujien rooleista. Ks. luku 2.5 ja vrt. vakio ja val-muuttuja.
- kirjasto
- library valikoima aliohjelmia, luokkia tai vastaavia ohjelmien osiksi sopivia komponetteja ¶ Eräät kirjastot, kuten Scala API, liittyvät kiinteästi tiettyyn ohjelmointikieleen. Jotkut kirjastot ovat yleiskäyttöisempiä kuin toiset, eli niiden tarjoamia osia voi hyödyntää useammanlaisten eri ohjelmien “rakennuspalikoina”.
- kirjastofunktio
- library function funktio, joka sisältyy johonkin kirjastoon ¶ Käytetään usein korostamaan sitä, että kyseessä ei ole ohjelmoijan itsensä tiettyyn sovellukseen laatima funktio vaan yleiskäyttöisemmän kirjaston osa, jota hyödynnetään.
- kirjoittaa
- write/print 1) välittää tietoa ohjelmasta sen ulkopuolelle (osa I/O:ta); 2) sijoittaa ¶ Ks. luku 9.4; ks. myös tulostaa.
- klosuuri
- (lexical) closure sama kuin sulkeuma
- koheesio
- cohesion yhteenliittyvyys, yhtenäisyys; se, kuinka tiiviisti tietty ohjelman osa muodostaa yhden selvästi rajatun kokonaisuuden, jonka osat liittyvät toisiinsa ¶ Esimerkiksi luokalla on korkea koheesio, jos se määrittelee yhden selvästi muista erottuvan käsitteen eikä sisällä tähän käsitteeseen liittymättömiä jäseniä. Koheesio on toivottava piirre ohjelmaa suunnitellessa; ks. luku 10.1.
- kokoelma
- collection/container tietorakenne, jonka tehtävänä on pitää kirjaa useasta arvosta ¶ Scala-ohjelmissa kokoelmia kuvataan olioina. Kokoelman sisältämiä arvoja sanotaan alkioiksi. Kokoelmia on eri tyyppisiä; erilaiset kokoelmat eroavat toisistaan mm. muokattavuuden ja tehokkuuden osalta. Joissakin kokoelmissa alkiot ovat hyvin määritellyssä järjestyksessä esimerkiksi indeksien perusteella. Kokoelmatyypit ovat usein tyyppiparametrillisia. Kurssilla käsiteltäviin kokoelmatyyppeihin lukeutuvat mm. puskurit, merkkijonot, vektorit, taulukot, hakurakenteet ja pinot. Funktionaalisessa Scala-ohjelmoinnissa käytetään usein myös muita kokoelmatyyppejä kuten listoja ja virtoja, joita käsitellään jatkokursseilla.
- kokooja
- gatherer muuttuja, jota käytetään kokoamaan tulos useiden yksittäisten arvojen perusteella, näitä arvoja vaiheittain yhdistellen ¶ Kokoojaan voidaan esimerkiksi muodostaa vaiheittain lukujen summa. Kokooja on yksi muuttujien rooleista. Ks. luvut 2.5 ja 5.3.
- komentosarja
- script skripti (erityisesti: sellainen skripti, jota käytetään työvaiheiden automatisointiin)
- kommentti
- comment
lähdekoodiin kirjoitettu ihmislukijalle tarkoitettu osio, jota tietokone ei tulkitse osaksi
suoritettavaa ohjelmaa ja joka ei siis vaikuta ohjelman toimintaan ¶ Asianmukainen kommenttien käyttö kuuluu
hyvään ohjelmointityyliin. Ks. luku 1.2 ja
kurssin tyyliopas
. Ks. myös dokumentaatiokommentti. - komponentti
- component 1) osa; 2) GUI-komponentti
- konekieli
- machine code/language ohjelmointikieli, joka sopii (tietynlaisten) prosessorien suoritettavaksi ¶ Ks. luku 5.2. Konekielet ovat pääsääntöisesti erittäin matalatasoisia laitteistoriippuvaisia kieliä. Prosessorin käsittelemät konekieliset ohjelmat muodostuvat tällöin (binaari)luvuista, mutta konekielinen ohjelma voidaan esittää myös symbolisessa muodossa. Nykyään ohjelmat usein kirjoitetaan korkean tason kielellä, joka muunnetaan konekieleksi ennen ajamista esimerkiksi kääntämällä. Sanaa “konekieli” voidaan käyttää myös symbolisista konekielistä ja virtuaalikoneiden suoritettaviksi sopivista näennäiskonekielistä.
- konkatenoida
- concatenate sama kuin katenoida
- konkreettinen luokka
- concrete class luokka, joka ei ole abstrakti eikä piirreluokka ¶ “Tavallinen luokka”. Konkreettisessa luokassa ei voi olla abstrakteja metodeja, mutta myös konkreettinen luokka voi toimia yliluokkana kuten abstrakti luokkakin; ks. luku 6.4.
- konstruktori
- (instance) constructor aliohjelma, joka suoritetaan ilmentymää luodessa ¶ Sanalla “konstruktori” viitataan ohjelmakoodiin, joka suoritetaan instantioinnin yhteydessä, kun olion tiedoille on varattu muistitilaa. Scala-ohjelmiin ei kirjoiteta konstruktoria mihinkään erilliseen paikkaan (kuten joissakin muissa kielissä), vaan konstruktori muodostuu luokan runkoon kirjoitetuista käskyistä; ks. luku 2.4. Konstruktorin pääasiallinen tehtävä on alustaa juuri luodun olion tila halutunlaiseksi. Monesti konstruktorille annetaan parametreja, jotka täsmentävät, millainen ilmentymä luokasta halutaan luoda.
- konstruktoriparametri
- constructor parameter konstruktorille välitetty parametri ¶ Ks. luvut 2.3 ja 2.4. Konstruktoriparametreja käytetään, kun luokasta instantioidaan uusia olioita. On tyypillistä, että konstruktoriparametrien arvot sijoitetaan uuden olion ilmentymämuuttujien arvoiksi, mutta niitä voidaan hyödyntää myös muulla tavoin olion alustamisen yhteydessä.
- koodi
- code ks. ohjelmakoodi
- korkeamman asteen funktio
- higher-order function funktio, joka käsittelee toisia funktioita: ottaa niitä parametriksi tai palauttaa niitä ¶ Ks. luku 7.3. Käytetään myös nimeä “korkeamman kertaluvun funktio”. Muunlaisia funktioita voidaan sanoa “ensimmäisen asteen funktioiksi”.
- korkean tason kieli
- high-level language ohjelmointikieli, jonka abstraktiotaso on korkea ja joka ei riipu ohjelmaa suorittavan tietokoneen erityispiirteistä ¶ Kielen “korkeus” on suhteellista, mutta esimerkiksi Scalaa pidetään yleisesti varsin korkean tason ohjelmointikielenä. Vrt. matalan tason kieli ja konekieli. Korkean tason kielet ovat yleensä ihmisten käyttöön sopivampia kuin matalan tason kielet.
- korvata
- override toteuttaa yliluokassa jo määritelty metodi uudelleen ¶ Aliluokassa voidaan korvata yliluokan määrittelemä metoditoteutus toteutuksella, joka sopii aliluokan ilmentymille; ks. luku 6.4.
- kumppaniolio
- companion object yksittäisolio, joka toimii tietyn luokan “kumppanina” ja mallintaa kyseistä luokkaa itseään olio-ohjelmassa ¶ Kumppaniolio on luokkansa kanssa samanniminen ja tulee määritellä samassa lähdekooditiedostossa; ks. luku 4.5. Luokalla ja sen kumppanioliolla on pääsy toistensa tietoihin. Kumppanioliossa voidaan pitää kirjaa esimerkiksi luokkaan liittyvistä vakioista tai muusta sellaisesta tiedosta, joka liittyy luokan edustamaan käsitteeseen mutta ei ole ilmentymäkohtaista.
- kuormittaa
- overload määritellä samaan ohjelmakomponenttiin (esim. luokkaan) keskenään samannimisiä funktioita, joilla kuitenkin on erilaiset parametrit ja siten eri puumerkit ¶ Ks. luku 3.5.
- kutsua
- call/invoke/apply määrätä funktio suoritettavaksi ¶ Ks. funktiokutsu.
- kutsumuoto
- signature sama kuin puumerkki
- kutsupino
- (call) stack pinotyyppinen kehyksiä sisältävä tietorakenne, jonka avulla pidetään ohjelma-ajon aikana kirjaa kullakin hetkellä käynnissä olevista funktiokutsuista ¶ Ks. luvut 1.7 ja 1.8.
- käsky
- tietokonetta ohjeistava määräys ¶ “Käsky”-sanaa käytetään kurssilla hyvin epämuodollisesti mistä tahansa tietokoneen komentamisesta. Esimerkiksi tilan muuttamiseen käytettävät lauseet ovat käskyjä, samoin REPLin evaluoitaviksi annetut tilaa muuttamattomat lausekkeet.
- käynnistysolio
- main object (Scalassa:) sovellukseen kuuluva yksittäisolio, jonka yhteyteen kirjataan, mitä tietokoneen kuuluu tehdä, kun kyseinen sovellus käynnistetään ¶ Ks. luku 2.7.
- käyttöalue
- scope se osa ohjelmakoodia, josta käsin tiettyä ohjelman osaa voi käyttää ¶ Esimerkiksi Scalassa luokan julkisen metodin käyttöalue on koko ohjelma, yksityisen vain tuo luokka itse (mahdollisine kumppaniolioineen), ja funktion parametrimuuttujan kyseisen funktion runko. Ohjelman lohkorakenne vaikuttaa käyttöalueeseen; ks. luku 5.4. Aihetta sivutaan myös luvussa 11.3.
- käyttöjärjestelmä
- operating system ohjelmisto, joka hallinnoi laitteiston käyttöä ja jonka avulla voidaan käynnistää sovellusohjelmia ¶ Käyttöjärjestelmä mm. huolehtii laitteistoresurssien (muisti, prosessori, tiedostot, tietoverkko, oheislaitteet ym.) käytöstä.
- käyttöliittymä
- user interface ohjelman tai laitteen se osa, jonka kanssa käyttäjä vuorovaikuttaa ¶ Sovellusohjelman käyttöliittymä voi esimerkiksi perustua tekstikonsoliin tulostuviin kirjoitusmerkkeihin tai se voi olla graafinen.
- käyttöliittymätapahtuma
- GUI event (graafiseen) käyttöliittymään liittyvä tapahtuma ¶ Esimerkiksi hiiren liikkeet sekä käyttöliittymän nappuloiden painaminen ovat käyttöliittymätapahtumia. Ks. luku 11.2.
- käännösaikainen virhe
- compilation-time error virhe, joka havaitaan automaattisesti ohjelmaa staattisesti käsittelemällä eli ohjelmaa ajamatta; erityisesti: virhe, joka havaitaan ohjelmaa kääntäessä ¶ Ks. luvut 1.8 ja 3.1 ja vrt. ajonaikainen virhe ja looginen virhe. Monet käännösaikaiset virheet ovat syntaksivirheitä.
- kääntäjä
- compiler apuohjelma, joka muodostaa annetusta lähdekoodista toisenkielisen version; erityisesti: apuohjelma, joka muodostaa käännetyn version staattisesti, ohjelma-ajosta erillään ¶ Ohjelmia voidaan kääntää välikielelle tai suoraan konekieleksi. Scala-ohjelmia käännetään yleensä Java-virtuaalikoneelle sopivalle välikielelle. Ks. luku 5.2 ja vrt. tulkki.
- laiteajuri
- device driver ks. ajuri
- lajitteleminen
- sorting sama kuin järjestäminen
- lambdafunktio
- lambda function sama kuin nimetön funktio ¶ Erityisesti kielissä, joissa sellaisen määrittelemiseen käytetään sanaa “lambda” tai vastaavaa kreikkalaista aakkosta.
- lambdalauseke
- lambda expression sama kuin funktioliteraali ¶ Erityisesti kielissä, joissa funktioliteraaleissa käytetään sanaa “lambda” tai vastaavaa kreikkalaista aakkosta.
- lause
- statement
käsky, joka määrää tietokoneen suorittamaan jonkin toimenpiteen ¶ Ks. luku 1.3. Esimerkiksi Scalan tulostuskäsky
println(1 + 1)
ja sijoituskäskya = 10
ovat lauseita. Lauseella ei välttämättä ole merkityksellistä arvoa; esimerkiksi Scala-lause voi tuottaa vain Unit-arvon ja olla silti hyödyllinen. Lause voi sisältää lausekkeita, jotka evaluoidaan lauseen suorittamisen aikana; esimerkiksi lauseprintln(1 + 1)
sisältää lausekkeen1 + 1
. Lauseita voi kirjoittaa ohjelmakoodiin peräkkäin, ja näin voidaan määrätä toimenpiteitä suoritettaviksi peräkkäisessä järjestyksessä. Yksi lausekekin voi muodostaa lauseen. Scala-kielessä funktioiden ja luokkien määrittelyt sekäimport
-käskyt luetaan virallisesti eräänlaisiksi lauseiksi nekin; ne eivät toisaalta ole lausekkeita, koska niille ei voida määrittää arvoa. (Vrt. tulostuslause on Scala-ohjelmassa paitsi lause myös lauseke, koska sillä on Unit-arvo.) Lauseen käsite liittyy erityisesti imperatiiviseen ohjelmointiin; puhtaasti funktionaalisessa ohjelmoinnissa lausekkeen käsite riittää. - lauseke
- expression
ohjelmointikielen ilmaisu, jolle voidaan määrittää arvo ¶ Ks. esim. luku 1.3 ja vrt. lause. Esimerkiksi literaalit, aritmeettiset lausekkeet kuten
1 + 1
, muuttujien nimet ja ohjelmakoodiin kirjoitetut funktiokutsut ovat lausekkeita. Arvon määrittämistä sanotaan lausekkeen evaluoimiseksi. - LIFO
- LIFO pinojen noudattama periaate, jonka mukaan alkiota poistettaessa poistetaan aina viimeksi lisätty alkio ¶ Sanoista last in, first out. Ks. luku 12.1.
- liittää (piirre)
- mix in (a trait) määritellä piirreluokka luokan (tai yksittäisolion) yläkäsitteeksi ¶ Ks. luku 6.2. Kun luokkaan on liitetty tietty piirre, sen ilmentymät ovat paitsi luokan itsensä tyyppisiä, myös liitetyn piirreluokan tyyppisiä. Piirteen liittävä luokka kuvaa piirreluokan kuvaaman käsitteen alakäsitettä. Luokkaan voi liittää useita piirreluokkia.
- lippu
- flag muuttuja tai vastaava tietorakenne, jota käytetään ilmoittamaan jostakin kaksijakoisesta asiaintilasta ¶ Ks. luku 6.3 ja yksisuuntainen lippu. Lippu voidaan toteuttaa esimerkiksi totuusarvoisena muuttujana.
- Liskovin periaate
- Liskov substitution principle tietotyyppien määrittelyyn liittyvä suunnitteluperiaate, jonka mukaan alatyypin (esim. aliluokan) arvoja täytyy voida mielekkäästi käyttää missä tahansa yhteydessä, jossa ylätyypinkin (esim. yliluokan) arvoja voi ¶ Ks. luku 6.4.
- literaali
- literal
yksinkertainen lauseke, jonka arvo on kirjoitettu suoraan ohjelmakoodiin ¶
Esimerkiksi
10
on kokonaislukuliteraali ja"laama"
merkkijonoliteraali. Ks. myös funktioliteraali. - liukuluku
- floating point number tietokoneissa yleisesti käytetty bittitason esitystapa desimaaliluvuille ¶ Liukuluvun määrittävät etumerkkibitti, kerroin eli mantissa, kantaluku ja eksponentti. Kantalukuna käytetään yleensä (esim. Scalassa) lukua kaksi ja muut osat tallennetaan lukukohtaisesti. Aihetta sivutaan luvussa 5.2.
- logiikkaoperaattori
- logical operator
operaattori, jonka operandit ovat totuusarvoja
ja joka tuottaa totuusarvotyyppisen tuloksen ¶ Esimerkiksi
&&
(and) ja||
(or) ovat logiikkaoperaattoreita; ks. luku 3.4. - lohko
- block (Scalassa:) aaltosulkeiden sisään kirjoitettu peräkkäisten lauseiden yhdistelmän muodostama lauseke ¶ Esimerkiksi funktion runko määritellään lohkoksi, kun runkoon kuuluu useita peräkkäisiä lauseita. Samoin if-valintalauseiden ehdollisesti suoritettavat osat voidaan kirjata lohkoiksi. Lohkot vaikuttavat käyttöalueisiin. Erityisesti: paikallisen muuttujan käyttöalue rajautuu lohkoon, jossa muuttuja on määritelty; ks. luku 5.4.
- looginen operaattori
- logical operator sama kuin logiikkaoperaattori
- looginen virhe
- logical error virhe, joka ohjelman ei-toivottuna toimintana eikä teknisenä virhetilanteena ¶ Esimerkiksi jos ohjelma laskee vääriä tuloksia, tervehtii käyttäjää vääränlaisella viestillä, tai jättää toivottuja toimintoja suorittamatta, on kyseessä looginen virhe. Vrt. käännösaikainen virhe ja ajonaikainen virhe.
- lukea
- read 1) vastaanottaa tietoa ohjelmaan sen ulkopuolelta (osa I/O:ta); 2) selvittää muuttujaan tallennettu arvo (kun muuttujaa käytetään lausekkeessa) ¶ Ks. luku 9.4; ks. myös syöte.
- luokan runko
- class body luokan määrittelyn varsinainen sisältö ¶ Luokan rungossa mm. määritellään luokkaan kuuluvat ilmentymämuuttujat ja metodit. Scalassa runko rajataan aina aaltosuluilla. Scala-luokan runkoon kirjoitetut lauseet suoritetaan, kun luokasta luodaan ilmentymä; runko siis toimii konstruktorina.
- luokka
- class
1) olioita kuvaava tietotyyppi; 2) tällaisen tietotyypin määrittely
ohjelmakoodissa ¶ Ks. luvut 2.1, 2.3 ja 2.4. Luokka määrittelee millaisia tietyntyyppiset oliot ovat;
vrt. yksittäisolio, joka on määritelty kaikista muista olioista erikseen. Siinä
missä olio kuvaa yksittäista asiaa, luokka kuvaa yleisempää käsitettä, josta oliot ovat yksittäistapauksia.
Luokan voi instantioida, jolloin syntyy uusi kyseisen tyyppinen olio eli luokan
ilmentymä. Ks. myös piirreluokka,
abstrakti luokka. (Tarkennus: kurssilla sanomme Scala-luokkia tietotyypeiksi tai
tietotyyppien määrittelyiksi, mikä on pieni yksinkertaistus. Huolellisemmin sanoen Scalan luokat ovat
määrittelyjä, jotka voivat kuvata yhden tai useamman tietotyypin. Esimerkiksi luokka
Int
kuvaa yhden tietotyypin, ja luokkaBuffer
kuvaa useita tietotyyppejä, jotka saadaan käyttämällä eri tyyppiparametreja:Buffer[Int]
,Buffer[String]
, jne.) - luokkahierarkia
- class hierarchy luokkien välisten ylä- ja alakäsitesuhteiden kokonaisuus, luokkien “sukupuu” ¶ Ks. luku 6.4 sekä yli- ja aliluokka.
- luokkakirjasto
- class library kirjasto, joka sisältää luokkia
- luokkatiedosto
- class file
eräänlainen Java-virtuaalikoneelle tarkoitettu tiedosto,
joka sisältää sille sopivaa välikieltä ¶ Scala-ohjelmat yleensä käännetään
luokkatiedostoiksi Java-virtuaalikoneessa suorittamista varten. Luokkatiedostot nimetään
.class
-päätteisiksi. - lähdekoodi
- source code tekstimuotoinen kääntämätön ohjelmakoodi, joka on tarkoitettu ihmisen käsiteltäväksi ¶ Ks. luku 5.2. Kurssilla käsittelemme Scala-kielellä kirjoitettua lähdekoodia.
- maaginen luku t. arvo
- magic number/value
literaali, jonka tarkoitus ohjelmassa ei ole ohjelmakoodista ilmeinen ¶
Maagiset luvut hankaloittavat ohjelman lukemista ja voivat aiheuttaa
implisiittisiä riippuvuuksia.
Niitä on hyvä välttää käyttämällä esimerkiksi vakioita niiden sijaan; ks.
kurssin tyyliopas
. Ks. myös luku 10.1. - matalan tason kieli
- low-level language ohjelmointikieli, jonka abstraktiotaso on matala ja joka on riippuvainen ohjelmaa suorittavan tietokoneen erityispiirteistä ¶ Matalan tason kieliksi sanotaan yleensä lähinnä konekieliä. Matalan tason kielillä voi myös ohjelmoida, ja näin voidaan saavuttaa parempi suoritustehokkuus, mutta korkean tason kielet ovat moneen tarkoitukseen paljon käytännöllisempiä.
- merkkijono
- string
peräkkäisten merkkien jono, jossa kullakin merkillä on oma sijaintinsa ¶ Esimerkiksi merkkijonossa
laama
on viisi merkkiä tietyssä järjestyksessä. Merkkijonot ovat eräs yleisimmistä tietokoneohjelmissa käytetyistä tietotyypeistä. Scalassa merkkijonoja kuvaa ennen muutaString
-tietotyyppi (luku 1.3), mutta myös vaihtoehtoisia esitystapoja merkkijonoille on olemassa (ks. esim. luku 7.5). Monien ohjelmointikielten peruskirjastoissa on paljon merkkijonojen käsittelemiseen sopivia aliohjelmia (ks. esim. luku 4.4). Merkkijonot voidaan lukea indeksoiduksi kokoelmatyypiksi, jossa kokoelman alkiot ovat yksittäisiä merkkejä (luku 5.4). - merkkijonoupotus
- string interpolation lausekkeiden kirjoittaminen merkkijonoliteraalin sisään siten, että syntyvän merkkijonon osiksi tulevat upotettujen lausekkeiden arvoja kuvaavat merkit ¶ Ks. luku 4.4.
- metodi
- method olioon liitetty funktio ¶ Olion metodit määrittävät, millaisiin viesteihin olio osaa reagoida ja miten se niihin reagoi; ks. luku 2.1. Scala-ohjelmakoodissa kukin metodin määrittely kirjoitetaan osaksi joko yksittäisolion tai luokan määrittelyä. Scalassa myös operaattorit ovat metodeita; ks. luku 4.4. Keskustelufoorumeita lukiessa on hyvä tietää, että kaikki Scala-ohjelmoijat eivät käytä sanaa aivan samalla tavalla kuin me ja virallinen Scala-sanasto.
- metodikutsu
- method call funktiokutsu, jossa kutsuttu funktio on metodi ¶ Ks. luku 2.1. Scalassa metodikutsulausekkeen voi kirjoittaa joko pistenotaatiolla tai operaattorinotaatiolla.
- metodin runko
- method body ks. funktion runko ¶ Metoditkin ovat funktioita.
- modulo-operaattori
- modulo operator
operaattori jakojäännöksen laskemiseen ¶ Scalassa ja monessa muussa ohjelmointikielessä
modulo-operaattori on
%
; ks. luku 1.3. - monikko
- tuple usean keskenään mahdollisesti erityyppisen alkion yhdistelmä, jossa alkioita on vakiomäärä ja jossa ne ovat määrätyssä järjestyksessä ¶ Monikoiden voidaan ajatella olevan eräs kokoelmatyyppi. Kaksialkioista monikkoa sanotaan pariksi. Esimerkiksi Scala-kielessä monikot eroavat muista kokoelmatyypeistä eritoten siten, että kullakin monikon osalla on oma staattinen tyyppinsä, kun esimerkiksi vektorin alkioille määrätään jokin yhteinen staattinen tyyppi.
- moniperintä
- multiple inheritance periytyminen useasta välittömästä yliluokasta ¶ Scalassa ei ole varsinaista moniperintää useasta yliluokasta, mutta piirreluokkien avulla voi käytännössä täyttää samat tarpeet.
- muisti
- memory tietokoneen osa tai oheislaite, johon voidaan varastoida tietoa hetkellisesti tai pysyvämmin muistityypistä riippuen ¶ Ohjelmien käsittelemää tietoa pidetään tallessa muistissa, yleensä bitteinä. Kullakin muistin kohdalla on oma osoitteensa, eräänlainen järjestysnumero, joka identifioi kyseisen muistipaikan. Ohjelmien ajonaikaista muistinkäyttöä kuvataan tällä kurssilla abstrakteilla, animoiduilla diagrammeilla luvusta 1.3 alkaen.
- muistivuoto
- memory leak haitallinen ohjelman toimintatapa, jossa ohjelma ei vapauta kaikkea varaamaansa muistia muuhun käyttöön sittenkään, kun ei tuota muistitilaa enää tarvitse ¶ Muistia vuotava ohjelma varaa käyttöönsä (kenties vähitellen) yhä enemmän muistia, mikä voi mm. johtaa ohjelman kaatumiseen, kun tarjolla olevat muistiresurssit ehtyvät. Muistivuotoja syntyy esimerkiksi silloin, jos roskien viemää muistitilaa ei vapauteta.
- muodollinen parametri
- formal parameter sama kuin parametrimuuttuja
- muuttuja
- variable nimetty varastointipaikka yhdelle arvolle tietokoneen muistissa ¶ Ks. luvut 1.4 ja 2.5.
- muuttujan rooli
- role of a variable eräänlainen muuttujan käyttötavan kuvaus; yksi useasta tyypillisestä muuttujan käyttötavasta ¶ Ks. esim. luvut 2.5, 5.3. Rooleja ovat mm. kiintoarvo, tilapäissäilö, kokooja, tuoreimman säilyttäjä, säiliö, sopivimman säilyttäjä ja yksisuuntainen lippu. Rooleilla ei ole teknistä merkitystä, vaan ne ovat ihmisille tarkoitettuja kuvauksia muuttujien käytöstä ohjelmissa.
- muuttumaton
- immutable (kokoelmasta tai muusta oliosta tai tietorakenteesta:) sellainen, jonka tila ei missään tapauksessa vaihdu toiseksi ohjelma-ajon aikana ¶ Esimerkiksi vektorit ovat muuttumattomia kokoelmia, koska kerran luodussa vektorissa on pysyvästi samat alkiot; puskuri taas on muuttuvatilainen. Ks. luku 7.5.
- muuttuvatilainen
- mutable (kokoelmasta tai muusta oliosta tai tietorakenteesta:) sellainen, jonka tila voi vaihtua toiseksi ohjelma-ajon aikana ¶ Esimerkiksi puskurit ovat muuttuvatilaisia kokoelmia, koska samassa puskurissa voi olla eri hetkinä eri sisältö; vektori taas on muuttumaton. Ks. luku 7.5.
- myöhäinen sidonta
- late binding sama kuin dynaaminen sidonta
- nimetön funktio
- anonymous function funktioliteraalin määrittelemä ja siis nimeämätön funktio ¶ Ks. luku 7.4.
- nimetön parametri
- alaviivalla merkitty nimeämätön parametrimuuttuja Scalan lyhennetyissä funktioliteraaleissa ¶ Ks. luku 7.4.
- nimiö
- label yksinkertainen GUI-komponentti, jonka tehtävänä on näyttää käyttäjälle jokin teksti ja/tai kuva ¶ Myös esim. “labeli”, “lappu”. Ks. luku 11.2.
None
- None
Option-tyyppinen yksittäisolio, joka ei sisällä yhtään tietoalkiota ¶
Ks. luku 3.3 ja vrt. Some. Toisin kuin null-viittauksen, viittausta
None
-olioon ei voi sijoittaa mielivaltaisen tyyppiseen muuttujaan;Option
-tyyppiseen muuttujaan kuitenkin voi. - notaatio
- notation merkintätapa ¶ Ks. pistenotaatio ja operaattorinotaatio.
- null-viittaus
- null reference olemattoman tiedon merkkinä käytetty arvo; viittaus, joka ei osoita mihinkään kohtaan tietokoneen muistissa ¶ Esimerkiksi Scalassa null-arvo on tyyppiyhteensopiva lähes minkä tahansa tietotyypin kanssa (vrt. Option, joka ei ole). Null-viittausten käyttö on omiaan aiheuttamaan bugeja, ja niiden käyttöä usein vältetään Scala-ohjelmoinnissa; ks. luvut 3.2, 3.3 ja 11.3.
NullPointerException
- NullPointerException
sellaisten ajonaikaisten virheiden tyyppi, jotka syntyvät yritettäessä käyttää
null-viittauksen osoittamaa tietoa (jota ei ole) ¶ Esimerkiksi jos Scala-ohjelmassa
yritetään kutsua metodia muuttujalle, johon on tallennettu null-viittaus eikä viittausta
olemassa olevaan olioon, syntyy
NullPointerException
; ks. luku 3.2. Tämä virhetyyppi esiintyy samalla nimellä myös mm. Java-ohjelmointikielessä. Monissa muissa kielissä on vastaavia virhetyyppejä eri nimillä. - näennäissatunnaisluku
- pseudorandom number luku, jonka on tuottanut aitoa satunnaisuutta jäljittelevä algoritmi ¶ Ks. luku 7.2 ja satunnaislukujen siemen.
- näkyvyys
- visibility
ohjelman osan ominaisuus, joka kuvaa sen käyttöalueen ¶
Voidaan esimerkiksi sanoa, että
private
on “näkyvyysmääre” ja että luokkaan yksityiseksi määritelty muuttuja “näkyy” vain kyseisen luokan sisällä. Object
- Object (Scala-näkökulmasta:) toinen nimi luokalle AnyRef sellaisissa yhteyksissä, joissa Scala-ohjelmaa ajetaan JVM-alustalla
- ohjelma
- program 1) tietokoneen suoritettavaksi tarkoitettu toimintaohje; 2) tällaisen ohjeistuksen suorittamisesta syntyvä dynaaminen prosessi ¶ Ohjelmia ovat mm. sovellukset, käyttöjärjestelmät ja ajurit; ks. luku 1.2. Kun ohjelma on kokonaisuus, johon kuuluu oheistiedostoja tai erillisiä pienempiä ohjelmia, voidaan siitä käyttää myös termiä ohjelmisto.
- ohjelmakirjasto
- software library ks. kirjasto
- ohjelmakoodi
- program code 1) ohjelmateksti, lähdekoodi; 2) ohjelma konekielisessä muodossa ¶ Kurssillamme ohjelmakoodi käytännössä tarkoittaa Scala-kielistä lähdekoodia; konekielisistä ohjelmista ei puhuta kuin hitunen luvussa 5.2.
- ohjelmisto
- software ohjelma tai ohjelmien yhdistelmä, joka muodostuu useasta ohjelmasta tai johon liittyy oheistiedostoja varsinaisen suoritettavan ohjelman lisäksi ¶ Käytetään erityisen usein laajemmista kokonaisuuksista.
- ohjelmointi
- programming tietokoneohjelmien laatiminen: niiden suunnitteleminen ja toteuttaminen ¶ Ks. luku 1.2.
- ohjelmointikieli
- programming language keinotekoinen ohjelmien kirjoittamiseen tai muuten ilmaisemiseen tarkoitettu kieli
- ohjelmointiparadigma
- programming paradigm ohjelmoinnin suuntaus; tapa lähestyä ja ratkaista ohjelmointiongelmia ¶ Ks. luvut 2.1 ja 7.5. Kurssilla puhetta on olio-ohjelmoinnista, imperatiivisesta ohjelmoinnista, funktionaalisesta ohjelmoinnista ja hieman myös proseduraalisesta ohjelmoinnista.
- ohjelmointityyli
- programming style
ohjelmien laatimiseen liittyvät (kenties kirjoittamattomat) säännöt, toimintatavat tai
periaatteet; erityisesti: säännöt, toimintatavat tai periaatteet, jotka liittyvät lähdekoodin
muotoilemiseen ¶ Hyvällä ohjelmointityylillä pyritään auttamaa ohjelmaa lukevia ja sitä muokkaavia ihmisiä;
ks.
kurssin tyyliopas
. - olio
- object eräänlainen yksittäistä asiaa mallintava abstraktio; ohjelman osa, joka osaa vastaanottaa viestejä ja reagoida niihin ohjelmoijan määrittelemällä tavalla ¶ Oliot ovat olio-ohjelmoinnin perusta; ks. luku 2.1. Olioiden toiminnallisuus toteutetaan määrittelemällä niille funktioita, joita kutsutaan metodeiksi. Oliolla voi olla muuttuva tila. Ks. myös yksittäisolio ja luokka.
- olio-ohjelmointi
- object-oriented programming yleinen ohjelmointiparadigma, jossa ohjelmat rakennetaan kuvaamalla ongelmakenttä olioina ja niiden välisenä viestintänä ¶ Ks. esim. luvut 2.1 ja 7.5. Scala on puhdas olio-ohjelmointikieli: kaikki tieto esitetään olioina (ks. luvut 4.4 ja 4.5). Olio-ohjelmointiin liitetään usein myös esimerkiksi luokan ja periytymisen käsitteet, mutta ne eivät oikeastaan ole olio-ohjelmoinnin kannalta välttämättömiä.
- olion muuttuja
- ilmentymämuuttuja tai yksittäisolion jäsenmuuttuja ¶ Kurssilla käytetty “epävirallinen” ilmaisu. Olioiden tiedot varastoidaan olioiden muuttujiin.
- OOP
- OOP object-oriented programming eli olio-ohjelmointi
- operaattori
- operator
kirjoitusmerkki tai merkkien yhdistelmä, joka lähdekoodiin kirjoitettuna määrää tietyn
toimenpiteen suoritettavaksi ohjelmointikielen sääntöjen mukaisesti ¶ Esimerkiksi
+
on monessa ohjelmointikielessä yhteenlaskuoperaattori ja<=
eräs vertailuoperaattori. Kuten operaattoritkin, myös funktiokutsut määräävät toimenpideitä suoritettaviksi, ja ero operaattorien ja funktiokutsujen välillä voi olla häilyvä. Operaattoreiksi sanotaan yleensä sellaisia merkkejä tai merkkiyhdistelmiä, joita käytetään hyvin yksinkertaisella ja tyypillisistä funktiokutsuista poikkeavalla syntaksilla. Scalassa ei varsinaisesti ole erillistä operaattorin käsitettä ollenkaan, vaan metodeita on mahdollista käyttää joko operaattorinotaatiolla tai pistenotaatiolla (luku 4.4). Metodeita kuten+
, joita käytetään yleensä operaattorinotaatiolla, voidaan Scalassakin nimittää operaattoreiksi. - operaattorinotaatio
- (infix) operator notation
metodien kutsumiseen käytetty merkintätapa, jolle on ominaista välimerkkien puuttuminen
metodikutsulausekkeesta ¶ Esim.
olio metodi parametriarvo
tai1 + 1
. Scalassa operaattorinotaatiota voi käyttää tietyissä yhteyksissä pistenotaation sijaan; ks. luku 4.4 jakurssin tyyliopas
. Ks. myös operaattori. - operandi
- operand
1) lauseke, johon operaattori kohdistetaan; 2) tällaisen lausekkeen arvo
¶ Esimerkiksi laskutoimituksessa
2 * (1 + 10)
ovat kertolaskuoperaattorin operandeina literaali2
ja aritmeettinen lauseke(1 + 10)
. Option
- Option
luokka, jonka avulla voidaan kuvata tietoa, joka saattaa puuttua ¶ Kukin
Option
-tyyppinen arvo on olio, joka joko sisältää yhden tietoalkion (Some) tai on tyhjä (None); ks. luku 3.3.Option
-luokan käyttö tekee arvojen mahdollisesta puuttumisesta eksplisiittisen osan ohjelmakoodia ja mahdollistaa käännösaikaiset virheilmoitukset sellaisissa tilanteissa, joissa null-viittauksia käyttämällä syntyisi ajonaikaisia virheitä.Option
on yksinkertainen alkiokokoelmatyyppi; ks. luku 8.2. - paikallinen muuttuja
- local variable funktion sisään määritelty muuttuja ¶ Ohjelmoija voi määritellä funktion rungossa paikallisia muuttujia (ks. esim. luvut 1.7 ja 5.3), minkä lisäksi parametrimuuttujia voidaan sanoa paikallisiksi muuttujiksi. Paikalliset muuttujat pidetään tallessa kutsupinon kehyksissä, joten ne ovat olemassa vain väliaikaisesti funktiokutsun aikana; ks. kuitenkin sulkeuma. Ks. myös käyttöalue.
- pakkaus
- package eräissä ohjelmointikielissä käytetty tapa ryhmitellä ohjelmien osia nimettyihin kokonaisuuksiin ¶ Esimerkiksi Scala-luokat sijoitetaan johonkin pakkaukseen; ks. luku 1.2. Yhdessä Eclipse-projektissa voi olla yhteen tai useampaan pakkaukseen kuuluvia osia. Saman pakkauksen jäseninä ei voi olla keskenään samannimisiä luokkia tai yksittäisolioita, mutta eri pakkauksissa voi. Useimpien pakkausten sisältö tulee erikseen ottaa käyttöön ennen kuin sitä voi hyödyntää tuon pakkauksen ulkopuolelta käyttämättä täydellisiä nimiä; ks. luvut 1.5 ja 2.6. Ks. myös pakkausolio.
- pakkausolio
- package object itsenäinen yksittäisolio, joka kuvaa pakkauksen ja jonka jäsenet muodostavat tuon pakkauksen sisällön ¶ Ks. luku 4.4.
- palauttaa
- return välittää palautusarvo ¶ Palauttaminen päättää funktiokutsun.
- palautusarvo
- return value arvo, joka välitetään funktiokutsun päättyessä funktion kutsujalle ja josta tulee funktiokutsulausekkeen arvo ¶ Funktio voi välittää palautusarvollaan esimerkiksi laskutoimituksen lopputuloksen tai tietoa toiminnon onnistumisesta tai epäonnistumisesta. Joillakin funktioilla ei ole merkityksellistä palautusarvoa lainkaan; Scala-ohjelmissa tällaiset funktiot (eli proseduurit) palauttavat Unit-arvon merkkinä siitä, ettei merkityksellistä palautusarvoa ole. Scala-funktion palautusarvo on sen lausekkeen arvo, joka funktiokutsun aikana evaluoidaan viimeiseksi. Ks. myös return.
- paluuarvo
- return value sama kuin palautusarvo
- paneeli
- panel GUI-komponentti, joka voi sisältää useita muita komponentteja ja jota käytetään muiden komponenttien ryhmittelemiseen ja asemointiin ¶ Ks. luku 11.2.
- parametri
- parameter/argument ohjelman osalle välitettävä tieto; erityisesti: funktiolle välitettävä lisätieto, joka tarkentaa sitä, mitä funktiokutsun tulisi tehdä ¶ Ks. luvut 1.6, 1.7 ja 2.1. Funktion vastaanottamien parametrien määrä (nolla tai useampia) kirjataan funktion määrittelyyn. Parametreihin liittyvä termistö vaihtelee eri yhteyksissä. Tällä kurssilla sanomme, että funktiokutsuun kirjataan parametrilausekkeita. Kun funktiokutsu suoritetaan, parametrilausekkeet evaluoidaan ja saadaan parametriarvoja, jotka välitetään funktiokutsua varten luotuun kehykseen, jossa ne tallentuvat parametrimuuttujiin. Ks. myös parametriluettelo, tyyppiparametri ja argumentti.
- parametriarvo
- argument arvo, joka saadaan evaluoimalla parametrilauseke ¶ Parametriarvoja välitetään funktiokutsua vastaavaan kehykseen parametrimuuttujiin; ks. luku 1.4. Myös termiä “argumentti” käytetään samasta asiasta.
- parametrilauseke
- argument lauseke, joka kirjoitetaan funktiokutsulausekkeeseen ja joka evaluoimalla tuotetaan parametriarvo ¶ Ks. luvut 1.3 ja 1.4. Myös termiä “argumentti” käytetään samasta asiasta.
- parametriluettelo
- parameter list 1) parametrimuuttujia sisältävä luettelo funktion määrittelyssä; 2) parametrilausekkeita sisältävä luettelo funktiokutsulausekkeessa ¶ Parametriluettelot kirjoitetaan Scalassa kaarisulkeisiin. Luetteloja voi olla yksi (ks. luvut 1.6 ja 1.7), nolla (ks. luvut 1.6, 1.7 ja 2.6), tai useampia (ks. luku 7.3).
- parametrimuuttuja
- parameter (variable) paikallinen muuttuja, joka on määritelty puumerkissä ja jonka arvoksi tallentuu parametriarvo funktiokutsun alkaessa ¶ Ks. luku 1.7. Scalassa parametrimuuttujat ovat aina val-muuttujia. (Scala-kielen virallisessa terminologiassa parametrimuuttujat on itse asiassa erotettu paikallisista muuttujista rinnakkaiseksi käsitteeksi, mutta kurssilla käytämme näitä termejä tässä kuvattuun tapaan.)
- pari
- pair monikko, johon sisältyy tasan kaksi alkiota ¶ Kurssilla pareja käytetään lähinnä avain–arvo pareina.Eräs toinen yleinen käyttötarkoitus pareille on kahden arvon palauttaminen funktiosta: vaikka (Scala-)funktio voikin palauttaa vain yhden arvon, voi tämä arvo olla esimerkiksi pari.
- perintä
- inheritance sama kuin periytyminen
- periytyminen
- inheritance olio-ohjelmointiin liittyvä tekniikka, jossa suhdetta ylä- ja alakäsitteen välillä kuvataan määrittelemällä luokalle (tai yksittäisoliolle) yliluokka ¶ Ks. luku 6.4. Määritelmästä riippuen piirreluokat mielletään joko periytymiselle rinnakkaiseksi tavaksi kuvata ylä- ja alakäsitesuhteita ohjelmissa tai yhdeksi periytymisen muodoksi.
- perustapaus
- base case rekursiivisen algoritmin tai ohjelman osa, jossa (osa)ongelman ratkaisu selviää ilman rekursiivista kutsua ¶ Ks. luku 11.3.
- pikseli
- pixel kuvapiste ¶ Tietokoneen näytölle piirtyvä näkymä koostuu pikseleistä. Erivärisiä pikseleitä käyttämällä saadaan näkyviin mm. kuvia, kirjoitusmerkkejä eri kirjasinlajeilla jne. Sana on lyhennys englannin sanoista picture element.
- piirre
- trait 1) sama kuin piirreluokka; 2) (kuten yleiskielessä:) ominaisuus, seikka ¶ Sekaannusten välttämiseksi kurssilla käytetään yleensä pidempää sanaa “piirreluokka”, kun halutaan viitata nimenomaan piirreluokkiin.
- piirreluokka
- trait
luokka, jolle pätee: 1) siinä voi olla (myös) abstrakteja metodeja;
2) se voidaan liittää alakäsitettä kuvaavaan luokkaan (tai yksittäisolioon); 3) siitä ei voi luoda ilmentymiä kuin alakäsitteittensä kautta; 4) sillä
ei voi olla konstruktoriparametreja ¶ Ks. luvut 6.2 ja 6.4 ja vrt.
abstrakti luokka ja yliluokka. Piirreluokat määritellään Scalassa
sanaa
trait
sananclass
sijaan käyttäen. (Huom. kurssin materiaalissa piirreluokatkin luetaan eräänlaisiksi luokiksi, toisin kuin englanninkielisessä Scala-kirjallisuudessa, jossa trait ja class ovat usein keskenään rinnakkaiset termit.) - pino
- stack 1) eräänlainen LIFO-periaatetta noudattava alkiokokoelma; 2) kutsupino ¶ Pinotyyppisiä alkiokokoelmia on (esim. Scalassa) sekä muuttuvatilaisia että muuttumattomia.
- pistenotaatio
- dot notation
metodien kutsumiseen käytetty merkintätapa, jolle on ominaista kutsun vastaanottavan
olion ja metodin nimen väliin kirjoitettava pistemerkki ¶ Esim.
olio.metodi(parametri)
. Pistenotaatiota käytetään monissa ohjelmointikielissä, mm. Scalassa. Ks. luvut 2.1, 4.4 sekäkurssin tyyliopas
, ja vrt. operaattorinotaatio. - poikkeus
- exception eräistä ajonaikaisista virheistä käytetty nimitys
- poikkeustenkäsittely
- exception handling ajonaikaisten virheiden havaitseminen ja niihin reagoiminen ¶ Ks. luku 9.4 sekä try, catch ja finally.
- projekti
- project kokonaisuus, jollaisiin ohjelmointihankkeeseen liittyviä tiedostoja voi ryhmitellä, jotta niitä olisi helpompi hallita ¶ Ks. luku 1.2. Esimerkiksi Eclipsessä ohjelmia voi jaotella projekteiksi kutsutuiksi kokonaisuuksiksi. Huom. projekti on apuohjelmaan kuten sovelluskehittimeen liittyvä käsite, kun taas pakkaus on ohjelmointikielen käsite.
- proseduraalinen ohjelmointi
- procedural programming yleinen ohjelmointiparadigma, jossa ohjelmat rakennetaan kuvaamalla ongelmakenttä aliohjelmina, jotka kutsuvat edelleen toisia aliohjelmia suorittaakseen osatehtäviä ¶ Ks. luku 7.5 ja vrt. olio-ohjelmointi, jossa ongelma jäsennetään olioina ja aliohjelmat (metodit) liitetään niihin. Proseduraalinen ohjelmointi on keskeinen imperatiivisen ohjelmoinnin muoto.
- proseduuri
- procedure funktio, joka ei palauta arvoa tai palauttaa vain sisällöttömän yksikkötyyppisen arvon ¶ Proseduurit ovat mielekkäitä lähinnä silloin, jos ne ovat tilaa muuttavia.
- pseudokoodi
- pseudocode ihmislukijalle tarkoitettu ainakin jossain määrin ohjelmointikieltä muistuttava tekstimuotoinen kuvaus algoritmista tai ohjelmasta ¶ Ks. esim. luku 2.6. Pseudokoodi on yleensä epätäsmällisempää kuin konkreettinen ohjelmakoodi. Se ei yleisesti ottaen kelpaa tietokoneen käsiteltäväksi. Pseudokoodia käytetään esimerkiksi ohjelmia suunnitellessa ja dokumentoidessa.
- pseudosatunnaisluku
- pseudorandom number sama kuin näennäissatunnaisluku
- puhdas funktio
- pure function tilaa muuttamaton ja tilasta muutenkin riippumaton funktio ¶ Puhdas funktio tuottaa aina saman palautusarvon jokaisella kutsukerralla, jos sille annetaan samat parametriarvot.
- puskuri
- buffer eräänlainen muuttuvatilainen kokoelma, jonka alkiot ovat indeksien mukaisessa järjestyksessä ja joita voi lisätä ja poistaa ¶ Ks. luku 1.5. Vrt. esim. taulukko ja vektori.
- puumerkki
- signature 1) funktion määrittelyn se osa, joka määrittelee, miten funktiota kutsutaan; 2) vastaava määrittely jostakin muusta ohjelman osasta kuin funktiosta ¶ Scala-funktion puumerkin muodostavat sen nimi, parametrimuuttujat tyyppeineen sekä palautusarvon tyyppi. (Paitsi nimettömien funktioiden tapauksessa, jolloin nimeä ei ole.) Funktion runko ei kuulu sen puumerkkiin. Puumerkin tunteminen riittää funktion kutsumiseen teknisessä mielessä; lisäksi on tietysti syytä tuntea funktion tarkoitus ja semantiikka. Englanninkielisellä sanalla “signature” ei ole vakiintunutta suomennosta, ja puumerkkien lisäksi puhutaan myös “signatuureista”, “kutsumuodoista”, ym. Muissa ohjelmointikielissä on Scalasta osin poikkeavia määrittelyjä puumerkille, mutta perusajatus on sama. Ks. myös kuormittaminen.
- pöytätestaus
- desk checking ohjelman tai algoritmin toimivuuden tarkastaminen manuaalisesti, ohjelmaa ajamatta ¶ Pöytätestaava ihminen voi esimerkiksi lukea ohjelmakoodia näytöltä tai paperilta ja käydä mielessään läpi sen suorituksen vaiheita.
- rajapinta
- interface 1) “julkisivu”, jonka kautta tiettyä ohjelman osaa tai muuta palvelua käytetään; 2) (eräissä ohjelmointikielissä:) rajapintaluokka ¶ Scala-kielisen kurssimme kannalta vain 1. merkitys on tärkeä. Esimerkiksi luokalla on rajapinta, johon sisältyvät sen julkiset osat. Rajapinnan tunteminen on välttämätöntä luokan käyttämiseksi, kun taas toteutuksen tunteminen ei ole. Ks. luku 2.6 ja vrt. käyttöliittymä.
- rajapintaluokka
- interface eräs abstrakteja luokkia ja erityisesti piirreluokkia muistuttava rakenne ¶ Ei esiinny Scalassa vaan eräissä muissa ohjelmointikielissä, joista tunnetuimpana Javassa. Javan rajapintaluokat eroavat Scalan piirreluokista eritoten siten, että rajapintaluokassa voi määritellä kyseisen tyyppisille olioille ainoastaan abstrakteja metodeja, kun taas piirreluokilla ei ole tällaista rajoitusta.
- rakenteellinen rekursio
- structural recursion rekursion muoto, jossa tietorakenteen (kuten luokan) määrittelystä viitataan tuohon määrittelyyn itseensä ¶ Ks. luvut 3.1 ja 11.3. Esimerkiksi henkilöluokan määrittelyyn voidaan kirjata henkilön vanhemmat, jotka myös ovat henkilöitä. Rekursiivisen rakenteen käsittelyyn sopivat usein hyvin sellaiset rekursiiviset kutsut, jotka kohdistetaan vähitellen pienenevään osaan olemassa olevasta rakenteesta (vrt. generoiva rekursio).
- refaktoroida
- refactor muokata ohjelmaa tai ohjelman osaa muuttamatta sen olemassa olevaa toiminnallisuutta ¶ Ks. luvut 7.1 ja 10.1. Refaktoroinnilla pyritään ohjelman laadun parantamiseen, esimerkiksi ohjelman jatkokehityksen helpottamiseen.
- rekursiivinen kutsu
- recursive call funktiokutsu, jossa tietystä funktiosta käsin kutsutaan tuota samaa funktiota ¶ Ks. rekursio ja luku 11.3.
- rekursio
- recursion 1) asian itsensä käyttäminen sen omassa määrittelyssä, kuvauksessa tai toteutuksessa; erityisesti: funktion määritteleminen siten, että se kutsuu itseään; 2) sellaisiin funktioihin perustuva ohjelmien toteutustapa ¶ Rekursiivinen ohjelma palauttaa ratkaistavan ongelman kohti perustapausta ratkaisemalla siitä osan rekursiivisella kutsulla; ks. luku 11.3 ja vrt. iteraatio. Rekursion muotoja ovat mm. rakenteellinen ja generoiva rekursio.
- REPL
- REPL ohjelmointiympäristö, jossa käyttäjän kirjoittamat ohjelmointikieliset käskyt suoritetaan välittömästi niiden kirjoittamisen jälkeen, yksitellen, ja syötettyjen lausekkeiden arvot tulostuvat samoin välittömästi näytölle ¶ REPL on lyhenne ilmaisusta read–eval–print loop. REPLiä käytetään esimerkiksi Scala-ohjelmoinnin yhteydessä runsaasti; ks. luku 1.3. REPListä voidaan puhua myös tulkkina tai “interaktiivisena tulkkina”; Scala-REPL tunnetaan myös nimellä Scala Interpreter.
return
- return
käsky, joka katkaisee funktiokutsun ja palauttaa arvon välittömästi,
kun se suoritetaan ¶ Scalassa
return
-käskyä ei käytetä usein; ks. luku 6.1. Joissakin muissa ohjelmointikielissä vastaavaa käskyä tulee käyttää kaikissa sellaisissa funktioissa, jotka palauttavat arvon. - rooli
- role ks. muuttujan rooli
- roska
- garbage tietokoneen muistiin varastoitu tieto, johon ohjelmasta ei pääse käsiksi ¶ Roskaa on esimerkiksi olio, johon ei ole yhtään viittausta. Hyvin laaditussa ohjelmassa roskaksi saisi jäädä vain sellaisia tietoja, joita ohjelma ei (enää) tarvitse, jotta varattu muisti voidaan vapauttaa roskankeruulla.
- roskankeruu
- garbage collection toimenpide, jolla roskien viemä muistitila vapautetaan muuhun käyttöön ¶ Roskankeruu voidaan tehdä automaattisesti, ja näin esimerkiksi Java-virtuaalikoneessa tehdäänkin. Tämä osaltaan ehkäisee muistivuotoja.
- runko
- body ks. funktion runko, luokan runko
- rutiini
- (sub)routine aliohjelma; Scalassa ja tällä kurssilla vastaava termi on funktio
- sanakirja
- map/dictionary sama kuin hakurakenne
- satunnaislukujen siemen
- random seed näennäissatunnaislukuja tuottavalle algoritmille välitetty parametri, joka alustaa algoritmin tilan ¶ Tietty näennäissatunnaisalgoritmi tuottaa samalla siemenellä aina saman satunnaislukujen sarjan. Ks. luku 7.2.
- Scala
- Scala
eräs ohjelmointikieli ¶ Scala-on suunniteltu kieleksi, jolla voi ohjelmoida usean eri
ohjelmointiparadigman puitteissa ja paradigmoja yhdistellen.
Kieli painottaa olio-ohjelmointiparadigmaa,
johon ohjelmoija voi yhdistää imperatiivista ja
funktionaalista ohjelmointia. Näistä viimeksi
mainittuun usein kannustetaan Scala-kielen yhteydessä. Scalan valintaa tälle kurssille
on selostettu kurssin
ukk
-sivulla. - Scala API
- Scala API
Scala-ohjelmoinnissa käytetty laaja, yleishyödyllinen sovelluskirjasto ¶ Koko
nimeltään Scala Standard Library API. Jakautuu pakkauksiin, joilla on
scala
-alkuiset nimet. Nämä pakkaukset sisältöineen on kuvattu Scaladoc-dokumentein; ks. luku 2.6. Osa Scala API:sta — pakkaus nimeltä vainscala
— liittyy lähtemättömästi Scala-kieleen; ks. luku 1.5. - Scala IDE
- Scala IDE Eclipse-sovelluskehittimen lisäosa (plugin), joka mahdollistaa Scala-ohjelmoinnin Eclipsessä ¶ Ks. luvut 1.2, 1.3 ja 5.2.
- Scaladoc
- Scaladoc 1) apuohjelma, jolla voi tuottaa Scala-lähdekoodista ja siihen upotetuista dokumentaatiokommenteista dokumentaatiota; 2) tällä työkalulla tuotettu dokumentaatio ¶ Ks. luku 2.6. Scaladoc-dokumenteissa kuvataan eritoten ohjelman osien julkiset rajapinnat. Scala API on kuvattu Scaladoc-dokumentein. Monille muillekin ohjelmointikielille on vastaava työkalu, esim. Javadoc (Java) ja Pydoc (Python).
- semantiikka
- semantiikka
ilmaisujen merkitys ¶ Erotetaan usein syntaksista.
Esimerkiksi Scala-kielen käskyt
x = x + 1
jax += 1
ovat syntaktisesti erilaiset, mutta niillä on sama semantiikka: kasvatetaan muuttujanx
arvoa yhdellä. - siemen
- seed ks. satunnaislukujen siemen
- signatuuri
- signature sama kuin puumerkki
- sijoittaa
- assign
asettaa muuttujalle (uusi) arvo ¶ Esimerkiksi Scala-kielistä käskyä
muuttujanNimi = 10
sanotaan sijoituslauseeksi. Se sijoittaa (var-)muuttujan uudeksi arvoksi luvun kymmenen, korvaten muuttujan vanhan arvon. Ks. luku 1.4. - silmukka
- loop
1) ohjelman osa, jonka suorittamista toistetaan useita kertoja;
2) toistokäsky, jolla tällainen ohjelman osa voidaan määritellä ohjelmakoodiin ¶
Ks. luvut 5.3, 5.4 ja 6.1. Scala-kielessä silmukoita voi määritellä for-,
do- ja while-käskyillä. Yleisesti ottaen silmukan
luomiseen ei välttämättä tarvita nimenomaista toistokäskyä, vaan kielestä riippuen voi olla mahdollista
käyttää hyppykäskyä kuten
goto
(ks. luku 12.1). Silmukoiden avulla voidaan toteuttaa iteratiivisia algoritmeja. - sisentää
- indent
aloittaa tekstirivi reunaa sisemmältä ¶ Johdonmukainen sisentäminen on keskeinen osa hyvää ohjelmointityyliä;
ks. luvut 1.7, 2.9 ja
kurssin tyyliopas
. - sivuvaikutus
- side effect tilaa muuttava toimenpide ¶ Ilmaisua käytetään erityisesti funktionaalisen ohjelmoinnin yhteydessä, jossa tilanmuutoksia pyritään välttämään.
- skooppi
- scope sama kuin käyttöalue
- skripti
- script korkean tason kielellä laadittu ohjelma, jolle pätee yksi tai useampia seuraavista: 1) se on on koodiltaan lyhyehkö; 2) sen koodi muodostuu peräkkäisten komentojen sarjasta; 3) se tulkataan eikä käännetä; 4) sen päätehtävä on muodostaa annetun syötteen perusteella jokin tulos; 5) se käsittelee jotakin olemassa olevaa ohjelmaa tai muuta järjestelmää “ulkoapäin”; 6) sitä käytetään manuaalisestikin suoritettavissa olevien työvaiheiden automatisointiin; 7) se on kirjoitettu skriptikielellä ¶ Termillä on useita osin toisiinsa liittyviä merkityksiä, jotka ovat eläneet aikojen saatossa. Se on nykyään niin moniselitteinen, että sen käyttöä kannattaa välttää, ellei yhteydestä tule selväksi, mitä sanalla tarkoitetaan.
- skriptikieli
- scripting language korkean tason ohjelmointikieli, joka sopii skriptien laatimiseen ¶ Esimerkiksi PHP:ta, Pythonia ja Luaa sanotaan melko usein skriptikieliksi. Myös Scalaa voi käyttää skriptikielenä.
Some
- Some
Option-tyyppinen olio, joka sisältää yhden tietoalkion ¶ Ks. luku 3.3 ja vrt. None.
Some
onOption
in aliluokka; ks. luku 6.4. - sopivimman säilyttäjä
- most-wanted holder muuttuja, jota käytetään pitämään kirjaa sellaisesta arvosta, jonka kohdalla tietty kriteeri parhaiten toteutuu ¶ Yksi muuttujien rooleista. Ks. luvut 3.2 ja 5.3.
- sovellus(ohjelma)
- application (program) tietokoneohjelma, joka on tarkoitettu loppukäyttäjän käytettäväksi ja sopii tiettyyn tarkoitukseen ¶ Ks. luvut 1.1 ja 1.2.
- sovelluskehitin
- integrated development environment ohjelmoijan avuksi laadittu apuohjelma, joka kokoaa yhteen erilaisia ohjelmoijan työkaluja kuten editorin, kääntäjän, virtuaalikoneen tms. ¶ Ks. luvut 1.2 ja 5.2. Esimerkiksi kurssilla käytetty Eclipse on sovelluskehitin. Nimensä mukaisesti sovelluskehittimen avulla voi laatia uusia ohjelmia, esimerkiksi sovelluksia.
- sovelluskirjasto
- application programming interface kirjasto, jota voi käyttää apuna erilaisten sovellusohjelmien laatimisessa ¶ Monien ohjelmointikielten yhteyteen on määritelty kieleen enemmän tai vähemmän kiinteästi liittyvä sovelluskirjasto, jota voi hyödyntää laajasti erilaisissa kyseisellä ohjelmointikielillä laadituissa ohjelmissa. Scalan tapauksessa tällainen sovelluskirjasto on Scala API.
- staattinen
- static 1) ohjelmakoodiin kiinteästi liittyvä, ohjelmakoodista sitä ajamatta määrittyvä, ohjelman ajamiseen liittymätön; ei-dynaaminen, muuttumaton, kiinteä; 2) luokkaan itseensä eikä sen ilmentymiin liittyvä ¶ Tietokoneohjelmalla voidaan sanoa olevan kaksi “olomuotoa”, staattinen ja dynaaminen; ks. esim. luvut 1.2 ja 2.1. Ohjelman staattisiin piirteisiin ei voi vaikuttaa esimerkiksi ohjelman käyttäjän antama syöte. Ks. myös staattinen tyyppi.
- staattinen tyyppi
- (static) type ohjelmakoodin osan tietotyyppi, joka voidaan määrittää staattisesti eli ohjelmaa ajamatta ¶ Staattisesti tyypitetyissä kielissä kuten Scala lausekkeilla ja muuttujilla on staattiset tyypit. Esimerkiksi Scala-muuttujan staattinen tyyppi rajaa sitä, millaisia sijoituksia muuttujaan voi tehdä, ja staattiselta tyypiltään yhteensopimattoman lausekkeen käyttö sijoituksessa tuottaa käännösaikaisen virheilmoituksen. Ks. luvut 6.2 ja 6.4 ja vrt. dynaaminen tyyppi.
- staattisesti tyypitetty
- statically typed
(ohjelmointikielestä:) tyyppijärjestelmältään sellainen, että kullakin
lähdekoodin osalla (eli ohjelman staattisen “olomuodon” osalla,
erityisesti lausekkeilla ja muuttujilla) on tietotyyppi, joka voidaan
määrittää staattisesti ¶ Scala on (normaalikäytössä) staattisesti tyypitetty:
esimerkiksi muuttujilla ja lausekkeilla on staattiset tietotyypit (sen lisäksi, että niiden arvoilla on dynaamiset tyypit).
Scala on myös tyyppiturvallinen, ja niinpä yritys sijoittaa vaikkapa
Int
-tyyppiseen muuttujaanString
-tyyppinen arvo tuottaa käännösaikaisen virheilmoituksen. Muita staattisesti tyypitettyjä kieliä ovat esimerkiksi Java, C# ja Haskell. Vrt. dynaamisesti tyypitetty. - stack trace
- stack trace ajonaikaisen virheen seurauksena muodostettu raportti siitä, mitä kutsuja oli käynnissä virhetilanteen syntyessä ¶ Käytetään debuggauksessa apuna; ks. luku 3.2.
- sulautettu järjestelmä
- embedded system tietotekninen järjestelmä, jolla on rajattu, suhteellisen suppea-alainen tarkoitus ¶ Esimerkiksi pankkiautomaatit ja monet robotit ovat sulautettuja järjestelmiä. Vrt. yleiskäyttöinen tietokone ja ks. luku 1.1.
- sulkeuma
- (lexical) closure rakenne, johon sisältyy funktion määrittely sekä pääsy tiettyihin tuon funktion ulkopuolella määriteltyihin muuttujiin ¶ Ks. luku 8.1.
- suorittaa
- execute toimia ohjelman määräämällä tavalla; ajaa
- Swing
- Swing eräänlainen graafisten käyttöliittymien ohjelmoimiseen tarkoitettu kirjasto ¶ Swingejä on useita: tämänniminen kirjasto kehitettiin alun perin Java-kieleen yhteyteen, mutta myös Scalassa on samanniminen kirjasto (joka rakentuu Java-version varaan). Ks. luku 11.2.
- symbolinen konekieli
- assembly (language) ohjelmointikieli, jossa konekielisiä käskyjä suoraan vastaavat käskyt on esitetty symbolisessa muodossa, yleensä tekstinä
- syntaksi
- syntaksi ohjelmointikielen ilmaisujen muodostamissäännöstö ¶ Syntaksi määrää, mitä ilmaisuja ohjelmointikielessä voi käyttää ja miten niitä voi yhdistellä. Syntaksi erotetaan usein semantiikasta eli siitä, mitä ilmaisut merkitsevät.
- syntaksivirhe
- syntax error virhe, joka johtuu siitä, että lähdekoodi on ohjelmointikielen syntaksin vastainen ¶ Ks. luvut 1.8 ja 3.1. Syntaksivirheitä syntyy, jos lähdekoodi ei vastaa ohjelmointikielen sääntöjä. Syntaksivirheet ovat usein käännösaikaisia.
- syntaktinen sokeri
- syntactic sugar
sellainen osa syntaksia, joka ei kasvata ohjelmointikielen ilmaisuvoimaa eikä ole sikäli
välttämätön, vaan jonka tarkoitus on kätevöittää ohjelmakoodin kirjoittamista tai lukemista ¶
Ks. luku 4.3. Esimerkkejä syntaktisesta sokerista Scalassa ovat mm. ilmentymämuuttujien määritteleminen
konstruktoriparametrien yhteyteen (luku 2.4), laskutoimituksia ja sijoituksia yhdistelevät operaattorit
kuten
+=
(luku 4.3), erilaiset funktioliteraalit (luku 7.4) jafor
-silmukat (luku 5.3). - syöte
- input ohjelman käsiteltäväksi jostakin lähteestä noudettu tieto; erityisesti: ohjelman käyttäjän ohjelmalle (esim. näppäimistöllä) välittämä tieto ¶ Ks. luvut 2.7 ja 9.4 ja ks. myös input/output.
- säiliö
- container muuttuja, jota käytetään kokoelman muokkaamiseen ¶ Yksi muuttujien rooleista. Ks. luku 3.2.
- tapahtuma
- event toiminto tai sattumus, johon ohjelma voi reagoida ¶ Ohjelmia voidaan laatia tapahtumavetoisesti, jolloin havaituista tapahtumista välitetään tieto kyseisenlaisiin tapahtumiin liittyville tapahtumankuuntelijoille. Näin tehdään usein esimerkiksi graafisia käyttöliittymiä laadittaessa; ks. myös käyttöliittymätapahtuma.
- tapahtumankuuntelija
- event listener ohjelman osa, esimerkiksi olio, joka on määritelty vastaanottamaan tieto tietynlaisista tapahtumista ¶ Tapahtumankuuntelija yleensä reagoi tapahtumiin suorittamalla tapahtumankäsittelijän. Ks. luku 11.2.
- tapahtumankäsittelijä
- event handler ohjelman osa, esimerkiksi funktio, joka määrittelee, mitä tietynlaisen tapahtuman sattuessa tulee kyseisessä ohjelmassa tehdä ¶ Tapahtumankäsittelijä kytketään yleensä tapahtumankuuntelijaan; ks. luku 11.2. Tapahtumankäsittelijä voi esimerkiksi sisältää sen ohjelmakoodin, joka suoritetaan, kun käyttäjä painaa tiettyä nappulaa ohjelman käyttöliittymässä.
- taulukko
- array eräänlainen muuttuvatilainen mutta kooltaan muuttumaton kokoelma, jonka alkiot ovat indeksien mukaisessa järjestyksessä ¶ Ks. luku 5.6 ja vrt. esim. vektori ja puskuri. Taulukko on monissa ohjelmointikielissä, mm. Scalassa, eräänlainen “peruskokoelmatyyppi”, jonka avulla on toteutettu monia muita kokoelmatyyppejä.
- tavu
- byte kahdeksan bitin muodostama kokonaisuus ¶ Ks. luku 5.2.
- tavukoodi
- bytecode eräistä välikieliksi sopivista kielistä käytetty nimitys ¶ Ks. luku 5.2. Mm. sitä välikieltä, jolle Scala-ohjelmia yleensä käännetään ja jota Java-virtuaalikone suorittaa, sanotaan tavukoodiksi.
- tehdasmetodi
- factory method metodi, jonka ainoa tehtävä on luoda uusi olio ja palauttaa se (tai viittaus siihen) ¶ Ks. luku 4.5.
- tehokkuus
- efficiency ohjelman resurssienkäytön määrää kuvaava suure ¶ Tehokkuudella viitataan erityisesti ohjelman vaatimaan suoritusaikaan ja myös sen vaatimaan muistitilaan. Tehokkuutta käsitellään lähinnä muilla ohjelmointikursseilla; ks. kuitenkin esim. luvut 5.3 ja 11.3.
- tekstialue
- text area tekstin syöttämisen ja muokkaamisen mahdollistava GUI-komponentti; erityisesti: tällainen komponentti, jossa on useita rivejä ¶ Vrt. tekstikenttä.
- tekstikenttä
- text field tekstin syöttämisen ja muokkaamisen mahdollistava GUI-komponentti; erityisesti: tällainen komponentti, jossa on vain yksi rivi ¶ Vrt. tekstialue.
- tekstitiedosto
- (plain) text file tiedosto, jonka sisältämä data on tarkoitettu tulkittavaksi (vain) kirjoitusmerkeiksi ¶ Ks. luvut 5.2 ja 9.4.
this
- this (mm. Scalassa:) erityinen parametrimuuttuja, joka on kaikilla metodeilla ilman erillistä määrittelyä ja joka viittaa siihen olioon, jonka metodia on kutsuttu ¶ Ks. luku 2.2.
- tiedon piilottaminen
- information hiding ohjelmien suunnitteluun liittyvä periaate, jonka mukaan rajapinnat tulee erottaa toteutuksista ¶ “Piilottamisella” tarkoitetaan sitä, ettei ohjelman osan (esim. luokan) käyttäjän tarvitse olla riippuvainen kuin siitä rajapinnasta, jonka hän “näkee”. Käyttäjä voi “unohtaa” toteutuksen tai olla siitä kokonaan tietämätön. Kun toteutustekniset seikat on piilotettu rajapinnan taakse, niin niitä voi vapaasti muokata ohjelman kehittyessä (esimerkiksi tehokkuuden parantamiseksi): kunhan rajapinta pysyy samana, niin muutoksia ei tarvita muualle ohjelmaan, josta tätä osaa käytetään. Ks. luku 2.6.
- tiedosto
- file tietokoneen varastoima tietoresurssi; erityisesti: kiintolevylle tai muuhun pysyväismuistiin tallennettu tietoresurssi ¶ Ks. myös tekstitiedosto.
- tietokone
- computer laite, joka käsittelee tietoa suorittamalla ohjelmia ¶ Tietotekniset järjestelmät perustuvat tietokoneisiin. Tietokone ei välttämättä ole elektroninen mutta yleensä on.
- tietorakenne
- data structure jollakin tietyllä tavalla jäsennetty kokonaisuus, johon tietokone varastoi tietoa ¶ Sanaa käytetään erityisen usein (ja joskus ainoastaan) kokonaisuuksista, jotka on suunniteltu suurienkin tietomäärien tehokkaaseen käsittelyyn, kuten alkiokokoelmien toteutuksista. Myös tiedostoilla on oma sisäinen tietorakenteensa. Tällä kurssilla käytämme sanaa hyvin laajassa mielessä ja viittaamme sillä suhteellisen yksinkertaisiinkin rakenteisiin: joissakin yhteyksissä sanomme esimerkiksi oliota muuttujineen eräänlaiseksi tietorakenteeksi.
- tietotekninen järjestelmä
- computer system tietokonelaitteiston ja ohjelmien yhdistelmä ¶ Tietoteknisiä järjestelmiä ovat eritoten yleiskäyttöiset tietokonejärjestelmät ja sulautetut järjestelmät.
- tietotyyppi
- data type
määritelmä tietynlaisesta tiedosta ja erityisesti siitä, mitä tuollaisella tiedolla voi tehdä ¶ Ks. esim.
luvut 1.3 ja 2.3. Hyvin usein puhutaan “tietotyyppien” sijaan vain “tyypeistä”. Ohjelmointikieliin on yleensä
määritelty valmiita tietotyyppejä yleisiin tarpeisiin; esimerkiksi Scalan tietotyyppi
Int
kuvaa kokonaislukuja ja määrittelee mm. sen, että kokonaislukuja voi laskea yhteen. On myös yleistä, että ohjelmoija voi itse määritellä uusia tietotyyppejä. Ks. myös tyyppiparametri, staattinen tyyppi, dynaaminen tyyppi ja luokka. - tila
- state tietyllä ajanhetkellä varastoituna olevan tiedon muodostama kokonaisuus ¶ Ohjelmoinnissa “tila” viittaa eritoten tietokoneen muistiin tallennettuun tietoon, jota ohjelma käsittelee. Ohjelma-ajolla kokonaisuutena on tila; esimerkiksi sijoitukset var-muuttujiin muuttavat tilaa, jolloin ohjelman tila voi vaihdella ajanhetkestä toiseen ohjelman suorittamisen aikana. Myös ulkoisen maailman kanssa näkyvästi vuorovaikuttaminen luetaan yleensä tilanmuutokseksi (esim. näytölle tulostaminen). Toisaalta esimerkiksi pelkkää lausekkeiden evaluoimista, ajan kulumista laskentaan, tai kutsupinon käyttöä ei lueta tilan muuttamiseksi. Funktiot voidaan luokitella tilaa muuttaviin ja muuttamattomiin. Olio-ohjelmassa olioilla on kullakin oma tila (ks. esim. luku 2.1), ja olioiden tiloista muodostuu koko ohjelman tila; oliotkin voivat olla muuttuvatilaisia tai muuttumattomia. Jotkin ohjelmointiparadigmat eroavat toisistaan ratkaisevasti siinä suhteessa, miten ne suhtautuvat tilanmuutoksiin.
- tilaa muuttamaton funktio
- stateless function funktio, joka ei kutsuttaessa koskaan muuta ohjelman tilaa ¶ Ks. luvut 1.6, 1.7 ja 7.5 ja vrt. tilaa muuttava funktio. Tällaisia funktioita sanotaan myös “sivuvaikutuksettomiksi”. Tilaa muuttamattomia funktioita kutsutaan niiden palautusarvon määrittämiseksi. Ne muistuttavat koulumatematiikasta tuttuja funktioita.
- tilaa muuttava funktio
- stateful function funktio, joka kutsuttaessa muuttaa ohjelman tilaa ainakin joissakin tapauksissa ¶ Ks. luvut 1.6, 1.7 ja 7.5, ja vrt. tilaa muuttamaton funktio. Esimerkiksi sellaiset funktiot, jotka muuttavat puskurin sisältöä, jonkin olion ilmentymämuuttujan arvoa tai tulostavat merkkejä tietokoneen ruudulle luetaan tilaa muuttaviksi. Tällaisia funktioita sanotaan myös “sivuvaikutuksellisiksi”. Tilaa muuttavat funktiot voivat olla hyödyllisiä, vaikka eivät palauttaisikaan merkityksellistä arvoa.
- tilapäissäilö
- temporary muuttuja, jota käytetään väliaikaisesti apuna tietyn algoritmin toteutuksessa ¶ Yksi muuttujien rooleista; ks. luku 2.5.
toString
- toString
(Scala-kielessä:) metodi, jonka tehtävänä on palauttaa merkkijonomuotoinen
kuvaus oliosta ¶ Ks. luku 3.1. Jonkinlainen
toString
-metodi on määritelty kaikille Scala-olioille, ja esimerkiksi “oliontulostamiskäsky”println(olio)
tulostaa merkkijonokuvauksen oliosta eli kutsuu oliolletoString
-metodia ja tulostaa sen palauttaman merkkijonon (kutenprintln(olio.toString)
).toString
-metodit ovat avuksi mm. REPLissä ja ohjelmaa debugatessa, ja niiden palauttamia merkkijonoja voi muutenkin käyttää ohjelman toteutuksessa apuna. - toteutus
- implementation 1) tapa, jolla jokin abstraktimpi malli, suunnitelma tai algoritmi käytännössä toimii; 2) se osa jostakin kokonaisuudesta, jonka tunteminen ei ole välttämätöntä tuon kokonaisuuden käyttämiseksi ¶ Sanaa käytetään ohjelmoinnin yhteydessä usealla erillisellä mutta toisiinsa liittyvällä tavalla. Esimerkkejä: 1) ohjelma tai aliohjelma voi olla jonkin yleisemmän algoritmin toteutus; 2) ohjelman osalla kuten luokalla voi olla julkinen rajapinta, joka määrää, miten tuota osaa käytetään, sekä piilotettu toteutus, joka määrää, miten tietokone osaa käytettäessä toimii; 3) funktiolla on puumerkki, joka kuvaa sen käyttötapaa, ja runko, joka toimii funktion toteutuksena ja jota funktion käyttäjän ei tarvitse tuntea. Tällä yleisellä sanalla on tietenkin myös muita merkityksiä, jotka sopivat ohjelmointiinkin (esim. “suunnitella ohjelma ja sitten toteuttaa suunnitelma”).
- totuusarvo
- truth value arvo, joka kertoo jonkin väittämän paikkansapitävyydestä; erityisesti: arvo, joka kertoo, onko väittämä tosi vai epätosi ¶ Ohjelmoinnissa usein käytetään Boolen logiikkaa, jossa väittämät ovat yksiselitteisesti joko tosia tai epätosia; ks. luku 2.8 ja Boolean.
try
- try (Scala-kielessä:) poikkeustenkäsittelyssä käytetty varattu sana, jolla aloitetaan lohko, jonka suorittaminen voi epäonnistua ajonaikaisen virheen vuoksi
- tulkki
- interpreter apuohjelma, joka suorittaa annettua ohjelmaa muuntaen sen tarvittaessa konekieleksi ¶ Esimerkiksi Java-virtuaalikoneen keskeinen osa on tavukooditulkki. Ks. luku 5.2 ja vrt. kääntäjä.
- tulostaa
- print (tietokoneesta:) kirjoittaa kirjoitusmerkkejä ¶ Ohjelmoinnin yhteydessä tulostamisella ei useinkaan tarkoiteta tulostimen eli printterin käyttöä. Esimerkiksi tietokoneen näytölle tai tekstitiedostoon voi tulostaa.
- tunnus
- identifier ohjelman osalle annettu nimi ¶ Esimerkiksi muuttujien, funktioiden ja luokkien nimiä sanotaan joskus tunnuksiksi.
- tuoreimman säilyttäjä
- most-recent holder muuttuja, jota käytetään pitämään kirjaa viimeisimmästä arvosta jossakin arvojen sarjassa ¶ Yksi muuttujien rooleista. Tuoreimman säilyttäjässä voidaan esimerkiksi pitää kirjaa viimeisimmästä arvosta, joka on asetettu olion ominaisuudelle (luku 2.5), tai viimeisimmästä alkiosta, joka on käyty läpi alkiokokoelmassa (luku 5.3).
- tyyppi
- type (ohjelmoinnin yhteydessä yleensä:) sama kuin tietotyyppi
- tyyppiannotaatio
- type annotation sama kuin tyyppimäärittely
- tyyppijärjestelmä
- type system säännöstö, joka määrää miten tietotyyppejä käytetään jossakin ohjelmointikielessä ¶ Ks. staattinen ja dynaaminen sekä tyyppiturvallisuus.
- tyyppimäärittely
- type annotation lähdekoodiin kirjoitettu merkintä ohjelman osan staattisesta tietotyypistä ¶ Tyyppimäärittelyt voivat selkeyttää ohjelmaa ja välillisesti parantaa ohjelman suoritustehokkuutta; toisaalta tyyppimäärittelyt voivat myös tarpeettomasti hankaloittaa ohjelmoijan työtä. Joissakin staattisesti tyypitetyissä ohjelmointikielissä (esim. Java) esimerkiksi muuttujien ja palautusarvojen tyypit on aina kirjoitettava ohjelmakoodiin tyyppimäärittelyin. Täysin dynaamisesti tyypitetyissä kielissä (esim. Python) tyyppimäärittelyjä ei kirjoiteta lainkaan. Scalassa tyyppimäärittelyjä on aina luvallista kirjata koodiin, mutta tyyppipäättelyn vuoksi se ei usein ole tarpeen; ks. luku 1.8. Kuitenkin esimerkiksi tyhjää alkiokokoelmaa luodessa (luku 1.5), funktion parametrimuuttujia määritellessä sekä kuormitettujen ja rekursiivisten funktioiden yhteydessä tyyppimäärittelyjen käyttö voi Scalassakin olla välttämätöntä.
- tyyppiparametri
- type parameter eräiden luokkien vaatima lisämääre, jolla täsmennetään, millaisesta tietotyypistä on kyse luokkaa käytettäessä ¶ Esimerkiksi Scala-ohjelmassa monia alkiokokoelmia luodessa on välitettävä tyyppiparametri, joka kertoo kokoelman alkioiden tietotyypin; ks. esim. luvut 1.5 ja 8.3. Luokkien lisäksi myös Scala-funktiolla voi olla tyyppiparametreja, mutta kurssilla käsite esiintyy vain luokkien yhteydessä. Scalassa tyyppiparametrit ovat muiden tyyppitietojen tapaan usein pääteltävissä automaattisesti.
- tyyppipäättely
- type inference automaattinen lausekkeiden ja muuttujien tietotyyppien määrittäminen staattisesti ¶ Esimerkiksi Scala-kieleen tyyppipäättely liittyy kiinteästi. Ks. luku 1.8. Aihetta sivutaan myös mm. luvuissa 2.9 ja 6.2.
- tyyppiturvallisuus
- type safety ohjelmointikieltä kuvaileva ominaisuus, joka kertoo siitä, kuinka voimakkaasti kieli valvoo tietotyyppeihin liittyvien rajoitusten noudattamista ¶ Ks. luku 1.8. Tyyppiturvallisessa kielessä tietyntyyppisellä arvolla ei voi tehdä kuin sellaisia asioita, joita arvon tietotyyppi nimenomaisesti sallii. Scala on huomattavan tyyppiturvallinen kieli, ja Scala-työkalut varoittavat ns. tyyppivirheistä yleensä käännösaikaisilla virheilmoituksilla. Ks. staattinen tyypitys.
- tyyppiyhteensopiva
- conformant/type compatible
(tietotyypistä:) sellainen, että kyseisentyyppisiä arvoja voi käyttää toisentyyppisten arvojen
paikalla ¶ Esimerkki: Jos Scala-ohjelman
Opiskelija
-luokka onIhminen
-luokan aliluokka, niin sen määrittelemäOpiskelija
-tyyppi on tyyppiyhteensopivaIhminen
-tyypin kanssa, jaIhminen
-tyyppiseen muuttujaan on laillista sijoittaa viittaus mihin tahansaOpiskelija
-luokan ilmentymään. Kaikki Scala-tyypit ovat tyyppiyhteensopivia Any-tyypin kanssa. Ks. myös Liskovin periaate. - täsmäkieli
- domain-specific language ohjelmointikieli, joka ei ole yleiskäyttöinen vaan sopii käytettäväksi nimenomaisen aihealueen yhteydessä ¶ Ks. luku 12.1.
- täydellinen nimi
- fully qualified name
ohjelman osan koko nimi, joka sisältää myös pakkauksen nimen ¶ Esimerkiksi Scalassa
Int
-tietotyypin täydellinen nimi onscala.Int
ja funktionsqrt
täydellinen nimi onscala.math.sqrt
. - Unicode
- Unicode eräs merkistöstandardi ¶ Ks. luvut 5.2 ja 5.4. Unicode-standardi määrittelee tavan, jolla kutakin laajaan merkistöön kuuluvaa merkkiä vastaa yksiselitteisesti tietty luku. Sitä käytetään mm. Scalassa ja laajasti muutenkin.
Unit
- Unit
1) yksikkötyypin nimi mm. Scalassa; 2) yksikkötyypin ainoaa arvoa merkitsevä
Scala-kielinen literaali ¶ Ks. luvut 1.6 ja 3.3.
Unit
-arvoa käytetään mm. merkkinä siitä, ettei funktiolla ole merkityksellistä palautusarvoa. ScalanUnit
-literaalin voi kirjoittaa tyhjinä kaarisulkeina:()
. - vakio
- constant
muuttuja, jonka arvo on tiedossa jo ennen ohjelma-ajoa ja joka edustaa
ohjelmassa pysyvästi tätä arvoa ¶ Ks. luku 6.2 ja
kurssin tyyliopas
. Vakiot ovat aina myös kiintoarvoja. Scalassa ne ovat käytännössä aina val-muuttujia. val
-muuttuja- val(ue variable)
(Scala-kielessä:) muuttuja, jonka arvoa ei voi vaihtaa toiseksi ¶
Ks. luku 1.4 ja vrt. var-muuttuja.
val
-muuttujat määritellään yleensäval
-sanaa käyttäen, mutta myös eräät erikoismuuttujat kuten parametrimuuttujat ja foreach-silmukassa käytetyt tuoreimman säilyttäjät ovat Scalassaval
-muuttujia. var
-muuttuja- var(iable)
(Scala-kielessä:) muuttuja, joka määritellään
var
-sanalla ja jonka arvon voi vaihtaa sijoittamalla vanhan arvon tilalle uuden ¶ Ks. luku 1.4 ja vrt. val-muuttuja. - varattu sana
- reserved word
ohjelmointikieleen kuuluva sana, jolla on kielessä erityismerkitys tai jota ei muusta syystä voi
käyttää tunnuksena ¶ Scala-kielessä on noin 50 varattua sanaa, joista esimerkkejä ovat
val
,def
,import
,true
,this
,object
,class
,new
,private
,if
jafor
. Perustietotyyppien nimet kutenInt
jaString
eivät varsinaisesti ole varattuja sanoja, mutta niitäkin on sekaannusten välttämiseksi parempi olla käyttämättä tunnuksina. - varoitus
- warning ohjelmointityökalun antama ilmoitus, joka kertoo epäillystä ongelmasta ohjelmassa muttei kuitenkaan välttämättä virheestä ¶ Ks. luku 3.1.
- vektori
- vector eräänlainen muuttumaton kokoelma, jonka alkiot ovat indeksien mukaisessa järjestyksessä ¶ Ks. luku 5.5. Vrt. esim. taulukko ja puskuri.
- vertailuoperaattori
- comparison operator
operaattori, jolla voidaan verrata kahta arvoa ja muodostaa vertailun tulosta
kuvaava totuusarvo ¶ Esimerkiksi vertailuoperaattorilla
<
voidaan muodostaa lauseke10 < 100
, jonka arvo ontrue
. Ks. luku 2.8 ja ks. myös logiikkaoperaattori. - viesti
- message olion komentamiseen käytetty käsky, olion metodin kutsu ¶ Olio-ohjelmointi perustuu ajatukseen, että olioille voi lähettää niiden vastuualueeseen liittyviä viestejä joihin ne reagoivat; oliot voivat myös lähettää vastaavia viestejä toisilleen reagoidessaan vastaanottamiinsa viesteihin. Ks. luku 2.1.
- viittaus
- reference arvo, joka ilmaisee, mistä tietokoneen muistissa jokin tieto löytyy ¶ Ks. esim. luvut 1.5, 2.3 ja 5.2. Scala-ohjelmissa viittaukset osoittavat muistiin tallennettuihin olioihin.
- virhe
- error 1) ohjelmointikielen sääntöjen vastainen tai muuten ohjelmoijan tarkoituksesta poikkeava piirre ohjelmassa, bugi; 2) sama kuin ajonaikainen virhe ¶ Virheitä voidaan luokitella esimerkiksi käännösaikaisiin, ajonaikaisiin ja loogisiin. Joissain teknisissä yhteyksissä sanalla “virhe” tarkoitetaan vain ajonaikaisia virheitä.
- virtuaalikone
- virtual machine tietokoneen kaltaisesti toimiva ohjelma, jonka avulla voidaan ajaa (tietynlaisia) toisia ohjelmia ¶ Ks. luvut 5.2 ja 12.1. Virtuaalikone osaa vastaanottaa tietyn kielisiä ohjelmia; voidaan sanoa, että sen vastaanottama kieli on virtuaalikoneen simuloiman tietokoneen konekieltä. Virtuaalikone sisältää tulkin (tai on tulkki, näkökulmasta riippuen), jonka avulla se muuntaa annetun ohjelman todelliseksi konekieleksi.
- välikieli
- intermediate language kieli, jolle lähdekoodia käännetään mutta joka ei ole konekieltä; erityisesti: virtuaalikoneen “konekielenä” toimiva kieli ¶ Ks. luku 5.2.
- välitön aliluokka
- immediate/direct subclass suoraan toiselta perivä luokka; luokkahierarkiassa heti yhtä alemmassa “polvessa” oleva aliluokka ¶ Vrt. välillinen aliluokka eli jokin välittömän aliluokan omista aliluokista.
- välitön yliluokka
- immediate/direct superclass suoraan peritty luokka; luokkahierarkiassa yhtä ylemmässä “polvessa” oleva yliluokka ¶ Vrt. välillinen yliluokka eli jokin välittömän yliluokan omista yliluokista.
while
-silmukka- while loop
silmukka, joka on muodostettu
while
-avainsanaa silmukan alussa käyttäen ja joka toistaa toimenpidettä nolla tai useampia kertoja ¶ Ks. luku 6.1 ja vrt. do-silmukka. - WETWET
- WETWET DRY-periaatteen rikkominen ¶ Sanoista write everything twice write everything twice.
- yksikkötyyppi
- unit type tietotyyppi, jolla on vain yksi arvo ja jolla ei siksi voi ilmaista informaatiota ¶ Ks. luku 1.6. Yksikkötyyppisiä arvoja on vain yksi. Mm. Scalassa tämä arvo on nimeltään Unit.
- yksisuuntainen lippu
- one-way flag muuttuja, jolla on yksi kahdesta arvosta ja jonka arvoa ei vaihdeta, kun se on kerran vaihdettu alkuarvosta toiseksi ¶ Yksi muuttujien rooleista, eräänlainen lippu. Ks. luku 6.3.
- yksittäisolio
- singleton object 1) olio, joka on määritelty ohjelmakoodissa yksittäistapauksena eikä luokan kautta; 2) tällaisen olion määrittely ohjelmakoodissa ¶ Ks. luvut 2.1, 2.2 ja 4.5 ja vrt. ilmentymä. Scalassa yksittäisoliot voivat olla luokan kumppaniolioita tai itsenäisiä.
- yksityinen
- private ulospäin näkymätön; rajapintaan kuulumaton; vain sisäiseen käyttöön tarkoitettu; toteutukseen kuuluva ¶ Ks. luku 2.6 ja vrt. julkinen.
- yleiskäyttöinen tietokone
- general-purpose computer tietokone, jolla ei ole tiettyä sovelluskohdetta vaan jota voidaan käyttää moniin erilaisiin tarkoituksiin ¶ Esimerkiksi tyypilliset kotitietokoneet ovat yleiskäyttöisiä. Tällaista tietokonetta voidaan hyödyntää eri tavoin ajamalla siinä erilaisia sovellusohjelmia. Vrt. sulautetut järjestelmät ja ks. luku 1.1.
- ylikuormittaa
- overload sama kuin kuormittaa
- yliluokka
- superclass/base class luokka, jolta toinen luokka perii ominaisuuksia ja joka edustaa aliluokkiensa kuvaamien käsitteiden yläkäsitettä ¶ Yliluokan ominaisuudet periytyvät sen aliluokille; ks. luku 6.4. Luokalla voi olla lukuisia välittömiä aliluokkia. Vrt. piirreluokka.