13 skyrius - techmat.vgtu.lt
13 skyrius - techmat.vgtu.lt
13 skyrius - techmat.vgtu.lt
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
}<br />
system( "pause" );<br />
return 0;<br />
<strong>13</strong>.4 PAVELDIMUMAS IR METODŲ PERKROVIMAS<br />
Nagrinėsime bazinės klasės metodų perrašymą išvestinėje klasėje. Dabar išvestinės klasės<br />
metodų vardai sutampa su bazinės klasės metodų vardais. Kurie metodai bus kviečiami bazinės ir<br />
išvestinės klasių objektams?<br />
6 pavyzdys: steko iš trijų elementų klasė. Stekas – paprasta duomenų struktūra, nedidelio<br />
mato vienmatis masyvas laikinam duomenų saugojimui. Priklausomai nuo to, kokia tvarka į steką<br />
įdedami ir iš jo išimami duomenys, stekai būna įvairių rūšių: FIFO (angl. First In, First Out – pirmas<br />
įėjo, pirmas išėjo), FILO, LIFO ir pan. Čia parašysime steką trims sveikiesiems duomenims saugoti<br />
„paskutinis įėjo, pirmas išėjo“ (LIFO). Tegu turim nesaugią klasę Stack, kuri netikrina, ar stekas<br />
neperpildytas ir ar nėra tuščias. Stekas turi turėti bent du metodus: push duomeniui į steką<br />
(vienamtį masyvą stack) įdėti ir pop – duomeniui iš steko išimti ir grąžinti. Į masyvą įdedamo ir<br />
išimamo elemento vietą masyve žymėsime indeksu top. Klasės funkcionalumą paveldėsime ir<br />
papildysime duomenų įdėjimo ir išėmimo metodais su reikiamomis patikromis – tai bus jau<br />
saugaus steko klasė SafeStack. Masyvo matas Stack klasėje užduodamas konstrukcija enum: tik<br />
taip galima „apgauti“ kompiliatorių ir klasės viduje pranešti konkrečią duomens reikšmę 3.<br />
#include <br />
#include <br />
using namespace std;<br />
//<br />
class Stack{<br />
protected:<br />
enum{ MAX = 3 };<br />
int stack[ MAX ];<br />
int top;<br />
public:<br />
Stack( ): top(-1) { }<br />
//<br />
~Stack( ) { }<br />
//<br />
void push( int var ) { stack[ ++top ] = var; }<br />
int pop( ) { return stack[ top-- ]; }<br />
};<br />
//<br />
class SafeStack: public Stack {<br />
public:<br />
void push( int var ){<br />
if( top >= MAX-1 ){<br />
cout