9.5.2 Rajapinta ja sisäinen esitys
Kapseloinnin ansiosta luokan käyttämiseksi on tullut selvä
rajapinta
(interface):
metodit, joilla olion tilaa muutetaan. Tämän rajapinnan ansiosta
luokka muuttuu "mustaksi laatikoksi", jonka sisällöstä
ulkomaailma ei tiedä mitään, mutta jonka kanssa voi kommunikoida
metodien avulla.
Kuva 9.3 Musta laatikko
Tämä luokan sisustan piilottaminen antaa meille mahdollisuuden
toteuttaa luokka oleellisesti eri tavalla. Voimme esimerkiksi toteuttaa ajan
minuutteina vuorokauden alusta laskien:
olioalk\aikaclaD.cpp - sisäinen toteutus minuutteina
...
class cAika {
int yht_min;
public:
virtual void aseta(int ih=0,int im=0, int is=0) {
yht_min = 0; lisaa(60*ih+im);
}
cAika(int ih=0, int im=0) { aseta(ih,im); }
virtual void lisaa(int lisa_min, int lisa_sek=0) { yht_min += lisa_min; }
virtual void tulosta(int lf=1) const {
cout << setfill('0') << setw(2) << hh() << ":" << setw(2) << mm();
if ( lf ) cout << endl;
}
int hh() const { return yht_min / 60; }
int mm() const { return yht_min % 60; }
};
...kaikki muu kuten aikaclab.cpp ...
- Lisää aikaclaB:hen ja aikaclaD:hen, eli molempiin sisäisiin
toteutustapoihin saantimetodi minuutteina, joka palauttaa kellonajan
vuorokauden alusta minuutteina laskettuna. Lisää vielä
saantimetodi sekunteina.