Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

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) << getH() << ":" << setw(2) << getM();
	    if ( lf ) cout << endl;
	  }
	  int getH() const { return yht_min / 60; }
	  int getM() const { return yht_min % 60; }
	};
	...kaikki muu kuten aikaclab.cpp ...

Tehtävä 9.89 minuutteina()

Lisää aikaclaB:hen ja aikaclaD:hen, eli molempiin sisäisiin toteutustapoihin saantimetodi getMinuutteina, joka palauttaa kellonajan vuorokauden alusta minuutteina laskettuna. Lisää vielä saantimetodi getSekunteina.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys