Поліморфізм

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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 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:33

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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