Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Esimerkki 1: Olioden käsittely kantaluokan kautta.

CElain:

Code Block

#include <stdio.h>

CElain:
// Kantaluokka CElain
class CElain
{
public:
    virtual \~CElain() {}          // Hajoittimen Toteutustoteutus tulee olla (tyhjäkin käy).
    virtual void Aantele() = 0;   // Aito virtuaalifunktio, pakko toteuttaa perillisissä.
};

CKissa:

Code Block
// Perillinen, joka toteuttaa Aantele()-funktion
class CKissa : public CElain
{
public:
    void Aantele() { printf("Miau!\n"); }
};

...

main:

Code Block
int main()
{
    CElain*CKissa elainkissa;              // Luodaan uusi CELain-tyyppinen osoitinolio CKissa-luokasta.
    CKissaCKoira kissakoira;              // Luodaan uusi olio CKissaCKoira-luokasta.
    CElain* elain;             // Luodaan CELain-tyyppinen osoitin eli kantaluokan tyyppinen osoitin.

    elain = &kissa;            // Pistetään CElain-tyyppinen osoitin osoittamaan olioon kissa.
    elain->Aantele();          // Kutsutaan CKissa-luokassa toteutettua Aantele()-metodia.

    CKoira koira;              // Luodaan uusi olio CKoira-luokasta.

    elain = &koira;            // Pistetään CElain-tyyppinen osoitin osoittamaan olioon koira.
    elain->Aantele();          // Kutsutaan CKoira-luokassa toteutettua Aantele()-metodia.
};

Image Added
Kuva 1. Esimerkki 1 UML-luokkakaaviona.

Esimerkissä luodaan oliot CKissa- sekä CKoira-luokista. Lisäksi luodaan CElain-tyyppinen osoitin. Tämän osoittimen kautta voidaan käsitellä kaikkia CElain-luokan esittelemiä (public ja protected) metodeja, kuten Aantele()-metodia. CElain-luokka toimii yhteisenä rajapintana CKissa ja CKoira -luokille.