Ero sivun ”Luokka (ohjelmointi)” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
Ei muokkausyhteenvetoa
Ilona (keskustelu | muokkaukset)
Ei muokkausyhteenvetoa
Rivi 2:
----
 
'''Luokka''' ''(class)'' tarkoittaa [[olio-ohjelmointi|olio-ohjelmoinnissa]] olion "mallia". Luokan pohjaltaohjeiden voidaanmukaan luodaluodaan ohjelmaa ajettaessa olio ''(object)''. Luokka sisältää yksityiskohtaiset ohjeet siitä mitä ominaisuuksia oliolla on ja mitä se kykenee tekemään.
 
==Luokan ja olion suhde==
Luokat voivat periä toisia luokkia, jolloin muodostuu luokkahierarkioita. Esimerkiksi luokka "kissa" voi periä luokan "eläin". Tällöin kissalla on samat ominaisuudet ja toiminnot mitä luokassa eläin on.
Ajatus luokan ja olion suhteesta pohjautuu [[Platonismi|Platonin ideaoppiin]]. Olio vastaa Platonin aistimaailman jäljitelmää. Luokka eli idea antaa rakennusohjeet olion muodostamiselle: se määrittelee olion rakenteen ja käyttäytymisen. Havainnollistava esimerkki on piparkakkumuotti: luokka on kuin metallinen piparimuotti, jolla tehdään taikinasta pipari-olioita. Kukin pipari on erilainen, vaikka kaikissa käytettiin samaa mallia. Esimerkissä huomataan myös luokan rooli: vaikka luokka-piparimuotilla on mahdollista tehdä pipareita, ei luokka kuitenkaan itse ole syötävä pipari, vaan pelkkä mallina toimiva muotti. Konkreettinen ero syntyy myös ohjelmaa ajettaessa: luokat kirjoitetaan ohjelmakoodiin, oliot syntyvät luokista vasta sitten kun ohjelma ajetaan.
 
*Esim 1. ''Talon pohjapiirustus'' on luokka, jonka pohjalta voidaan luoda olio ''talo''.
Rivi 10 ⟶ 11:
*Esim 2. [[DNA]] on luokka jonka pohjalta voidaan luoda olio [[proteiini]].
 
==Periytyminen==
*Esim 3. Piirto-ohjelmassa voisi olla luokka 'kuvio' ja tällä aliluokat 'kolmio' ja 'ympyrä'. Ikkunaa piirrettäessä käydään läpi listaa 'kuvio'-luokkaan kuuluvista olioista ja pyydetään jokaista oliota piirtämään itsensä. Jokainen kuvio piirtää itsensä oikein sen mukaan, onko kyseessä 'kolmio' vai 'ympyrä'. Kun ikkunan piirto ei ota kantaa siihen, mitä kuvioita ikkunassa on, on helppo laajentaa ohjelmaa periyttämällä kuvio-luokasta vaikkapa 'neliö'-luokka.
Olio-ohjelmoinnissa käytetään käsitettä periytyminen kun uusi luokka saa (perii) jo olemassa olevan luokan ominaisuudet. Periytymisen ansiosta ohjelmoinnin työmäärä vähenee, kun aiemmin tehtyjä luokkia voidaan käyttää hyväksi vain tarpeelliset komponentit lisäämällä. Sellaista luokkaa, josta on periytetty muita luokkia, kutsutaan periytetyn luokan yläluokaksi, ja periytettyä luokkaa vastaavasti alaluokaksi (tai aliluokaksi). Alaluokassa voidaan peittää yläluokan ominaisuuksia sekä lisätä uusia.
 
Luokat voivat periä toisia luokkia, jolloin muodostuu luokkahierarkioita. Esimerkiksi luokka "kissa" voi periä luokan "eläin". Tällöin kissallakissaluokalla on samat ominaisuudet ja toiminnot mitäeläinluokalla. luokassaTässä tapauksessa eläin onolisi yläluokka ja kissa alaluokka.
 
*Esim 31. Piirto-ohjelmassa voisi olla luokka 'kuvio' ja tällä aliluokat 'kolmio' ja 'ympyrä'. Ikkunaa piirrettäessä käydään läpi listaa 'kuvio'-luokkaan kuuluvista olioista ja pyydetään jokaista oliota piirtämään itsensä. Jokainen kuvio piirtää itsensä oikein sen mukaan, onko kyseessä 'kolmio' vai 'ympyrä'. Kun ikkunan piirto ei ota kantaa siihen, mitä kuvioita ikkunassa on, on helppo laajentaa ohjelmaa periyttämällä kuvio-luokasta vaikkapa 'neliö'-luokka.
 
Joissakin ohjelmointikielissä yhdellä luokalla voi olla vain yksi yläluokka, joissakin taas rajattomasti. Jos yläluokkia voi olla useita, käytetään termiä moniperintä. Moniperintään tukemattomissa ohjelmointikielissä, kuten [[Java]]ssa, ongelman voi kiertää [[Rajapintaluokka|rajapintaluokkia]] käyttämällä.
 
On olemassa myös [[Abstrakti luokka|abstrakteja luokkia]], joista ei voi luoda ilmentymiä (olioita).
 
[[Luokka:Ohjelmointi]]