\documentclass[a4paper,12pt]{article}

% Tatjana Ahcin PRAKTICNA MATEMATIKA - 2.LETNIK

\usepackage[latin2]{inputenc}

\title{Vaje 25}
\author{Tatjana Ahčin}
\date{18. in 19.05.}

\begin{document}

\maketitle

\section*{Razred \texttt{CKalkulator}}

Spomnimo se:
%
\begin{quote}
  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).
\end{quote}
%
Sedaj pa bomo na podlagi razreda skladov celih števil (modula
\texttt{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 \emph{dedovanja}
(\textit{inheritance}).  Razred \texttt{CKalkulator} bo podedoval iz
sklada celih števil vse \emph{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:
%
\begin{itemize}
\item Naloži
\item Zloži
\item Poln
\item Prazen
\item Vrh
\item Ustvari
\item Uniči
\end{itemize}

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.

\subsection*{Definicijski modul}

Vsaka od navedenih računskih operacij (seštevanje, odštevanje,
množenje, količnik, ostanek pri deljenju) se izvede po naslednjem
postopku:
%
\begin{itemize}
\item Najprej se zložita dve števili z vrha sklada,
\item potem od 2. (npr.) odštejemo 1.
\item in rezultat se spet naloži na sklad.
\end{itemize}
%
Definicijski modul najdete na področju
%
\[
  \texttt{Z:}
     \backslash\texttt{PREDAVANJA}
     \backslash\texttt{POLDE}
     \backslash\texttt{code}
     \backslash\texttt{CKalk}
     \backslash\texttt{CKalk.h}
\]
%
{\tt
\begin {verbatim}

#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
\end{verbatim}
}

\subsection*{Izvedbeni modul}

Izvedbeni modul si oglejte na področju:
%
\[
  \texttt{Z:}
     \backslash\texttt{PREDAVANJA}
     \backslash\texttt{POLDE}
     \backslash\texttt{code}
     \backslash\texttt{CKalk}
     \backslash\texttt{CKalk.cpp}
\]

\subsection*{Testni program}

Oglejte si ga na področju:
%
\[
  \texttt{Z:}
     \backslash\texttt{PREDAVANJA}
     \backslash\texttt{POLDE}
     \backslash\texttt{test}
     \backslash\texttt{CKalk}
     \backslash\texttt{CKalk.cpp}
\]
%
Uporabili smo testni program od zadnjič (\texttt{KALKULAT.CPP}) in vpeljali
nekaj sprememb:
%
\begin{enumerate}
\item Namesto elementa \texttt{mojSklad} smo deklarirali predmet
  \texttt{mojKalkulator} iz razreda \texttt{CKalkulator}.
\item Ker smo želeli izpisovati še zacasne rezultate, smo uvedli nov
  ukaz \texttt{T} (\textit{temporary results)}:
%
\begin{verbatim}
  case 'T':
    printf("%d\n", mojKalkulator.Vrh());
  break;
\end{verbatim}
\end{enumerate}

Na koncu moramo zgraditi projekt. V projekt moramo dodati:
%
\begin{itemize}
\item \texttt{CKALK.CPP} -- testni program
\item \texttt{CKALK.OBJ} -- preveden izvedbeni modul
\item \texttt{SKL-INT.OBJ} -- preveden izvedbeni modul sklada celih
  števil
\end{itemize}
%
Torej to potrebujemo za \texttt{.EXE} verzijo, da bomo program lahko
izvajali.

\section*{\texttt{SL\_VRSTA}}

Popravke in spremembe v zvezi z moduli \texttt{sl\_vrsta.h},
\texttt{sl\_vrsta.cpp}, \texttt{sl\_test.cpp} si oglejte na področjih:
%
\begin{itemize}
\item definicija:
%
\[
  \texttt{Z:}
     \backslash\texttt{PREDAVANJA}
     \backslash\texttt{POLDE}
     \backslash\texttt{code}
     \backslash\texttt{Vrsta}
     \backslash\texttt{SL\_Vrsta.h}
\]
%
\item izvedba:
%
\[
  \texttt{Z:}
     \backslash\texttt{PREDAVANJA}
     \backslash\texttt{POLDE}
     \backslash\texttt{code}
     \backslash\texttt{Vrsta}
     \backslash\texttt{SL\_Vrsta.cpp}
\]
%
\item test:
%
\[
  \texttt{Z:}
     \backslash\texttt{PREDAVANJA}
     \backslash\texttt{POLDE}
     \backslash\texttt{test}
     \backslash\texttt{Vrsta}
     \backslash\texttt{Sl\_test.cpp}
\]
\end{itemize}
%
Spremembe so tudi v modulu GESLO.CPP od zadnjič, kjer smo namesto s
kazalci delali z nizi!

\end{document}
















