Главная страница

ОББН лекция 2. Си программалау тіліне кіріспе Жоспар


Скачать 128.11 Kb.
НазваниеСи программалау тіліне кіріспе Жоспар
Дата06.08.2020
Размер128.11 Kb.
Формат файлаdocx
Имя файлаОББН лекция 2.docx
ТипПрограмма
#135233
страница10 из 11
1   2   3   4   5   6   7   8   9   10   11

Мұрагерлік



Жоспар

1.Мұрагерлік


2. Қорғалған элементтер

1.Мұрагерлік



Объектігеөбағытталған программалаудың мақсатттарының бірі – уақытты үнемдеу үшін құрылған кластарды қайта қолдану. Егер сіз белгілі бір класс құрастырсаңыз, онда жаңа класс құруға оның барлық немесе бірнеше ерекшеліктері қажет болуы мүмкін. Бұл жағдайда класқа қажетті элементтерді және функцияларды қосып жаңа класс құрып пайдалануға болады. Яғни, жаңа объект бұрынғы кластың(базалық класс) элементтерін мұрагер ретінде қабылдайды. Жаңа құрылған класс туынды, ал негізгі класс базалық класс деп аталады.

  • Егер программа мұрагерлікті қолданса, онда жаңа класты құру үшін базалық класс қажет

  • Туынды класс элементтерін инициализациялау үшін программа базалық және туынды кластардың конструкторын шақыруы тиіс.

  • Нүкте операторын қлданып программада базалық және туынды кластардың элементтерін қолдануға болады.

  • Жалпы (public) және дербес (private) мақсаттағы элементтермен бірге C++ тілінде базалық және туынды кластарда қолдануға болатын қорғалған элементтер (protected) элементтер болады,

Мұрагерлік ө объектігеөбағытталған программалаудың негізгі қағидаларының бірі болып табылады. Мұрагерлік өтуынды кластың базалық кластың мінездемелерін өзіне мұрагер ретінде алу қасиеті. Мысалы, бізде базалық класс employee бар болсын:

class employee

{
public:
   employee(char*,char*,float);
   voidshow_employee(void);
private:
   charname[64];
   charposition[64];
   floatsalary;
};

Біздің программамызға manager класы қажет болсын, онда employee класына келесі элементтер қосылсын:

floatannual_bonus;
charcompany_car[64];
int stock_options;

Біз программада жаңа класты құруды екі түрлі тәсілмен жүргізуімізге болады.: біріншіден, программа жаңа manager класын толық қайтадан құрады, бұл жағдайда employee класының элементтері қайта жазылады программа көлемі ұлғаяды, екіншіден программа жаңа manager класын базового класс employee көмегі арқылы құрады.

Жаңа класты анықтау class қызметші сөзінен басталады, класс атауы manager, одан кейін қос нүкте белгісі employee атауы жазылады,

Мұндағы public қызметші сөзі employee класының жалпы (public) элементтері manager класының да жалпы элементтері болатынын көрсетеді. Мысалы, келесі операторлар manager класысын құрады:

class manager : public employee

{
public:
   manager(char*,char*,char*,float,float,int);
   voidshow_manager(void);
private:
   floatannual_bonus;
   charcompany_car[64];
   intstock_options;
};

Базалық кластан жаңа класс құрғанда базалық кластың дербес элементтері туынды класта базалық кластың интерфейс функциялары арқылы ғана қолданыла алады.Сондықтан оларды нүкте операциясы арқылы қолдана алмаймыз.

Келесі программада C++ тілінде мұрагерлік қалай жүзеге асырылатыны көрсетілген , мұнда туынды класс –manager, ал базалық класс employee:

#include

#include

class employee

{
public:
   employee(char*,char*,float);
   voidshow_employee(void);
private:
   charname[64];
   charposition[64];
   floatsalary;
};

employee::employee(char *name, char *position,float salary)

{
   strcpy(employee::name,name);
   strcpy(employee::position,position);
   employee::salary=salary;
}

void employee::show_employee(void)

{
   cout<<“Аты-жөні:“<   cout<<“қызметі:“<
   cout<<“жалақысы:”<}

class manager : public employee

{
public:
   manager(char*,char*,char*,float,float,int);
   voidshow_manager(void);
private:
   floatannual_bonus;
   charcompany_car[64];
   intstock_options;
};

manager::manager(char *name, char *position, char *company_car, float salary, float bonus, int stock_options) : employee(name, position, salary)

{
   strcpy(manager::company_car,company_car);
   manager::annual_bonus=bonus;
   manager::stock_options=stock_options;
}

void manager::show_manager(void)

{
   show_employee();
   cout<< “ Фирмы машинасы: “ << company_car << endl;
   cout<< “жылдық сыйақы” << annual_bonus << endl;
   cout<< “Фонд: “ << stock_options << endl;
}

void main(void)

{
   employeeworker(“Арман”,“Программист”,35000);
   managerboss(“Айдар”,“Вицеөпрезидент“,“Lexus”,50000.0,5000,1000);
   worker.show_employee();
   boss.show_manager();
}

Базалық кластың элементтерінің ішінде public, private және protected (жалпы, дербес және қорғалған) ретінде сипатталған элементтер кездеседі. Туынды класта базылық кластың жалпы элементтерін бірден қолдануына болады. Базалық кластың дербес элементтері туынды класта базалық кластың интерфейс функциялары арқылы ғана қолданыла алады Яғни ондай элементтерді туынды класта тікелей қолдана алмаймыз. Базалық кластың қорғалған элементтері аралық мәнді қабылдайды. Егер элемент қорғалған болса, ондатуынды кластың элементтері оларды жалпы элементтер сияқты қолдана алады.Программаның басқа бөлігіне қорғалған элементтер дербес болып есептелінеді. Қорғалған элементтер интерфейс функцияларын қолданады. Келесі анықтамада book класында title, author және pages элементтері үшін protected қызметші сөзі қолданылған,онда туынды класс осы элементтерге нүкте операциясын қолдана алады:

class book

{
public:
   book(char*,char*,int);
   voidshow_book(void);
protected:
   chartitle[64];
   charauthor[64];
   intpages;
};

Әрі қарай программада book класына келесі элементтерді қосатын library_card класын құру қажет болсын:

charcatalog[64];
int checked_out; // 1, егер тексерілсе, әйтпесе О

Программада мұрагерлік жағдайын қолданып library _card класын book класының көмегімен құрастырамыз:

class library_card : public book

{
public:
   library_card(char*,char*,int,char*,int);
   voidshow_card(void);
private:
   charcatalog[64];
   intchecked_out;
};

Төиендгі программа BOOKCARD.CPP library_card класын book клacынан туынды класс ретінде шығарып аламыз:

#include

#include

class book

{
public:
   book(char*,char*,int);
   voidshow_book(void);
private:
   chartitle[64];
   charauthor[64];
   intpages;
};

book::book(char •title, char *author, int pages)

{
   strcpy(book::title,title);
   strcpy(book::author,author);
   book::pages=pages;
}

void book::show_book(void)

{
   cout<<“Название:“<   cout<<“Автор:“<   cout<<“Страниц:“<
}

class library_card : public book

{
public:
   library_card(char*,char*,int,char*,int);
   voidshow_card(void);
private:
   charcatalog[64];
   intchecked_out;
};

library_card::library_card(char *title, char *author, int pages, char *catalog, int checked_out) : book(title, author, pages)

{
   strcpy(library_card::catalog,catalog);
   library_card::checked_out=checked_out;
}

void 1ibrary_card::show_card(void)

{
   show_book();
   cout<<“Каталог:“<   if(checked_out)cout<<“Статус:тексерілді”<   elsecout<<“Статус:бос”<}

void main(void)

{
   library_card card(“C++ программалауды үйрену”, “Jamsa”, 272, “101СРР”, 1);
   card.show_card();
}

2. Қорғалған элементтер

