You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Jäsenmuuttujat (Member Variables)

Jäsenmuuttujien esittely

Jäsenmuuttujat esitellään kuten normaalit muuttujat, tosin class {}-rakenteen sisällä. Ne esitellään monesti m_-etuliitteellä. Tämä ei ole mitenkään pakollista, mutta se helpottaa koodin lukemista. Niihin päästään käsiksi luokasta luodun olion kautta tai luokan sisällä normaaliin tapaan. 

Esimerkki 1. Jäsenmuuttujien esittely.

class CElain
{
public:   // kts Näkyvyys
    char  m_Nimi[100];   // Eläimen nimi, koko 100 merkkiä.
    float m_Massa;       // Eläimen massa.
};

Luokka CElain pitää sisällään kaksi jäsenmuuttujaa: m_Nimi ja m_Massa. Niihin päästään käsiksi luokasta luodun olion kautta. Kts esimerkki 4.

Jäsenmuuttujien näkyvyys

Jäsenmuuttujaa voi muuttaa luokan metodi, luokan perillisen metodi tai joku ulkopuolinen funktio. Riippuen siitä mitkä tahot pääsevät jäsenmuuttujaan kiinni, puhutaan yksityisestä, suojatusta tai julkisesta jäsenmuuttujasta.

Jäsenmuuttujien näkyvyys eri paikoissa

luokan funktiot näkevät

perilliset näkevät

ulkopuoliset näkevät

private

kyllä

ei

ei

protected

kyllä

kyllä

ei

public

kyllä

kyllä

kyllä

Esimerkki 2. Jäsenmuuttujien näkyvyys.

class CElain
{
private:   // saatavissa vain luokan metodeilla
    char m_Nimi[100];
    float m_Massa;

public:   // voidaan käyttää luokan ulkopuolelta
    bool AsetaNimi(char Nimi[]);
    bool KysyNimi(char Nimi[]);
    bool AsetaMassa(int Massa);
    bool KysyMassa();
};

Jäsenmuuttujien käyttö

Jäsenmuuttujiin voidaan viitata luokan sisällä ja riippuen näkyvyydestä, myös luokan ulkopuolelta.

Esimerkki 3. Esimerkin 1 jäsenmuuttujien käsittely luokan sisällä.

Otsikkotiedosto (.h):

class CElain
{
public:
    char m_Nimi[100];               // Eläimen nimi, koko 100 merkkiä.
    float m_Massa;                  // Eläimen massa.
    void AsetaArvot(char, float);   // Lisätään metodi muuttujien arvojen asettamiseen.
};

Toteutus (.cpp):

// Metodin AsetaArvot() toteutus.
void CElain::AsetaArvot(char Nimi[], float Massa)
{
    strcpy(m_Nimi, Nimi);  // Kopioidaan parametrina saatu Nimi jäsenmuuttujaan m_Nimi.
    m_Massa = Massa;       // Sijoitetaan parametrina saatu Massa jäsenmuuttujaan m_Massa.
}

Pääohjelma (esim main.cpp):

int main()
{
    CElain kissa;
    kissa.AsetaArvot("Miuku", 3.12);
}

Esimerkki 4. Esimerkin 1 jäsenmuuttujien käsittely luokan ulkopuolella.

int main()
{
    CElain kissa;
    kissa.m_Massa = 3.12;
    strcpy(kissa.m_Nimi, "Miuku");
}

Muuttujien pitää olla public-tyyppisiä kun halutaan muuttaa jäsenmuuttujia luokan ulkopuolelta.

  • No labels
You must log in to comment.