Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0
Wiki Markup
h2. Luokan jäsenfunktiot

...



Metodit kirjoitetaan yleensä luokan _.cpp_ \-tiedostoon. Tiedoston  alkuun sisällytetään *\#include "tiedosto.h"* \-lauseella otsikkotiedosto, jossa ko. luokka on esitelty. Kun kirjoitetaan funktion toteutusta .cpp \-tiedostoon, tulee muistaa laittaa *luokan_nimi::* funktion nimen eteen, esim. *CElain::*.

...



h3. Esimerkki 1. CElain luokan esittely ja toteutus.

...



Elain.h-tiedosto:

...


{code
}
class CElain
{
private:
    char m_Nimi[100];
    float m_Massa;

public:
    void AsetaNimi(char Nimi[]);
    char* PalautaNimi();

    void AsetaMassa(float Massa);
    float PalautaMassa();
};

{code}
Elain.cpp-tiedosto:

...



{code
}
#include "Elain.h"

void CElain::AsetaNimi(char Nimi[])
{
    strcpy(m_Nimi, Nimi);   // merkkijonon (char muuttuja[]) kopioiminen tapahtuu strcpy()-funktion  avulla.
}

char* CElain::PalautaNimi()
{
    return m_Nimi;
}

void CElain::AsetaMassa(float Massa)
{
    m_Massa = Massa;
}

float CElain::PalautaMassa()
{
    return m_Massa;
}
{code}

Jäsenfunktioiden toteutus eroaa tavallisen funktion toteutuksesta siinä, että jäsenfunktion paluuarvon ja nimen väliin laitetaan luokan nimi, johon se kuuluu. Useimmiten jäsenmuuttujat ovat yksityisiä ja siksi niiden hakuun joudutaan tekemään asetus ja hakufunktiot. Seuraavassa esimerkki jäsenmuuttujan palauttavasta jäsenfunktiosta.

...



{code
}
int CElain::PalautaMassa()
{
    return m_Massa;
}
{code}

h2. Olion jäsenfunktioiden käyttö

...



Muutettaessa olion ominaisuuksia tai haluttaessa käyttää olion jäsenfunktioita, annetaan ensin olion nimi ja sen jälkeen pisteellä erotettuna jäsenfunktio.

...



{code
}
Koira.AsetaNimi("Rekku");
{code}
Kun olio on esitelty osoittimena, käytetään pisteen tilalla nuolta:

...


{code
}
pKissa->AsetaNimi("Misse");

Näkyvyys

Luokan metodien näkyvyys toimii samalla periaatteella kuin luokan jäsenmuuttujien. Kts. jäsenmuuttujat.

Jäsenfunktioiden parametrit

Jäsenfunktioiden parametreja määriteltäessä on tärkeätä muistaa asettaa arvot vakioiksi, jos niitä ei haluta muuttaa. Parametrit, joiden muutoksien halutaan näkyvän funktioiden ulkopuolella, tulee määritellä osoittimiksi tai referensseiksi.

Esimerkki 2: Jäsenfunktioiden parametrit.

Code Block
{code}
h2. Näkyvyys

Luokan metodien näkyvyys toimii samalla periaatteella kuin luokan jäsenmuuttujien. Kts. [jäsenmuuttujat|koneautomaatio:Jäsenmuuttujat].

h3. Jäsenfunktioiden parametrit

Jäsenfunktioiden parametreja määriteltäessä on tärkeätä muistaa asettaa arvot vakioiksi, jos niitä ei haluta muuttaa. Parametrit, joiden muutoksien halutaan näkyvän funktioiden ulkopuolella, tulee määritellä osoittimiksi tai referensseiksi.

h3. Esimerkki 2: Jäsenfunktioiden parametrit.

{code}
class CLuokka {
public:
    void AsetaArvo(const int); // Parametrina const int, koska sen arvoa ei haluta muuttaa
    int PalautaArvo()          // Vakiofunktio, sillä se ei muuta luokan  tilaa.

private:
    int m_Arvo;
};
{code}
Toteutukset:

...


{code
}
void CLuokka::AsetaArvo(const int Arvo)
{
    m_Arvo = Arvo;
}

int CLuokka::PalautaArvo() const
{
   return m_Arvo;
}
{code}