Luokkamuuttuja
| Tämän artikkelin tai sen osan kieliasua on pyydetty parannettavaksi. Voit auttaa Wikipediaa parantamalla artikkelin kieliasua. |
| Tähän artikkeliin tai sen osaan on merkitty lähteitä, mutta niihin ei viitata. Älä poista mallinetta ennen kuin viitteet on lisätty. Voit auttaa Wikipediaa lisäämällä artikkelille asianmukaisia viitteitä. Lähteettömät tiedot voidaan kyseenalaistaa tai poistaa. |
Luokkamuuttuja on olio-ohjelmoinnissa käytetty termi, jolla tarkoitetaan luokan sisäistä muuttujaa. Luokkamuuttuja on olemassa, vaikka luokasta ei olisi luotu yhtään oliota ja muuttuja on saavutettavissa kaikkien luokan olioiden, sekä itse luokan toimesta. Tämä tarkoittaa, että luokkamuuttujat ovat luokan ominaisuuksia, eivätkä ne riipu yksittäisistä olioista. Luokkamuuttujien syntaksi ja käyttö vaihtelevat eri ohjelmointikielten välillä, mutta useimmiten ne määritellään staattisella avainsanalla ja niihin viittaaminen tapahtuu luokan kautta. Luokkamuuttujiin voidaan kuitenkin viitata myös muilla tavoilla. Niitä voidaan esimerkiksi käyttää suoraan luokasta, olion välityksellä, luokkafunktiosta, olion funktiosta tai peritystä luokasta. Nämä tekevät luokkamuuttujista monipuolisen ja hyvin käytännöllisen rakenteen erilaisten ongelmien ratkaisemiseen.
Luokkamuuttujien avulla voidaan yksinkertaistaa koodia. Luokkamuuttujia ja luokkafunktioita käyttäen voidaan hyödyntää singleton-suunnittelumallia. Edellä mainittujen käyttökohteiden lisäksi luokkamuuttujia käytetään myös luokkien olioilmentymien laskemiseen, luokan vakioiden tallentamiseen, sekä luokan sisäisten asetusten tai tilojen tallentamiseen.
Esimerkki Java-ohjelmointikielellä
[muokkaa | muokkaa wikitekstiä]Esimerkki luokkamuuttujan käytöstä Java-kielisessä luokassa. Javassa luokkamuuttujat (ja luokkafunktiot) määritellään "static" sanan avulla. Esimerkissä luokkamuuttujaa käytetään laskemaan, kuinka monta auto-oliota luokasta on tehty. Tämä toteutetaan kasvattamalla luokkamuuttujan arvoa yhdellä jokaisella konstruktorin suorituskerralla. Siten luokkamuuttujasta voidaan nähdä, kuinka monta kertaa konstruktoria on käytetty, ts. kuinka monta oliota luokasta on luotu.
public class Auto {
// Luokkamuuttuja, joka laskee autojen lukumäärän
public static int autoja = 0;
// Konstruktori, joka luo uuden auton ja kasvattaa autojen lukumäärää
public Auto() {
autoja++;
}
// Metodi, joka palauttaa autojen lukumäärän
public static int getAutoja() {
return autoja;
}
}
Koska esimerkissämme sekä luokkamuuttuja "autoja", että luokkafunktio "getAutoja()" ovat julkisia, voidaan autojen määrään päästä käsiksi esimerkiksi seuraavasti:
Auto henkilöauto = new Auto();
//voidaan käyttää muokkaamiseen tai lukemiseen
Auto.autoja;
henkilöauto.autoja;
tai
//voidaan käyttää arvon hakemiseen.
Auto.getAutoja();
henkilöauto.getAutoja();