Läheskään aina ei voi täysin välttää sitäkään, etteikö alkuperäistä luokkaa joutuisi muuttamaan. Jos näin joudutaan tekemään, pitäisi tämä pystyä tekemään siten, että jo kirjoitettu luokkaa käyttävä koodi säilyisi täysin muuttumattomana (tai ainakin voitaisiin päivittää minimaalisilla muutoksilla) ja vasta uudessa koodissa käytettäisiin hyväksi luokan uusia ominaisuuksia.
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.