Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Кластар. Класс түсінігі






Класс – бұ л қ олданушы анық тайтын тип. Кластың сипатталуы Си тіліндегі структураның сипатталуына ұ қ сас. Date деген датаны жә не осы типті айнымалылармен жұ мыс жасауғ а арналғ ан функциялар жиынын анық тау ү шін, struct типін қ олданып дата тү сінігінің жү зеге асырылуын қ арастырайық:

 

struct date {

int month, day, year; // дата: айы, кү ні, жылы

void set(int, int, int);

void get(int*, int*, int};

void next();

void print();

// …

};

 

Осылайша сипатталғ ан функциялар, функция-мү шелер деп аталады жә не структура мү шелеріне қ атынау ү шін стандартты синтаксистің кө мегімен сә йкес типті айнымалы ү шін ғ ана шақ ырылуы мү мкін. Мысалы:

 

date today; // бү гін

date my_burthday; // менің туғ ан кү нім

void f()

{

my_burthday.set(30, 12, 1950);

today.set(18, 1, 1985);

my_burthday.print();

today.next();

}

 

Ә ртү рлі струтураларда бірдей атты функция-мү шелер болғ андық тан, функция-мү шені анық тағ ан уақ ытта структура аты кө рсетілуі тиіс:

 

void date:: next()

{

if (++day > 28) {

// жұ мыстың кү рделі бө лігін орындайды

}

}

Функция-мү шеде мү шелердің аттары объектке айқ ын сілтемеуі мү мкін. Бұ л жағ дайда аты объекттің функция шақ ырылғ ан мү шесіне тиісті болады (жатады).

Date сипаттамасы date типті объектілермен жұ мыс жасау ү шін бірқ атар функциялар ұ сынады, бірақ бұ л функциялар date типті объектілер ү шін жалғ ыз болуы керек екендігін кө рсетпейді. Бұ л шектеуді struct орнына class типін қ олданып қ оюғ а болады:

 

class date {

int month, day, year;

public:

void set(int, int, int);

void get(int*, int*, int};

void next();

void print();

};

 

public: белгісі класс денесін екі бө лікке бө леді. Бірінші жабық бө ліктегі атаулар тек функция-мү шелермен қ олданылуы мү мкін. Екіншісі, ашық бө лігі класс объектісінің интерфейсін қ ұ райды. Struct – бұ л барлық мү шелері ашық болатын class, сондық тан функция-мү шелер жоғ арыда кө рсетілгендей қ олданылады. Мысалы:

 

void date:: print() // АҚ Ш-та қ олданылатындай баспағ а шығ арады

{

cout < < month < < " /" < < day < < " /" year;

}

 

Мә ліметтер қ ұ рылымына ену мү мкіндігі айқ ын сипатталғ ан функциялар тізімімен шектелгендігінің бірнеше артық шылығ ы бар. Датаның мү мкін емес мә нді қ абылдауының кез келген қ атесі (мысалы, желтоқ сан 36, 1985), функция-мү ше кодымен шақ ырылуы керек, сондық тан ө ң деудің бірінші сатысы, локализация, программа орындауғ а жіберілмес бұ рын орындалады. Бұ л date типіндегі кез келген ө згеріс оның мү шелеріндегі ө згерістерден тә уелді деген жалпы тұ жырымның дербес жағ дайы. Тағ ы бір артық шылығ ы – осы типті қ олдануды ү йрену ү шін, функция-мү шелердің анық тамасын ғ ана білу жеткілікті болады.

Жабық мә ліметтерді қ орғ ау қ ажеттілігі класс мү шелерінің аттарын қ олдануды шектеумен байланысты. Функция-мү шеде объект мү шелеріне тікелей сілтеуге болады. Мысалы:

 

class x {

int m;

public:

int readm() { return m; }

};

x aa;

x bb;

void f()

{

int a = aa.readm();

int b = bb.readm();

// …

}

member() мү шесін бірінші рет шақ ырғ анда m aa.m-ге тиісті болады, ал екіншісінде - bb.m-ге.

Функция-мү ше шақ ырылғ ан объектке кө рсеткіш функцияның жасырын параметрі болып табылады. Бұ л айқ ын емес параметрге this-ге сияқ ты сілтеуше болады. х класының ә рбір функциясында this кө рсеткіші айқ ын емес тү рде сипатталады

x* this;

жә не функция-мү ше шақ ырылғ ан объектке сілтейтіндей инициализацияланады. this айқ ын тү рде сипатталуы мү мкін емес, ө йткені ол кілттік сө з. x класы эквивалентті тү рде былай сипатталуы мү мкін:

 

class x {

int m;

public:

int readm() { return this-> m; }

};

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.