Vaje 25

Tatjana Ahčin

18. in 19.05.

Razred CKalkulator

Spomnimo se:

Najprej smo naredili sklad 100-tih celih števil, potem 200-tih, nato realnih števil (s plavajočo vejico), potem znakov in nizov. Se pravi, izvedbo smo vedno bolj posploševali in naredili tudi sklad s tipom, v katerem smo tip lahko spreminjali. Na koncu smo naredili še izvedbo s kalupi (vzorci).

Sedaj pa bomo na podlagi razreda skladov celih števil (modula SKL-INT.H) zgradili razred CKalkulator, ki bo znal dve celi števili sešteti, odšteti, zmnožiti, zdeliti in poiskati ostanek pri deljenju.

Pri vsem tem se bomo poslužili dedovanja (inheritance). Razred CKalkulator bo podedoval iz sklada celih števil vse javne lastnosti, ki jih le-ta ima, dobil pa bo še nove. Torej se bo obnašal kot sklad celih stevil.

Poglejmo, kakšne lastnosti ima sklad celih stevil:

• Naloži

• Zloži

• Poln

• Prazen

• Vrh

• Ustvari

• Uniči

Nove lastnosti za naš kalkulator so računske operacije. Deduje pa se tudi ustvarjanje in uničevanje. Slednje ni nujno res za vsako dedovanje – modul, ki deduje lahko definira svoj lasten način ustvarjanja in uničevanje.

Definicijski modul

Vsaka od navedenih računskih operacij (seštevanje, odštevanje, množenje, količnik, ostanek pri deljenju) se izvede po naslednjem postopku:

• Najprej se zložita dve števili z vrha sklada,

• potem od 2. (npr.) odštejemo 1.

• in rezultat se spet naloži na sklad.

Definicijski modul najdete na področju

            Z:\PREDAVANJA\POLDE\code\CKalk\CKalk.h

#include"..\..\code\sklad\skl-int.h"
class CKalkulator: Sklad {
  public:
    /* Racunske operacije */
    void Sestej();
    void Odstej();
    void Zmnozi();
    void Kvocient();
    void Ostanek();
    /* Druge lastnosti podeduje iz sklada celih stevil. */
} // CKalkulator

Izvedbeni modul

Izvedbeni modul si oglejte na področju:

           Z:\PREDAVANJA\POLDE\code\CKalk\CKalk.cpp

Testni program

Oglejte si ga na področju:

           Z:\PREDAVANJA\POLDE\test\CKalk\CKalk.cpp

Uporabili smo testni program od zadnjič (KALKULAT.CPP) in vpeljali nekaj sprememb:

1. Namesto elementa mojSklad smo deklarirali predmet mojKalkulator

  iz razreda CKalkulator.

2. Ker smo želeli izpisovati še zacasne rezultate, smo uvedli nov ukaz T (temporary results):

    case 'T':
      printf("%d\n", mojKalkulator.Vrh());
    break;

Na koncu moramo zgraditi projekt. V projekt moramo dodati:

• CKALK.CPP – testni program

• CKALK.OBJ – preveden izvedbeni modul

• SKL-INT.OBJ – preveden izvedbeni modul sklada celih števil

Torej to potrebujemo za .EXE verzijo, da bomo program lahko izvajali.

SL VRSTA

Popravke in spremembe v zvezi z moduli sl vrsta.h, sl vrsta.cpp, sl test.cpp si oglejte na področjih:

• definicija:

           Z:\PREDAVANJA\POLDE\code\Vrsta\SL Vrsta.h

• izvedba:

          Z:\PREDAVANJA\POLDE\code\Vrsta\SL Vrsta.cpp

• test:

          Z:\PREDAVANJA\POLDE\test\Vrsta\Sl test.cpp

Spremembe so tudi v modulu GESLO.CPP od zadnjič, kjer smo namesto s kazalci delali z nizi!