Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки, молоді та спорту України
НУ «Львівська політехніка»
Кафедра АСУ
/
Лабораторна робота №3
На тему: «Наслідування класів»
Мета роботи: ознайомитись зі способами та механізмами наслідування класів та навчитись використовувати їх для побудови об’єктно-орієнтованих програм.
Послідовність роботи:
1. Ознайомитись з теоретичним матеріалом наслідування класів
2. Проаналізувати результати роботи програми у наведеному прикладі наслідуванні класів.
3. Для заданого варіанта завдання написати програму з використанням наслідування класів.
4. Оформити звіт про роботу за такою структурою:
Назва роботи
Мета роботи
Послідовність роботи
Індивідуальне завдання
Текст програми
Контрольний приклад та результати роботи програми
Висновки
Індивідуальне завдання:
Створити клас ПАРА ЧИСЕЛ. Визначити конструктор, деструктор, функції доступу до полів, введення – виведення. Створити похідний клас КУТ НА ПЛОЩИНІ з полями: градуси, хвилини. Визначити конструктори за замовчуванням із різним числом параметрів, деструктор, функції доступу до полів, введення – виведення, додавання, віднімання кутів, множення та ділення на ціле число, приведення до діапазону [0, 360]
Текст програми:
#include <iostream>
#include <cmath>
using namespace std;
class numb
{
int a,b;
protected:
numb (int a = 1, int b = 1) { this->a = a; this->b = b; }
~numb () {}
int get_a () { return a; }
int get_b () { return b; }
void set_a (int a) { this->a = a; }
void set_b (int b) { this->b = b; }
};
class angle: public numb
{
public:
angle (int deg = 45, int min = 12) { set_a(deg); set_b(min); }
~angle () {}
int get_deg () { return get_a(); }
int get_min () { return get_b(); }
void set_deg (int deg) { set_a(deg); }
void set_min (int min) { set_b(min); }
void addition (angle b);
void subtraction (angle b);
void multiplication (int b);
void dividing (int b);
void reduction ();
void show_angle ();
};
void main()
{
angle one (90, 16), two (15, 59); one.show_angle ();
one.addition (two); one.show_angle ();
one.subtraction (two); one.show_angle ();
one.multiplication (9); one.show_angle ();
one.dividing (5); one.show_angle ();
one.set_min (999); one.show_angle ();
one.reduction (); one.show_angle ();
system("pause");
}
void angle::addition (angle b)
{
set_deg (get_a () + b.get_a ());
set_min (get_b () + b.get_b ());
if (get_min () > 60)
{
set_min (get_min () - 60);
set_deg (get_deg () + 1);
}
}
void angle::subtraction (angle b)
{
set_deg (get_a () - b.get_a ());
set_min (get_b () - b.get_b ());
if (get_min () < 0)
{
set_min (abs (get_b () + 60));
set_deg (get_deg () - 1);
}
}
void angle::multiplication (int b)
{
set_deg (get_deg () * b);
set_min (get_min () * b);
while (get_min () > 60)
{
set_min (get_min () - 60);
set_deg (get_deg () + 1);
}
}
void angle::dividing (int b)
{
set_deg (get_deg() / b);
set_min (get_min() / b);
}
void angle::reduction ()
{
while (get_min () > 60)
{
set_min (get_min () - 60);
set_deg (get_deg () + 1);
}
while (get_deg () > 360) set_deg (get_deg () - 360);
if (get_min() >= 30) set_deg(get_deg() + 1);
set_min(0);
}
void angle::show_angle ()
{
if (get_min() > 0) cout<<get_deg()<<","<<get_min()<<"\'"<<endl;
else cout<<get_deg()<<endl;
}
/
Висновок:
На даній лабораторній роботі я навчився наслідувати класи та використовувати наслідування для побудови ієрархії класів.