Базалық кластардың сипаттамаларын берген уақытта public, private және protected қызметші сөздері арқылы жарияланған элементтерді кездестіреміз. Біз білетініміздей, туынды класта базалық кластың жалпы элементтерін тікелей қолдануға болады, ал бірақ базалық кластың дербес элементтерін қолдана алмаймыз.Ол үшін туынды класта интерфейстік функциялар қолданылады. Базалық кластың қорғалған элементтері аралық мәнді қабалдайды. Егер элемент қорғалған болса, онда туынды кластың объектілері оларды жалпы элементтер секілді қолдана алады. Ал программаның басқа бөліктері үшін қорғалған элементтер дербес болып қалады. Яғни, программада қорғалған элементтер тек интерфейстік функциялар арқылы ғана қолданылады.

class book

{
public:
   book(char*,char*,int);
   voidshow_book(void);
protected:
   chartitle[64];
   charauthor[64];
   intpages;
};

Мұрагерлік объектіге-бағытталған программалаудың ең негізгі құралдарының бірі.Әртүрлі кластарды құру барысында мұрагерлікті қолдану өте тиімді болып табылады.

Мысалы, computer_screen класы бар болсын:

class computer_screen

{
public:
   computer_screen(char*,long,int,int);
   voidshow_screen(void);
private:
   chartype[32];
   longcolors;
   intx_resolution;
   inty_resolution;
};

Және онымен бірге mother_board класы бар:

class mother_board

{
public:
   mother_board(int,int,int);
   voidshow_mother_board(void);
private:
   intprocessor;
   intspeed;
   intRAM;
};

Осы екі кластың көмегімен жаңа computer класын құрастырамыз:

class computer : public computer_screen, public mother_board

{
public:
   computer(char*,int,float,char*,long,int,int,int,int,int);
   voidshow_computer(void);
private:
   charname[64];
   inthard_disk;
   floatfloppy;
};

Жоғарыда көрсетілгендей, класта оның базалық кластары екі нүктеден кейін жазылады.

class computer : public computer_screen, public mother_board //—> Базалық класс

Төмендегі программада COMPUTER. CPP computer класын базалық кластарды computer_screen және mother_board қолдану арқылы құрады:

#include

#include

class computer_screen

{
public:
   computer_screen(char*,long,int,int);
   voidshow_screen(void);
private:
   chartype[32];
   longcolors;
   intx_resolution;
   inty_resolution;
};

computer_screen::computer_screen(char *type, long colors, int x_res, int y_ree)

{
   strcpy(computer_screen::type,type);
   computer_screen::colors=colors;
   computer_screen::x_resolution=x_res;
   computer_screen::y_resolution=y_res;
}

void computer_screen::show_screen(void)

{
   cout<<"Экрантипі:"<   cout<<"Түстер:"<   cout<<"Мүмкіндігі:"<}

class mother_board

{
public:
   mother_board(int,int,int);
   voidshow_mother_board(void);
private:
   intprocessor;
   intspeed;
   intRAM;
};

mother_board::mother_board(int processor, int speed, int RAM)

{
   mother_board::processor=processor;
   mother_board::speed=speed;
   mother_board::RAM=ram;
}

void mother_board::show_mother_board(void)

{
   cout<<"Процессор:"<
   cout<<"Жиілік:"<   cout<<"ОЗУ:"<}

class computer : public computer_screen, public mother_board

{
public:
   computer(char*,int,float,char*,long,int,int,int,int,int);
   voidshow_computerfvoid);
private:
   charname[64];
   inthard_disk;
   floatfloppy;
};

computer::computer(char *name, int hard_disk, float floppy, char *screen, long colors, int x_res, int y_res, int processor, int speed, int RAM) : computer_screen(screen, colors, x_res, y_res), mother_board(processor, speed, ram)

{
   strcpy(computer::name,name);
   computer::hard_disk=hard_disk;
   computer::floppy=floppy;
}

void computer::show_computer(void)

{
   cout<<"Типі: " << name << endl;
   cout<<"Қатты диск: " << hard_disk << "МВайт" << endl;
   cout<<"Жұмсақ диск: " << floppy << "МВайт" << endl;
   show_mother_board();
   show_screen();
}

void main(void)

{
   computer my_pc("Compaq", 212, 1.44, "SVGA", 16000000, 640, 480, 486, 66, 8);
   my_pc.show_computer();
}
    1. 1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта