Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

9.4.1 Saantimetodit

Muutenkin saattaa tulla tilanteita, joissa luokan ulkopuolinen haluaa päästä käsiksi sisäisiin tietoihin. Ainakin lukemana niitä. Eihän ole ollenkaan tavatonta ajankaan kanssa, että joku haluaisi tietää tunnit, muttei tulostaa? Mikä ratkaisuksi? Julistetaanko kaikki attribuutit julkisiksi ( public)? No ei sentään! Kirjoitetaan saantimetodi kullekin attribuutille, jonka perustellusti voidaan katsoa tarpeelliseksi jollekin ulkopuoliselle voitavan julkaista:

"Lopullinen" versio aikaluokastamme voisikin siis olla seuraava:

olioalk\AikaC.java - saantimetodit

	public class AikaC {
	  private int h,m;
	...
	  public int getH() { return h; }
	  public int getM() { return m; }
	...
	}

Huomattakoon nyt, että perinnässä ei tarvitse määritellä uudestaan saantifunktioita getH() ja getM(), ainoastaan uudet, eli esimerkissämme getS().

Nyt voitaisiin esimerkiksi kutsua:

	 System.out.println("Tunnit = " + a1.getH());

Mikä tässä sitten on erona attribuuttien julkaisemiseen verrattuna? Se että attribuutit ovat nyt tietyssä mielessä vain luettavissa ( read-only), eli niitä voi lukea saantimetodien avuilla, mutta niitä voi asettaa vain aseta-metodin avulla, joka taas pystyy suorittamaan oikeellisuustarkistukset ja näin olion tila ei koskaan pääse muuttumaan olion itsensä siitä tietämättä.

Tehtävä 9.13 Saantimetodi sekunneille

Täydennä AikaSekB.java:hen em. saantimetodit ja lisäksi getS() aliluokkaan AikaSekB.

Tehtävä 9.14 Saantimetodien käyttäminen

Muuta vielä edellisessä tehtävässä jokainen mahdollinen viittaus luokan sisälläkin saantimetodeja käyttäväksi suoran attribuuttiviittauksen sijasta.

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys