Міністерство освіти і науки України
Національний університет „ Львівська політехніка “
Кафедра ІСМ
Звіт
про виконання лабораторної роботи № 5
з курсу „Технології проектування програмних систем”
на тему: «Наслідування класів»
Мета роботи: вивчення способів та механізмів наслідування класів та їх використання для побудови програм.
Порядок роботи
1. Ознайомитися з теоретичним матеріалом про наслідування класів у Borland C++.
2. Проаналізувати результати роботи фрагментів програм у приведених прикладах наслідування класів.
3. Оголосити базовий клас з необхідними полями, конструкторами, деструктором, методами. Оголосити похідний клас.
Програма та результати її виконання
#include <vcl.h>
#include <iostream.h>
#include <conio.h> //Для функції gotoxy();
class point {
protected:
int x, y; // Координати символа.
public:
point(int xi = 0, int yi = 0); // Конструктор.
int& givex(void);
int& givey(void);
void show(void);
void move(int xn = 0, int yn = 0);
private:
void hide();
};
point::point (int xi, int yi)
{ x = xi; y = yi; } //
int& point::givex(void) { return x; } // Доступ до х.
int& point::givey(void) { return y; } // Доступ до у.
// Зобразити символ на екрані.
void point::show(void)
{ gotoxy(x,y); cout << "*"; }
// Забрати з екрану зображення символа.
void point::hide(void)
{ gotoxy(x,y); cout << " "; }
// Перемістити символ в нове місце экрана.
void point::move (int xn, int yn)
{ hide();
x = xn; y = yn;
show(); }
class star: public point
{
protected:
int rad; // Довжина променів зірки.
int vis; // Видимість зірки на ерані
public:
// Конструктор класу STAR:
star (int xi, int yi, int ri): point(xi,yi)
{ vis = 0; rad = ri; }
~star() // Деструктор класу STAR.
{ hide(); // Забрати з екрану зображення зірки.
}
void show(); // Зобразити зірку на екрані дисплея.
void hide(); // Забрати з екрану зображення зірки
// Перемістити зображення:
void move(int xn, int yn)
{ hide(); // Забрати з екрану старе зображення.
// Змінити координати центру зірки:
x = xn;
y = yn;
show(); // Вивести зображення в новому місці.
}
// Змінити розмір зображення плями:
void vary(float dr)
{ float a;
hide(); // Забрати з екрану старе зображення.
// Вирахувати новий радіус:
a = dr * rad;
if (a <= 0) rad = 0; else rad = (int)a;
show(); // Зобразити зірку на екрані.
}
int& giver(void) // Доступ до довжин променів.
{ return rad; }
};
void star::show() // Зобразити зірку на екрані дисплея.
{ int i;
// Якщо зірка не зображена на екрані:
if (vis == 0)
{ // Зобразити зірку:
gotoxy(x,y); cout << "*";
for (int i=1;i<=rad;i++)
{
gotoxy(x+i,y); cout << "*";
gotoxy(x-i,y); cout << "*";
gotoxy(x,y+i); cout << "*";
gotoxy(x,y-i); cout << "*"; }
for (i=-rad;i<=rad;i++)
{
gotoxy(x+i,y+i); cout << "*";
gotoxy(x-i,y+i); cout << "*";
}
vis = 1;
}
}
void star::hide() // Забрати з екрану зображення зірки
{ int i;
if (vis == 0) // нема що забирати.
return;
// Стерти з екрану зображення:
gotoxy(x,y); cout << " ";
for (int i=1;i<=rad;i++)
{
gotoxy(x+i,y); cout << " ";
gotoxy(x-i,y); cout << " ";
gotoxy(x,y+i); cout << " ";
gotoxy(x,y-i); cout << " "; }
for (i=-rad;i<=rad;i++)
{gotoxy(x+i,y+i); cout << " ";
gotoxy(x-i,y+i); cout << " ";
}
vis = 0;
}
//---------------------------------------------------------------------------
int main()
{ star A(5,7,4); // Створюється невидима зірка A.
star D(38,12,3); // Створюється невидима зірка D.
A.show(); // Зобразити зірку A на екрані.
getch(); // Чекати на натискання клавіші.
D.show(); // Зобразити зірку D на екрані.
getch();
A.move(10,15); // Перемістити зірку A.
getch();
D.vary(3); // Змінити розмір променів зірки D.
getch () ;
//---------------------------------------------------------------------------
Рис.1. Вигляд вікна програми після виконання
Висновки
Під час виконання лабораторної роботи я ознайомився зі способами перевантаження операцій та їх використанням для роботи з класами та об’єктами.