6.38.Simvolları saxlayan steki reallaşdıran sinfin təyini və istifadəsi Sinfin adı stack olsun. Stekin ölçüsünü size-ilə işarə edək. Stekin təpə nöqtəsinin indeksini tos-işarə edək.
init( )-steki inisiallaşdıran funksiyanın adı,
push( )-stekə simvol yerləşdirən funksiyanın adı,
pop( )-stekdən simvolu çıxaran funksiyanın adi olsun.
Tutaq ki, stack tipinə malik S1 və S2 obyektləri təyin olunmuşdur və S1 obyektindən stekə ‘a’, ‘b’, ‘c’ simvollarını, S2-obyektindən isə ‘x’, ‘y’, ‘z’ simvollarını stekə daxil etmək üçün istifadə olunur. Bu simvolları saxlamaq üçün istifadə olunan steki reallaşdıran proqram aşağıdaki kimi olar:
#include using namespace std; #define size 10 //Simvollar üçün stack sinfinin elanı
Class stack { char stck[size]; //Stek yerləşir int tos; //stekin təpə nöqtəsinin indeksi public: void init( );//Steki inisiallaşdıran funksiya void push(char ch); //Stekə simvol yerləşdirən funksiya char pop( );//Stekdən simvol çıxaran funksiya }; //Stekin inisiallaşdırılması
void Stack :: init( ) {tos=0; } //Stekə simvolun yerləşdirilməsi
void stack::push(char ch) {if (tos==size){ cout<<”Stek doludur”; return; } Stck[tos]=ch; tos++; } //Stekdən simvolun çıxarılması
char stack :: pop( ) {if(tos==0){ cout<<”stek boşdur”; return 0;//stek boşalan halda sıfır qaytarılır } tos--; return stck[tos++]; } int main( ) {stack S1, S2;//iki stekin yaradılması int i; //Steklərin inisiallaşdırılması
S1.init( ); S2.init( ); S1.push(`a`); S2.push(`x`); S1.push(`b`); S2.push(`y`); S1.push(`c`); S2.push(`z`); for(i=0; i<3; i++)cout<<”S1-in simvolu:”< for(i=0; i<3; i++)cout<<”S2-nın simvolu:”< return 0; } Bu proqram ekrana aşağıdakiları verir:
S1-in simvolu: c
S1-in simvolu: b
S1-in simvolu: a
S2-in simvolu: z
S2-in simvolu: y
S2-in simvolu: x
Bu proqramda stack sinfində iki qapalı dəyişən yerləşir: Stck və tos. Stck-massivində stekdə faktiki olaraq yerləşən simvollar olur. tos isə stekin təpəsinin indeksidir. Stekin açıq funksiyaları init( ), pop( ) və push( )-funksiyalarıdır. main( ) funksiyasının daxilində S1 və S2 stekləri yaradılır və bunların hər birində simvollar yerləşir. S1-obyekti S2-obyektindən asılı deyildir. Ona görə də S1-dəki simvollar S2-yə təsir etməyəcəkdir. Hər bir obyektdə özünün xüsusi stck və tos dəyişənlərinin sürətləri yerləşir. Bu obyekt konsepsiyasının başa düşülməsində fundamental rol oynayır.
Sinfin bütün obyektləri ümumi üzv-funksiyalara malik olmasına baxmayaraq hər bir obyekt özünün xüsusi verilənlərini yaradır.