Jos luokka on saatu joltakin kolmannelta osapuolelta, ei luokan päivittäminen edes ole mahdollista, vaan silloin täytyy turvautua muihin (parempiin) tapoihin.
Päivitämme nyt kuitenkin alkuperäistä luokkaa:
#include <iostream.h>
#include <iomanip.h>
class cAika {
int h,m,s; // lisätty s
public:
cAika(int ih=0, int im=0, int is=0); // lisätty is=0
void aseta(int ih,int im=0, int is=0); // lisätty is=0
void lisaa(int lisa_min, int lisa_sek=0); // lisätty lisa_sek=0
void tulosta(int tulsek=0) const; // lisätty tulsek=0
};
void cAika::aseta(int ih,int im, int is) // lisätty is
{
h = ih; m = im; s = is; lisaa(0,0); // lisätty s=is ja ,0
}
cAika::cAika(int ih, int im, int is) // lisätty int is
{
aseta(ih,im,is);
}
void cAika::lisaa(int lisa_min, int lisa_sek) // lisätty int lisa_sek
{
s += lisa_sek; // lisätty
int yht_min = h * 60 + m + lisa_min + s / 60; // lisätty s / 60
s = s % 60; // lisätty
h = yht_min / 60;
m = yht_min % 60;
}
void cAika::tulosta(int tulsek) const // lisätty int tulsek
{
cout << setfill('0') << setw(2) << h << ":" << setw(2) << m;
if ( tulsek ) cout << ":" << setw(2) << s; // lisätty
cout << endl;
}
int main(void)
{
cAika a1, a2(13), a3(14,175); // ei muutoksia!
a1.tulosta(); a2.tulosta(); a3.tulosta();
a1.aseta(12,15); a2.aseta(16,-15);
a1.tulosta(); a2.tulosta();
cAika a4(12,55,45); a4.tulosta(1); // lisätty uusi
a4.lisaa(3,30); a4.tulosta(1);
return 0;
}
Huh huh! Tulipa paljon muutoksia, mutta onnistuimme kuitenkin
pitämään alkuperäisen pääohjelman koodin
muuttumattomana. Tulostuksessa olisi tietysti voitu valita sekin linja,
että aina tulostetaan sekunnit tai sekuntien tulostus on oletuksena.
Kumpikin valinta olisi aiheuttanut olemassa olevan koodin toiminnan
muuttumisen. Jos näin olisi haluttu, niin sitten olisi valittu niin.