Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

19.1.4 Jäsenen tehtävät talletuksessa

Jäsenellekin on jäänyt tehtäviä. Jäsenen tulostus tietovirtaan voitaisiin tehdä esimerkiksi:

	ostream &operator<<(ostream &os,const cJasen &jasen)
	{
	  char erotin = jasen.erotin;
	  os << jasen.tunnus_nro     << erotin
	     << jasen.nimi           << erotin
	     << jasen.hetu           << erotin
	     << jasen.katuosoite     << erotin
	...
	     << jasen.jmaksu         << erotin
	     << jasen.maksu          << erotin
	     << jasen.lisatietoja    << erotin;
	}

Nyt maksut tulostuisivat desimaaleiltaan varsin mielivaltaisesti. Jos tämä tyydyttää, niin em. tapa on aivan hyvä. Toisaalta voitaisiin tehdä apufunktio jonoksi, jonka tehtävänä on muotoilla reaaliluku merkkijonoksi siististi, esimerkiksi kahdella desimaalilla:

	string jonoksi(double d)
	{
	  char st[40];
	  double_jonoksi(N_S(st),d,"%4.2lf");
	  return string(st);
	}

Nyt reaalilukukenttien tulostus voitaisiin tehdä

	...
	     << jonoksi(jasen.jmaksu)         << erotin
	     << jonoksi(jasen.maksu)          << erotin
	...

Symmetriasyistä kaikille muillekin tietotyypeille voitaisiin tehdä vastaava funktio C++:an kuormitusmahdollisuuden ansiosta. Näin jäsenen tietovirtaan tulostaminen voisi olla myös:

talletus.2\jasen.cpp - talletus

	string cJasen::getAsString() const
	{
	  return
	       jonoksi(tunnus_nro)     + erotin
	     + jonoksi(nimi)           + erotin
	     + jonoksi(hetu)           + erotin
	     + jonoksi(katuosoite)     + erotin
	     + jonoksi(postinumero)    + erotin
	     + jonoksi(postiosoite)    + erotin
	     + jonoksi(kotipuhelin)    + erotin
	     + jonoksi(tyopuhelin)     + erotin
	     + jonoksi(autopuhelin)    + erotin
	     + jonoksi(liittymisvuosi) + erotin
	     + jonoksi(jmaksu)         + erotin
	     + jonoksi(maksu)          + erotin
	     + jonoksi(lisatietoja)    + erotin;
	}
	
	ostream &operator<<(ostream &os,const cJasen &jasen)
	{
	  os << jasen.getAsString();
	  return os;
	}

Tästä on vielä se lisäetu, että voidaan esimerkiksi tehdä jonoksi- funktiosta sellainen, että tietty kokonaislukuarvo tai reaalilukuarvo (esim. -1) tallentuu tyhjänä merkkijonona, tarkoittaen ettei arvoa ole syötetty. 0:han ei yleensä voi tällainen arvo olla, koska 0 on usein aivan järkevä syöttö.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys