Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h1. Jäsenmuuttujat (Member Variables)


h2. 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. 

{anchor:esim1}

h3. *Esimerkki 1*. Jäsenmuuttujien esittely.

{code}
class CElainAuto
{
public:   // kts Näkyvyys
    char  m_Niminimi[100];   // Eläimen nimi, koko 100 merkkiä.
    float m_Massamassa;       // Eläimen massa.
};
{code}
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|#esim4].

{anchor:nakyvyys}

h2. 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ä |

{anchor:esim2}

*Esimerkki 2*. Jäsenmuuttujien näkyvyys.

{code}
class CElainAuto
{
private:   // saatavissa vain luokan metodeilla
    char m_Niminimi[100];
    float m_Massamassa;

public:   // voidaan käyttää luokan ulkopuolelta
    bool AsetaNimi(char Niminimi[]);
    bool KysyNimi(char Niminimi[]);
    bool AsetaMassa(int Massamassa);
    bool KysyMassa();
};
{code}
h4. Jäsenmuuttujien käyttö

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

{anchor:esim3}

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

Otsikkotiedosto (.h):
{code}
class CElainAuto
{
public:
    char m_Niminimi[100];               // Eläimen nimi, koko 100 merkkiä.
    float m_Massamassa;                  // Eläimen massa.
    void AsetaArvot(char, float);   // Lisätään metodi muuttujien arvojen asettamiseen.
};
{code}
Toteutus (.cpp):
{code}
// Metodin AsetaArvot() toteutus.
void CElainAuto::AsetaArvot(char Niminimi[], float Massamassa)
{
    strcpy(m_Niminimi, Nimithis->nimi);  // Kopioidaan parametrina saatu Nimi jäsenmuuttujaan m_Nimi.
    m_Massathis->massa = Massamassa;       // Sijoitetaan parametrina saatu Massa jäsenmuuttujaan m_Massa.
}
{code}
Pääohjelma (esim main.cpp):
{code}
int main()
{
    CElainAuto kissaauto;
    kissaauto.AsetaArvot("MiukuNissan", 3.121312);
}
{code}
{anchor:esim4}

*Esimerkki 4*. [Esimerkin 1|#esim1] jäsenmuuttujien käsittely luokan ulkopuolella.

{code}
int main()
{
       CElainAuto kissaNissan;
       kissaNissan.m_Massamassa = 3.121312;
    strcpy(kissaNissan.m_Niminimi, "MiukuSport");
}
{code}
{note}Muuttujien pitää olla public-tyyppisiä kun halutaan muuttaa jäsenmuuttujia luokan ulkopuolelta.{note}