Дістемелік кешен


Төменде келтірілген мысалдарды талқылаңыз



бет51/112
Дата22.12.2021
өлшемі0,85 Mb.
#127596
түріПрограмма
1   ...   47   48   49   50   51   52   53   54   ...   112
Байланысты:
ооп лекция

Төменде келтірілген мысалдарды талқылаңыз:

1-мысал. Public мұрагерлік түрімен туынды класты сипаттау.

#include

#include

class A

{private: //кластың қорғалған (жабық) компоненттері

int numza;

public: //кластың жалпы (ашық) компонеттері

int питоа;

void print (void)

{соut«"А қорғалған өрісі= "«numza«endl;

cout« "А ашық өрісі = "«numoa«endl;}

А() { numza=20; питоа=50;}

};

class В: public А /*ашық мұрагерлік – В класына А класының барлық жалпы компоненттері қол жетімді*/

{ private: int numzb;

public:

void print (void)

{соut«" В қорғалған өрісі = "«numzb«endl;

соut«" A жалпы өрісі =";

cout<

B(){numzb=100;}

};

void main()

{ clrscr();

A aa; В bb;

cout « "жұмыс нәтижесі: "«endl;

aa.print();

bb.print();

getch(); }
2-мысал. Private мұрагерлік түрімен туынды класты сипаттау.

#include

#include

class A

{private: int numza;

protected: int numpra;

public:

int numoa;

void print(void)

{ cout «" A класының жабық өрісі = "«numza«endl;

соut«"A класының қорғалған өрісі= "«numpra«endl;

cout« " A класының ашық өрісі = "«numoa«endl;}

A(){numza=20; numpra=30; numoa=50;}};

class B: private A // кластың барлық компоненттері В класында қол жетімсіз

{private: int numzb;

protected:

A::numpra; /*А класының қорғалған өрісі В класында қол жетімді болып хабарланады*/

public:

А::питоа; /* А класының жалпы өрісі В класында қол жетімді болып хабарланады*/

void print(void)

{соut«"В класының жабық өрісі = "«numzb«endl;

соut«"В класында қол жетімді А класының ашық өрісі=";

соut<<питоа<

соut«''В класында қол жетімді А класының қорғалған өрісі= ";

cout<

B(){numzb=100;}} :

void main()

{ clrscr();

A aa; В bb;

cout « "жұмыс нәтижесі: "«endl;

aa.print();bb.print();

getch();}

3-мысал. Базалық және туынды кластардағы конструкторлар жұмысы.



#include

#include

class A

{ int a;

public:

int c1;

void print(void) { cout<

A(int v):a(v){c1=10;} //А базалық класының конструкторы

};

class В: public A

{ int b;

public:

void print(void) { cout«b« " "<

B(int va,int vb):A(va),b(vb) {} // В класының конструкторы

};

class С: public В



{ int с;

public:

void print(void) { cout<

C(int va,int vb,int vc):B(va,vb),c(vc){} // С класының конструкторы

};

Void main()

{clrscr();

A aa(10), *pa; // А класының конструкторы шақырылады

В bb(10,100); //А класының, содан соң В класының конструкторы шақырылады

С сс(10,100,1000); //А, В және С кластарының конструкторлары шақырылады



bb.c1=25;

сс.с1=35;

aa.print();

bb.print();

cc.print();

ра=&аа;

pa->print():

pa=&bb;

pa->print();

ра=&сс;

pa->print();

getch();}
2. Орындауға арналған тапсырмалар:

1. Аты-жөнін, телефонын, туған күнін және туған күніне дейінгі күндер санын есептейтін функцияны қосатын «жазба кітапшасы» класы;

2. Дисциплинаны, аудиторияны, басталу уақытын және сабақтың басталуына дейінгі уақытты есептейтін функцияны қосатын «сабақ кестесі» класы;

3. Жолды, құрылған уақытын, ағымдық уақытты және жолдың бар уақытын есептейтін функцияны қосатын «жол» класы;

4. Терезе координаты мен түсін, терезедегі тексті, текст түсін және терезеде тексті өзгерту функциясын қосатын «терезе» класы;

5. Стандартты және экспоненциалды түрдегі комплекстік санды және санның экспоненциалды түрін есептейтін функцияны қосатын «комплексті сан» класы.


3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):

