Новый документ (3) (1) (1)


І.Класс абстрактылы тип ретінде



Pdf көрінісі
бет3/16
Дата10.12.2023
өлшемі330,22 Kb.
#136675
1   2   3   4   5   6   7   8   9   ...   16
Байланысты:
Новый документ (3) (1) (1)

І.Класс абстрактылы тип ретінде
«Клиент-сервер» технологиясы бойынша класс əдістерін анықтау.
Конструктор мағынасы. Деструктор мағынасы.
Деректер абстракциясына негізделетін программаларды жүзеге асыру
жəне
құрастыру,
жобалау
принциптерінің
жиынтығы, шешілмелі
есептердің ерекшеліктері мен түсініктерін анағұрлым толық көрсететін
деректердің жаңа типтерін құруды қарастырады.
С++ тілінде программалаушының өзіндік деректер типтерін енгізуге
жəне олармен кластар көмегімен орындалатын операцияларды анықтауға
мүмкіндігі болады.


Класс - бұл бар типтер негізіндегі туынды құрылымдық
(структурированный) тип. Класты келесідей ең оңай əдіс арқылы
анықтауға болады:
Класс_кілті класс_аты {компоненттер тізімі};
мұнда класс_кілті - class, struct, union қызметші сөздерінің бірі;
класс_аты - еркін таңдалатын идентификатор;
компоненттер тізімі - класқа қатысты функциялар мен типтелген
деректердің сипаттаушылары мен анықтамалары. Компоненттер обьект
күйін анықтайды жəне класс объектісінің тəртібін шартқа негіздейді.
Класс компоненттері деректер, функциялар, кластар, санауыштар, биттік
өрістер, достық функциялар мен типтер атаулары бола алады.
Мысалы:
class Classid { int k; // к, х, у жабық мүшелер - үнсіздік бойынша деректер
double x,y; public: char lit, ch;
// lit,ch ашық мүшелер - деректер int f3(int,int);
// кластың ашық əдістері int Get x (void)
// кластың орнына қою əдісі { return x; } private: void f1 (void);
// жабық мүшелер - класс əдістері int f2 (int); };
Қатынау
спецификаторлары
public: жəне private: қатынау
спецификаторлары класс мүшелеріне өтуге мүм1кін беретін режимді
анықтайды: private - класс мүшелерін жабыққа айналдырады, ал public -
ашық.
Кластың жабық мүшелеріне тек берілген класс мүшелерінің қатынауға
рұқсаты бар, сонымен қатар функциялардың – класс достары. Кластың
ашық мүшелеріне кез келген функциялардың қатынауға мүмкіншіліктері
бар. Олар бар болып табылатын бағдарлама мен класс объектілерінің
байланысы үшін арналған. Класты жобалап отырып, оның қай мүшесін
ашық, ал қайсысын жабық етуді мұқият ойластырған жөн. Көптеген
жағдайда класс анықтамасы блокта локализацияланбаған жəне класс
атауының іс-əрекет облысы бүкіл файл болып табылады. Жай кластық
əдістерін анықтау класс анықтамасының ішінде болуы мүмкін жəне
мұндай жағдайда олар автоматты түрде орын ауыстырғандар
болып
табылады. Орын ауыстыратын функцияларды егер функция қарапайым
жəне қысқа болса, қолданған жөн, мысалы, Getx ( ) функциясы. Əдетте,
қауіпсіздікті жоғарылату мақсатымен кластың мүшеберілгендерін жалпыға
бірдей рұқсат етілмейтін етеді жəне еркін бағдарлама ортасынан олармен
тікелей байланысуға болмайды. Бірақ оған қарамастан олармен кластың


барлығына рұқсат етілген əдістерін қолданып ерікті бағдарламалық
ортадан да жұмыс істеуге болады (public:).
Жоғарыда қарастырылған мысал үшін келесі əдіс қолданылады:
int Getx (void) { return x; } жабық мүше мəнін берілген х қайтарады.
Арнайы түрде мұндай əдістердің «жүдеу» денелерін тиімділікті
жоғарылату үшін орын ауыстырушы етіп класс анықтамасының ішінде
енгізеді. Класс анықтамасынан тыс орналастыратын əдістерді анықтаған
жағдайда
əдістер
тақырыбына
inline
спецификаторы
қосылады.
«Клиент-сервер» технологиясы бойынша класс əдістерін анықтау класс
анықтамасынан тыс орналастырған жөн.
Көру облысының «::» рұқсат ету операторы арқылы компиляторға
берілген анықталатын əдіс қандай класқа қатысты екендігін хабарлайды,
мысалы:
int Classid::
f2 (int х) { əдіс денесі }
Класс анықтамасы берілген класс объектілерін құрмайды. Объектілер
оларды анықтау жолымен ғана құрады, мысалы:
Classid obj1, obj2, obj Array [10];
Класс объектісінің өлшемі кластың статикалық емес мүше
берілгендерінің өлшемдер қосындысымен жадыда анықталады. Класс
əдістері класс объектісі үшін бөлінген жады облысының орнын алмайды.
Бірнеше файлдардан тұратын бағдарламалық жобалармен жұмыс
жасағанда класс анықтамасы берілген класс объектілері қолданатын
немесе оның əдістері анықталатан файлдарда болуға міндетті. Сондықтан
класс анықтамасын арнайы түрде ол қажет болып табылатын файлдарда
#include
дерективасы
көмегімен
қосылатын
тақырыптық
файлға
(хедер-файл)
орналастырылады.
Егер
класс
əдісінің
анықтамасы
анықталудан тыс орналасса, онда ол міндетті түрде өзі қолданылатын
файлдарда анықталған болуы керек. Мұндай əдістің анықтамасы класс
анықтамасымен бірге тақырыптық файлда болуы керек
Белгілі бір класс объектісінің ашық мүшелеріне қатынауға рұқсат алуды
тура «.» жəне жанама « » таңдау операторлары көмегімен жүзеге
асырылады.
C++ тілінде объектілерді жою мен инициализациялау жұмыстарын
орындайтын, обьектілердің жойылуы мен құрылуы кезінде автоматты
түрде шақырылатын, кластың арнайы əдістері сəйкесінше конструкторлар
мен деструкторлар деп аталады. Класта бірнеше конструкторларды құруға


болады. Əрбір конструктордың өзінің басқалардан айырмашылығы бар
параметрлері
болады.Параметрлері
жоқ
конструктор
үнсіздік
конструкторы. Деструктор əрқашан жалғыз жəне параметрлері болмайды.
Тек ашық мүшелері бар жəне конструкторы жоқ класс объектісі мəндер
тізімі арқылы жай құрылымдық айнымалы сияқты инициализациялануы
мүмкін. Егер класс конструкторларының біреуі де ашық функция – класс
мүшесі болып табылмаса, онда мұндай кластың мүшелері құрыла
алмайды. Мұндай кластар басқа кластар (мұрагерлік) үшін базалық
кластар (родительские) болып табылады.
Класс объектісін құрған кезде ол үшін сəйкес келетін конструктор
автоматты түрде шақырылады. Объекттің деректер мүшесі (объект
айнымалыларының) инициализациясы конструктордың орындалуы сияқты
инициализациясы кезінде де орындала алады. Конструктор параметрі өз
класы бола алмайды, бірақ көшіру конструкторы сияқты оған жасалған
сілтеме болуы мүмкін. Кластың деректер компонентінің жалғыз данасы
болуы үшін жəне əрбір жаңа кластың объектісінің құрылуы кезінде
тираждалмауы үшін ол класты статикалық сияқты анықтау керек, яғни
Static атрибуты болуы керек. Кластың статикалық компоненттік
функциялары нақты обьект атауы жоқ кластың Static берілгендеріне
қатынасуды
қамтамасыз
етеді.
Кластың
Static
функциялары
функциялардың жай (статикалық емес) компоненттік барлық негізгі
ерекшеліктерін сақтайды. Класқа қатысты функция нақты объекттің
деректерін өңдеу үшін шақырған кезде бұл функцияға автоматты жəне
айқын емес функция шақырылған объект көрсеткіші беріледі.
Бұл нұсқауыштың бекітілген this аты бар жəне программалаушы үшін
кластың əрбір функциясы келесі түрде анықталған:
класс_аты*const this=өңделетін_обьекттің_адресі;
this нұсқауышын қолдану тиімділігі көрінетін жағдайлар:
- берілген класс компонентінің аты класс функциясының формальды
параметрінің атымен сəйкес келгенде;
- класс функциясының денесінде айқын түрде бұл функция шақырылған
объект адресін көрсету қажет болғанда;
- функция параметрі ретінде бұл кластың функция атын жазған кезде
объекттің нақты атына жол берілмегенде (керек объектіге мұндай функция
сілтемесін немесе нұсқауышын берудің орнына).


1.1.
Кластар құру
Айналаға қарап, өмірдің көптеген заттарын байқауға болады. Мысалы,
ит,
үстел,
теледидар,
автомобиль.
Мұнда
кейбір
геометриялық
фигураларды да жатқызуға болады. Мысалы, шеңбер, тіктөртбұрыш жəне
т.б. Қоршаған ортаның объектілерін екі типке бөлуге болады: олардың
бəрінің


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   16




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет