Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Полиморфизм. Амалдарды Қайта аныҚтау
ЖҰ МЫС МАҚ САТЫ: Ерте байланысу жә не кеш байланысу механизмдерімен таныстыру, амалдарды қ айта анық тауды жү зеге асыра білуді ү йрету. ПРАКТИКАЛЫҚ САБАҚ ЖОСПАРЫ: 1. Негізгі теориялық мә ліметтерді қ айталау. 2. Шығ арылғ ан мысал есепті талқ ылау. 3. Тапсырма ретінде берілген есептерді шығ ару. 4. Ө з бетімен орындауғ а ү й тапсырмасын беру. 5. Сабақ ты қ орытындылау. Блиц-тест. БАҚ ЫЛАУ СҰ РАҚ ТАРЫ: 1. Полиморфизм дегеніміз не? 2. Полиморфизмнің тү рлері қ андай? 3. Амалды қ айта анық таудың мақ саты неде? 4. Қ андай амалдар достас функциялар, ал қ андай амалдар мү шелер болуы қ ажет? 5. Қ айта анық талғ ан амалдардың нә тижені қ айтару ә дістері. 6. Қ андай амалдарды қ айта анық тауғ а болмайды? ГЛОССАРИЙ Полиморфизм – иерархияның ә ртү рлі дең гейіндегі кластар ү шін қ андай да бір аты бойынша бір ә дістің ә ртү рлі аспектілерін анық тау мү мкіндігін қ амтамасыз етеді. Жай полиморфизм – ерте байланысу механизміне негізделеді. Кү рделі полиморфизм – кеш байланысу механизміне негізделеді. Амалдарды қ айта анық тау – бастапқ ы мә ндерінің біреуін де жоғ алтпай, жаң а класс объектілері ү шін ұ қ сас мағ ыналы амалдарды енгізу.
1. Тө менде келтірілген мысалды талқ ылаң ыз: Есептің қ ойылымы: Нақ ты сан класынан туынды бү тін сан класын сипаттау жә не амалдар орындау. Программасы: # include < stdio.h> #include < stdlib.h> #include < iostream.h> #include < string.h> #include < conio.h> 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< < ” “< < num< < endl; } 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”< < endl; } Treal(char*st); ~Treal(){delete real; cout< < ”destr classa Treal”< < endl; } Int dkolc(); }; Treal:: Treal(char*st): Tlong() {cout< < ”konstr classa Treal”< < endl; setnumv(st); } 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: ”< < real< < endl; Cout< < ”celay chast: ”< < end; Tlong:: print(); Cout< < ”drobnay chast: ”< < drob< < endl; } Void showv(Tlong & par){par.print(); } Char s[25]; Void main() {clrscr(); Cout< < ”vvedite chislo ccccc, dddddd”< < endl; cin> > s; Treal a(s); Cout< < ”1 prostoi obekt proizvodnogo classa”< < endl; Cout< < ”yvnii vizov pereopredel-go metoda”< < endl; 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”< < endl; Cout< < ”vizov pereopredel metoda iz nasl metoda Showl()”< < endl; a.showl(); getch(); Cout< < ”4 vizov obekta proiz classa po ukaz na bazovii”< < endl; Tlong *pb=new Treal(“234567.34765”); Pb-> print(); // oshibka! Delete pb; Getch(); Cout< < ”5 peredacha parameter-peremennoi”< < endl; Showv(a); Getch(); }
2. Орындауғ а арналғ ан тапсырмалар: 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
|