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} |