previous next Up Title Contents Index

9.3.10 Jako useampaan tiedostoon

Kaiken tämän jälkeen lukija varmaan taas kysyy: Miksi vielä tuplata koodin pituus, kun aikacla4.cpp oli vielä jotenkin siedettävä alkuperäisen aikalis4.cpp:n rinnalla! Vastaus on uudelleen käytettävyys. Eli kun lopulta aika- luokkamme on valmis, paketoimme sen sellaiseksi, että se on helppo liittää myöhempiin omiin ohjelmiimme tai jopa luovuttaa (mahdollisesti korvausta vastaan :-) muille erillisenä komponenttina. Tuplatyö nyt saattaa olla 1/100 työ tulevaisuudessa.

Oikeasti siis jaamme koko ohjelman 3 eri tiedostoon:

aika.h luokan esittely

aika.cpp luokan toteutus

aikatest.cpp luokan testaava pääohjelma

olioalk\aika.h - luokan esittely omaan tiedostoon

	#ifndef AIKA_H           // Suoja, jottei samaa koodia "includata" kahta kertaa!
	#define AIKA_H
	class cAika {
	  int h,m;
	public:
	  cAika(int ih=0, int im=0);
	  void aseta(int ih,int im=0);
	  void lisaa(int lisa_min);
	  void tulosta() const;
	};
	#endif // AIKA_H

olioalk\aika.cpp - luokan metodit kirjoitettu omaan tiedostoon

	#include <iostream.h>
	#include <iomanip.h>
	#include "aika.h"
	
	void cAika::aseta(int ih,int im)
	{
	  h = ih; m = im; lisaa(0);
	}
	
	cAika::cAika(int ih, int im)
	{
	  aseta(ih,im);
	}
	
	void cAika::lisaa(int lisa_min)
	{
	  int yht_min = h * 60 + m + lisa_min;
	  h = yht_min / 60;
	  m = yht_min % 60;
	}
	
	void cAika::tulosta() const
	{
	  cout << setfill('0') << setw(2) << h << ":" << setw(2) << m << endl;
	}

olioalk\aikatest.cpp - aika.cpp:n testi

	#include "aika.h"
	// Projektiin aika.cpp ja aikatest.cpp
	int main(void)
	{
	  cAika a1, a2(13), a3(14,175);
	  a1.tulosta(); a2.tulosta();  a3.tulosta();
	  a1.aseta(12,15); a2.aseta(16,-15);
	  a1.tulosta(); a2.tulosta();
	  return 0;
	}
Lopuksi tehtäisiin vielä projekti tai makefile johon kuuluvat aika.cpp ja aikatest.cpp.


previous next Up Title Contents Index