  1. Студент, Оқытушы, Кафедра меңгерушісі кластар иерархиясын құру.

  2. Жұмысшы, Бөлім меңгерушісі, Директор кластар иерархиясын құру.

  3. Жануар, Жыртқыш, Сүтқоректі кластар иерархиясын құру.

БЛИЦ-ТЕСТ

1. Мұрагерліктің неше түрі бар?

a) 4 b) 3 c) 2 d) 1

2. Мұрагерлік түрі protected түрінде анықталып, базалық класста компонент public түрінде сипатталса, туынды класта компонент қандай түрде көрінеді?

a) public b) private c) protected d) мүмкін емес

3. Мұрагерлік түрі public түрінде анықталып, базалық класста компонент protected түрінде сипатталса, туынды класта компонент қандай түрде көрінеді?

a) public b) private c) protected d) мүмкін емес

4. Мұрагерлік түрі private түрінде анықталып, базалық класста компонент protected түрінде сипатталса, туынды класта компонент қандай түрде көрінеді?

a) public b) private c) protected d) мүмкін емес

5. Мұрагерлік түрлері

a) бір класты, екі класты b) жалғызданған, қосарланған

c) жалғызданған, көпше түрдегі d) жалғызданған, көбейтілген
ӘДЕБИЕТТЕР:


  1. Г.С. Иванова и др. ООП: Учебник для вузов, М., Изд-во МГТУ им.Баумана, 2003.- 368 с.

  2. Павловская Т.А. С и С++. Программирование на языке высокого уровня.

  3. Р.Вайнер, Л.Пинсон. С++ ИЗНУТРИ.

  4. Р. Лафоре. Объектно-ориентированное программирование в С++.4-е издание. Питер.2004

  5. Г. Шилдт. Самоучитель C++. - Санкт-Петербург, Изд. BHV, 2004.

  6. А.В. Замулин. Курс лекций: Объектно-ориентированное программирование (С++)

  7. Подбельский В.В., Фомин С.С. Программирование на языке Си: Учебное пособие. – М.: Финансы и статистика, 2004


ПРАКТИКАЛЫҚ ЖҰМЫС №5-6

ПОЛИМОРФИЗМ. АМАЛДАРДЫ ҚАЙТА АНЫҚТАУ

ЖҰМЫС МАҚСАТЫ: Ерте байланысу және кеш байланысу механизмдерімен таныстыру, амалдарды қайта анықтауды жүзеге асыра білуді үйрету.

ПРАКТИКАЛЫҚ САБАҚ ЖОСПАРЫ:


  1. Негізгі теориялық мәліметтерді қайталау.

  2. Шығарылған мысал есепті талқылау.

  3. Тапсырма ретінде берілген есептерді шығару.

  4. Өз бетімен орындауға үй тапсырмасын беру.

  5. Сабақты қорытындылау. Блиц-тест.

БАҚЫЛАУ СҰРАҚТАРЫ:

    1. Полиморфизм дегеніміз не?

    2. Полиморфизмнің түрлері қандай?

    3. Амалды қайта анықтаудың мақсаты неде?

    4. Қандай амалдар достас функциялар, ал қандай амалдар мүшелер болуы қажет?

    5. Қайта анықталған амалдардың нәтижені қайтару әдістері.

    6. Қандай амалдарды қайта анықтауға болмайды?

ГЛОССАРИЙ

Полиморфизм – иерархияның әртүрлі деңгейіндегі кластар үшін қандай да бір аты бойынша бір әдістің әртүрлі аспектілерін анықтау мүмкіндігін қамтамасыз етеді.

Жай полиморфизм – ерте байланысу механизміне негізделеді.

Күрделі полиморфизм – кеш байланысу механизміне негізделеді.

Амалдарды қайта анықтау – бастапқы мәндерінің біреуін де жоғалтпай, жаңа класс объектілері үшін ұқсас мағыналы амалдарды енгізу.


  1. Төменде келтірілген мысалды талқылаңыз:

Есептің қойылымы: Нақты сан класынан туынды бүтін сан класын сипаттау және амалдар орындау.

Программасы:

# include

#include

#include

#include

#include

