6.37.Sinif tipinə malik obyektlərin təyini və onlara aid misallar
Siniflərdən istifadə edilməsinə aid aşağıdaki misala baxaq.
Misal 1. myclass sinfindən istifadə etməklə ob1 və ob2 obyektləri üçün a-dəyişəninə qiymət verməli və hər bir obyekt üçün bu qiymətləri ekrana verməli
#include
using namespace std;
class myclass{
//myclass sinfin qapalı hissəsi
int a;
public:
void set_a(int num);
int get_a( );
};
void myclass :: set_a(int num)
{ a=num;
}
int myclass :: get_a( )
{return a;
}
int main( )
{myclass ob1, ob2;
ob1.set_a(10);
ob2.set_a(20);
cout<cout<return 0;
}
Nəticədə ekrana 10 və 20 ədədləri veriləcək.
Misal 2. Əvvəlki misalda myclass sinfində a-dəyişəni qapalıdır. Ona ancaq myclass sinfinin üzvləri tərəfindən müraciət oluna bilər. Əgər a-dəyişəninə proqramın sinfə aid olmayan hissəsindən müraciət edilərsə, onda kompilyasiya zamanı səhv alınar. Məsələ, tutaq ki, myclass sinfi misal1-dəki kimi təsvir edilmişdir. main funksiyasını aşağıdaki kimi yazsaq onun kompilyasiyası zamanı səhv əmələ gələr:
int main( )
{myclass ob1, ob2;
ob1.a=10; //səhv! Qapalı elementə
ob2.a=20; //üzv olmayan funksiya üçün müraciət yoxdur
cout<
cout<
return 0;
}
Misal 3. Açıq funksiya-üzvlər kimi açıq dəyişən-üzvlər də siniflərin təsvirində ola bilər. Məsələ a-dəyişəni myclass sinfinin təsvirində açıq oblastda elan olunarsa onda a-dəyişəninə proqramın istənilən yerindən müraciət etmək olar. Aşağıdaki proqramda a-dəyişəni açıq oblastda təsvir olunmuşdur:
#include
using namespace std;
class myclass{
public:
int a; //a-açıq üzvdür
//İndi set_a( ) və get_a( ) funksiyaları lazım deyil
};
int main( )
{myclass ob1, ob2;
//Indi a-dəyişəninə aşıkar şəkildə müraciət etmək olar
ob1.a=10;
ob2.a=20;
cout<
cout<
return 0;
}
Göründüyü kimi a-dəyişəninə main( ) funksiyasından aşıkar şəklində müraciət etmək olar. Dəyişənin hansı obyektə aid olduğunu göstərmək üçün (.)-nöqtə operatorundan istifadə edilməsi zəruridir.
Dostları ilə paylaş: |