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