Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КІ-12

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Звіт: «Лабораторна робота № 6 Наслідування» Підготував: Ст.гр. КІ-12 Андрощук С.В. Перевірив: Цигилик Л.О. Львів 2008 Мета роботи: Оволодіти основами механізму наслідування. Короткі теоретичні відомості Наслідування (ієрархія "іs a") Наслідування – це механізм, за допомогою якого один клас може одержувати атрибути та функції іншого. Наслідування дозволяє створювати ієрархію класів. При створенні нового класу замість написання цілком нових даних-елементів і функцій-елементів програміст може вказати, що новий клас є спадкоємцем елементів попередньо визначеного базового класу. Новостворений клас буде похідним класом. Кожен похідний клас може бути кандидатом на роль базового класу для майбутніх похідних класів. При одиночному наслідуванні клас породжується одним базовим класом. При множинному наслідуванні похідний клас успадковує властивості декількох базових класів. Нижче наведена основна форма наслідування базового класу: class ім’яПохідногоКласу : доступ ім’яБазовогоКласу { // тіло класу }   Тут доступ – специфікатор доступу, що може приймати одне з трьох значень: publіc, protected, prіvate. Він визначає, яким чином елементи базового класу успадковуються похідним класом. При використанні publіc у похідному класі члени базового класу мають ті ж специфікатори доступу, що й у базовому класі. Специфікатор protected означає, що в похідному класі відкриті члени базового класу стають захищеними, а інші зберігають своє вихідне значення специфікатора доступу. Нарешті, при використанні специфікатора prіvate у похідному класі всі члени базового класу стають закритими. Оскільки похідний клас успадковує елементи базового класу, то при створенні об'єкта похідного класу викликається конструктор базового класу для задання початкових значень елементам базового класу, що містяться в об'єкті похідного класу. У конструкторі похідного класу при явному викликові конструктора базового класу може бути передбачений список ініціалізаторів елементів, у протилежному випадку конструктор похідного класу буде неявно викликати конструктор по замовчуванню базового класу. Якщо конструктор похідного класу відсутній, то конструктор по замовчуванню похідного класу викликає конструктор базового класу. Деструктори викликаються в послідовності зворотній до викликів конструкторів, так що деструктор похідного класу викликається раніше відповідного деструктора базового класу. Нижче наведений синтаксис визначення конструктора похідного класу: ім’яКласу :: ім’яКласу (параметри) : ім’яБазовогоКласу(параметри) { // тіло конструктора }  Текст програми: #include "stdafx.h" #include <iostream.h> #include "Time.h" #include <conio.h> #include <iomanip.h> #include <stdio.h> #include <stdlib.h> #include <string.h> //using namespace std; char p[5]; int main() { Animal *t; Dog *a; Cat *b; card *c; t=(Animal*)malloc(sizeof(Animal)); a=(Dog*)malloc(sizeof(Dog)); b=(Cat*)malloc(sizeof(Cat)); c=(card*)malloc(sizeof(card)); t->weight=15; cout<<"press <<Exit>> to Exit;\nenter <<eat>> or <<wc>>;\nor enter animal to hear the voice\nenter <<help>> to see the list"<<endl<<"to see oznaku enter<<doga>>or<<cota>>"<<endl<<"dog tusue kartu: enter<<card>>"<<endl<<"cat kudae monetu enter<<coins>>"; for(;;){ cin>>p; if(!strcmp(p,"eat")) t->Feed(); else if(!strcmp(p,"wc")) a->DoAnimalStuff(); else if (!strcmp(p,"doga")) { a->oznakad(); c->carddd(); } else if (!strcmp(p,"cota")) b->oznakac(); else if (!strcmp(p,"card")) a->carddd(); else if (!strcmp(p,"coins")) t->coinsddd(); else if(!strcmp(p,"Exit")) break; else if(!strcmp(p,"help")) cout<<"press <<Exit>> to Exit;\nenter <<eat>> or <<wc>>;\nor enter animal to hear the voice\nenter <<help>> to see the list"<<endl<<"to see oznaku enter<<doga>>or<<cota>>"<<endl<<"dog tusue kartu: enter<<card>>"<<endl<<"cat kudae monetu enter<<coins>>"; else{ t->name=p; t->Call(); } } return 0; } #include "stdafx.h" #include <iostream.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <conio.h> //using namespace std; class Animal { public: char *name; int weight; public: Animal() {}; ~Animal() ; void Call(); void Feed(); void DoAnimalStuff(); int coinsddd(); }; void Animal::Call(){ if(strcmp(name,"dog")==0) cout<<" |\\_|\\\n / |\n | 0 0 |\n / |\\\n0_____/\\ gav-gav :)"<<endl; else if(strcmp(name,"cat")==0) cout<<" |\\_/|\n | |\n/ 0 0 \\\n\\ ~o~ /\n \\---/\n ^^^ miav-miav :)"<<endl; else cout<<"no such command"<<endl; } void Animal::Feed(){ cout<<(weight+=5)<<"kg"<<endl; } void Animal::DoAnimalStuff(){ if (weight<=0) cout<<"animal don't want to do it!"<<endl; else weight-=3; cout<<weight<<"kg"<<endl; } class Cat:public Animal { public: char c[10]; void oznakac(); }; enum Suit {clubs, diamonds, hearts, spades}; class card { public : int number; Suit suit; void carddd(); public: card( ) { } void set (int n, Suit s) {suit = s; number = n; } void display (); }; const int jack = 11; const int queen = 12; const int king = 13; const int ace= 14; void card ::display () { if (number >=2 && number <=10) cout<<number; else { switch ( number ) { case jack :cout<<'J';break; case queen:cout<<'Q';break; case king:cout<<'K';break; case ace:cout<<'A';break; } } switch (suit) { case clubs : cout <<static_cast<char>(5); break; case diamonds : cout <<static_cast<char>(4); break; case hearts : cout <<static_cast<char>(3); break; case spades : cout <<static_cast<char>(6); break; } } void card::carddd() { card deck [52]; int j; cout<<endl; for ( j=0; j<52; j++){ int num = (j%13)+2; Suit su = Suit (j/13); deck [ j ].set (num,su); } cout <<"koloda card: \n"; for ( j=0; j<52; j++) { deck[ j ].display (); cout<< " "; if (! ((j+1)%13)) cout <<endl; } srand (time (NULL)); for (j=0; j<52; j++) { int k =rand ()%52; card temp = deck[ j ]; deck [ j ] = deck [ k ]; deck[ k ] = temp; } cout <<"\n peremishna : \n"; for (j=0; j<52; j++) { deck [ j ].display (); cout<< " "; if (!((j+1) %13)) cout<<endl; } } class Time { public: Time (); void printMilitary(); void printStandard(); private: int ar[3]; }; Time::Time() { ar[0]=0; ar[1]=0; ar[2]=0; } void Time::printMilitary() { srand((unsigned) time(NULL)); for(int i=0;i<3; i++) ar[i]=rand()%2; } void Time::printStandard() { for(int i=0;i<3; i++) { if (ar[i]==1) cout<<"reshka"<<endl; else cout<<"orel"<<endl; } } int Animal::coinsddd () { char ch; Time t; while((ch=getch())!='\t') { t.printMilitary(); t.printStandard() ; cout<<"to continue press any key or "<<"to exit press Tab"<<endl; } return 0; } class Dog:public Animal,public card { public: char d[10]; void oznakad(); }; void Dog::oznakad(){ strcpy(d,"kus'uchiy"); cout<<d<<endl;} void Cat::oznakac(){ strcpy(c,"drapuchiy"); cout<<c<<endl;} ВИСНОВОК: Я навчився працювати з наслідуванням класів.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!