Typedef unsigned long dlong;

Class Tlong {

Public:dlong num;

Tlong() { cout<< “neiniciiru konstr classa”<< endl;}

Tlong(dlong an) {cout <<”Konstr classa Tolng”<< endl;

Setnum(an); }

~Tlong(){cout<<”destr classa Tlong”<< endl;}

Int Kolc();

Void showl(){print();}

Void print(void);

Void setnum(dlong an) {num=an;}};

Void Tlong::print(){cout<<” “<

Int Tlong::kolc()

{dlong t=num; int k=0;

While(t>0) {k=k+1; t=t/10;}

Return k; }//class 2

Class Treal: public Tlong

{Public:dlong drob;

Char* real;

Void print();

Void setnumv(char*st);

Treal() { real=NULL;

Cout<<”neinicializiru konstr classa”<

Treal(char*st);

~Treal(){delete real; cout<<”destr classa Treal”<

Int dkolc();};

Treal:: Treal(char*st):Tlong()

{cout<<”konstr classa Treal”<

Void Treal:: setnumv(char*st)

{int l; char*ptr, *tremp; l=strlen(st); real=new

Char[l+1];

Temp=new char[l+1];strcpy(rel,st); strcpy(temp,st);

Ptr=strchr(temp,’.’); drob=dlong(atoll(ptr+1)); *ptr=’/0’;

Num=dolg(atoll(temp)); delete temp;}

Int Treal:: dkolc()

{ dlong t=drob; int k=0;

While (t>0) {k=k+1; t=t/10;}

Return k;}

Void Treal:: print()

{cout<<”vesh chislo:”<

Cout<<”celay chast:”<

Cout<<”drobnay chast:”<

Void showv(Tlong &par){par.print();}

Char s[25];

Void main()

{clrscr();

Cout<<”vvedite chislo ccccc,dddddd”<>s;

Treal a(s);

Cout<<”1 prostoi obekt proizvodnogo classa”<

Cout<<”yvnii vizov pereopredel-go metoda”<

a.print();

cout<<”2 vizov obekta proizvodnogo classa po

ukazatelu na proizvodnii class”

Trel *pr=new Treal(“98567.08765”);

Pr->print();

Delete pr;

Getch();


Cout<<”3 neyvnii vizov pereop metoda”<Cout<<”vizov pereopredel metoda iz nasl metoda

Showl()”<< endl;

a.showl();

getch();

Cout<<”4 vizov obekta proiz classa po ukaz na bazovii”<

Tlong *pb=new Treal(“234567.34765”);

Pb->print();// oshibka!

Delete pb;

Getch();


Cout<<”5 peredacha parameter-peremennoi”<Showv(a);

Getch(); }


  1. Орындауға арналған тапсырмалар:

  1. Арифметикалық амалдарды қайта анықтауды қолдана отырып «Полярлы координаталар» класын құру.

  2. «Кафедра» класын құру кезінде полиморфизм принципін қолдану.

  3. Қайта анықталған арифметикалық амалдарды «Таймер» бағдарламасын жүзеге асыру кезінде қолдану.


3. Өз бетімен орындауға арналған тапсырмалар (үй тапсырмасы):

  1. Амалдарды қайта анықтауды матрицаларға, массивтерге, жиындарға арифметикалық амалдар қолдану кезінде қолдану.

  2. Полиморфизм принципіне сүйене отырып «Отбасы» класын құру.

  3. Авиабилет сұраныстарын есепке алу бағдарламасын құру кезінде амалдарды қайта анықтау.

БЛИЦ-ТЕСТ

1. Функцияның қайтаратын мәнінің жоқтығын қандай сөз білдіреді:

a) Main. b) Void. c) Function. d) Procedure.

2. Функция мәнін қайтару инструкциясын таңдаңыз:

a) return b) end c) define d) typedef

3. Қайта анықтауға болмайтын оператор

a) = b) <> c) : d) ;

4. Егер функция-оператор кластың кез келген компоненттеріне қатынауы қажет болса, онда оны қандай спецификатормен сипаттау керек?

a) public b) friend c) fixed d) operator




Достарыңызбен бөлісу:
1   ...   47   48   49   50   51   52   53   54   ...   112




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

    Басты бет