Поліморфізм

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

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

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

Рік:
2010
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 8 з дисципліни: Програмування ч. 2 (ООП) на тему: “Поліморфізм” Тема роботи: Поліморфізм Мета роботи: познайомитися з поліморфізмом і віртуальними функціями. Завдання: Базовий клас: class Resource { protected: int id; bool isUsed; char* title; char* author; public: Resource(int number) ; virtual ~ Resource() ; virtual bool TakeResource (); virtual bool GiveBackResource(); virtual void PrintInfo(); virtual bool Status() {return isUsed;} }; Resource() – конструктор базового класу. Ініціалізує змінну id та isUsed. Виділяє пам’ять під title та author. ~ Resource() – деструктор базового класу. TakeResource() – встановлює змінну isUsed=1 (виводить на екран повідомлення). GiveBackResource() – встановлює змінну isUsed=0 (виводить на екран повідомлення). PrintInfo () – виводить інформацію про ресурс. Status() – повертає стан ресурсу. Похідний клас Book. Атрибути: int pages; int year; Похідний клас CD. Атрибути: int cdType; Визначити конструктор та деструктор (!вивільняти всі ресурси!) класу. В основній програмі створити декілька ресурсів та продемонструвати процес їхнього використання. Створити вказівники на базовий клас і виділити пам’ять під об’єкти похідного класу. Текст програми: //------------------------------- main.cpp ---------------------------------- #include "Resource.h" #include <stdio.h> void main(void) { //Масив вказівників на базові об'єкти Resource *res[4]; //Кожному вказівнику виділяється пам'ять під об'экти похыдного класу res[0]=new cd(342145,"Rammstein","Sonne",5); res[1]=new cd(343495,"Rock'n'Roll","blablabla",3); res[2]=new Book(124366,"Taras Schewchenko","Kobzar",1984,543); res[3]=new Book(731284,"Charlse Dickens","Ostriw Skarbiw",1994,256); //Перший диск і друга книжка використовуються res[0]->TakeResource(); res[3]->TakeResource(); cout << endl; //Вивід інформації про ресурси for(int i=0;i<4;i++) { if(res[i]!=NULL) res[i]->PrintInfo(); cout<<endl; } //Вивільнення динамічно виділеної пам'яті for(i=0;i<4;i++) if(res[i]!=NULL) delete res[i]; getchar(); } //------------------------------- Resource.h -------------------------------- #include <iostream.h> //------------------- Клас ресурс class Resource { protected: int id; bool isUsed; char* title; char* author; public: //Конструктор Resource(int number) ; //Деструктор virtual ~ Resource() ; //Ресурс використовується virtual bool TakeResource (); //Ресурс не використовується virtual bool GiveBackResource(); //Вивід інформації про ресурс virtual void PrintInfo(); //Інформація чи використовується ресурс virtual bool Status(){return isUsed;} }; //---------------- Похідний клас cd-диск class cd:public Resource { private: int cdType; public: //Конструктор cd(int number,char *aut, char *title, int cT); //Деструктор ~cd(); //Вивід інформації про ресурс virtual void PrintInfo(); }; //---------------- Похідний клас книжка class Book:public Resource { private: int year; int pages; public: //Конструктор Book(int number,char *a, char *t, int y, int p); //Деструктор ~Book(); //Вивід інформації про ресурс virtual void PrintInfo(); }; //------------------------------- Resource.cpp ------------------------------ #include "Resource.h" //Конструктор Resource::Resource(int number) { isUsed = 0; id = number; } //Деструктор Resource::~Resource() { } //Ресурс використовується bool Resource::TakeResource() { isUsed = 1; cout << "Resource " << id << " is used." << endl; return isUsed; } //Ресурс не використовується bool Resource::GiveBackResource() { isUsed = 0; cout << "Resource " << id << " is not used." << endl; return isUsed; } //Вивід інформації про ресурс void Resource::PrintInfo() { cout << "id: " << id << endl; cout << "author: " << author << endl; cout << "title: " << title << endl; } //------------------------------- Book.cpp ---------------------------------- #include "Resource.h" //Конструктор Book::Book(int number,char *a, char *t, int y, int p):Resource(number) { year = y; pages = p; author = a; title = t; } //Вивід інформації про ресурс void Book::PrintInfo() { cout << "id: " << id << endl; cout << "author: " << author << endl; cout << "title: " << title << endl; cout << "year: " << year << endl; cout << "pages: " << pages << endl; cout << "isUsed: " << isUsed << endl; } //Деструктор Book::~Book() { cout << "BookDestructor" << endl; } //------------------------------- cd.cpp ------------------------------------ #include "Resource.h" //Конструктор cd::cd(int number,char *a, char *t, int cT):Resource(number) { author = a; title = t; cdType = cT; } //Вивід інформації про ресурс void cd::PrintInfo() { cout << "id: " << id << endl; cout << "author: " << author << endl; cout << "title: " << title << endl; cout << "cdType: " << cdType << endl; cout << "isUsed: " << isUsed << endl; } //Деструктор cd::~cd() { cout << "cdDestructor" << endl; } Результати роботи програми:  Висновок: На цій лабораторній роботі я ознайомився з наслідуванням. Створив базовий клас ресурс і два похідні класи книжка і cd-диск.
Антиботан аватар за замовчуванням

19.11.2013 20:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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