// elain.cpp // Esimerkki "olio-ohjelmasta" ja terminologiasta // vl 6.9.1998 #include class cElain { // cElain on luokka private: // Yleensa attribuutit kannattaa pitää privatena int ika; // ika on attribuutti public: // cElain() { setIka(0); } // Oletusmuodostaja (constructor) cElain(int i) { setIka(i); } // Parametrillinen muodostaja void setIka(int i) { ika = i; } // Asettamismetodi int getIka() const { return ika; } // Saantimetodi // const tarkoittaa: "luvataan ettei olio muutu kutsun aikana" virtual void aantele() const { cout << "??? " << getIka() << endl; } // metodi // virtuaalinen metodi voidaan korvata (override) perityssä (inherited) // luokassa. }; class cKoira : public cElain { // koira on elain (IS A) => perintä järkevä public: // koira perii julkisesti kaikki eläimen ominaisuudet ja metodit cKoira(int i=0) : cElain(i) { } // Muodostaja on PAKKO kirjoitaa C++:ssa :-( virtual void aantele() const { cout << "Hau hau " << getIka() << endl; } }; class cKissa : public cElain { public: cKissa(int i=0) : cElain(i) { } // Oletusarvo: Jos kutsussa ei ole param. i=0 virtual void aantele() const { cout << "Miau " << getIka() << endl; } }; int main(void) { cKoira musti,pluto(5); // Oliota: musti ja pluto. Musti 0 v, pluto 5 v. cKissa mirri(4); // Olio kissa // musti.setIka(3); // pluto.setIka(5); musti.aantele(); // Lähetetään mustille viesti: ääntele pluto.aantele(); mirri.aantele(); return 0; }