Класс ұғымы С++ тілімен қатар объектiлі - бағытталған программалау әдiстемелiкте де маңызды кең функционалдық толтырылуы бар синтаксистiк конструкция болып табылады:
class <кластың_аты>
{//класстың жабық функция-мүшелері мен мәлімет-мүшелері public:
// класстың ашық функция-мүшелері мен мәлімет-мүшелері
}
Кластың хабарлауы iшiнде көрcетiлген функциялар және айнымалылар кластың мүшесі болып қалыптасады. Класты хабарлағанда iшiнде көрcетiлетін айнымалылар бұл кластың мәлiметтерiнің-мүшелері деп аталады; класты хабарлағанда iшiнде көрcетiлетін функциялар, кластың функцияларының-мүшелері деп аталады. Үнсіздік бойынша, класта жарияланған барлық функциялар және айнымалылар бұл класс үшін жабулы болып қалыптасады. Бұл кластың басқа мүшелерi үшiн ғана қол жетерлік екенін бiлдiредi. Кластың ашық мүшелерiн хабарлау үшiн кілттік public сөзi қолданылады, ол сөзден кейін қос нүкте қойылады. Public сөзден кейiн жарияланған барлық функциялар және айнымалылар кластың басқа
мүшелерiне қол жетерлік болады және класы бар программаның кез келген басқа бөлiгiне де қол жетерлік болады. Класс атауының мысалы:
class AnyClass
{//класстың жабық элементі int a;
public:
int get_a();
void set_a(int num);
};
get_a() және set_a() функциялары AnyClass класында жариялағанымен, олар әлi де анықталмаған. Функция-мүшесін анықтау үшiн функция-мүшесі болып табылатын кластың атын функция атымен байланыстыру керек. Ол үшін кластың атымен содан екi қос нүктеден кейін функция атын жазу керек. Екi қос нүкте түрінде жазылатын операцияны көру аймағын кеңейту операциясы деп атайды. Функция-мүшесін атау үшін келесi ортақ форма қолданылады:
<Тип><класс_атауы>::функция_атауы> (<параметр_тізімі>)
{
// функция денесі
}
Төменде функция-мүшелерін анықтау үшін мысал келтірілген get_a() и set_a():
void AnyClass::get_a()
{
return a;
}
int AnyClass::set_a(int num)
{
a = num;
}
AnyClass класының хабарлауы AnyClass түрiнiң объектілерiнiң құруын алып келмейдi. Керек кластың объектiсін құру үшін класс атын мәлiметтер түрiнің спецификаторы ретiнде қолдануға болады. Мысалы:
AnyClass ob1, оb2;
Класс объектi пайда болғаннан кейін кластың ашық мүшелерiне "нүкте" операциясы арқылы қол жеткізуге болды.
Мысалы:
obl.set_a(10); ob2.set_a(37);
Бұл операторлар объектілердегi а айнымалының мәнiн оb1 және оb2 орнатады. Әрбiр объект класта жарияланған барлық мәлiметтердiң меншiктi көшiрмесiн алады. Ол дегеніміз, оb1 а айнымалының мәні оb2 айнымалының мәнінен бөлек болып табылады.
Кластар элементтеріне сол кластың объектілеріне сілтейтін көрсеткіш арқылы да қол жеткізуге болады. Мысалы:
class Coord
{
public:
int x,y;
void SetCoord(int _x, int _y);
};
void Coord::SetCoord(int _x, int _y)
{
x = _x; у = _y;
}
int main()
{
Coord pt;
Coord *ptPtr = &pt; //объектіге сілтеме
//...
pt.x =0; // объект. клас мұшесі
ptPtr->y = 0; //сілтеме->клас мұшесі ptPtr->SetCoord(10,20);
//... return 0;
}
Кластар элементтеріне қол жеткізу үшін қол жетерлік модификасиясы қолданылады. Олар кластың барлық элементтеріне, басқа модификатор кездеспегенше немесе кластың жариялануы бітпегенше қолданылады. 6.1- кестеде қол жеткізу модификаторлары сипатталған.
Достарыңызбен бөлісу: |