Лабораторна робота №5. Тема: Створення класів з використанням існуючих класів. Успадкування. Агрегація

Завдання

Використовуючи розроблений в лабораторній роботі №2 клас, утворити новий клас, в якому або успадкувати старий клас, розширивши/звузивши його можливості, або використати в новому класі члени-дані типу старого класу (контейнеризація). Конкретну умову задачі скласти самостійно, узгодивши її з викладачем. Нижче наведено приклади умов задач для варіанту 1 (успадкування) і для варіанту 2 (контейнеризація).

Варіанти завдань

1. Створити клас: пряма призма, нижня основа якої паралельна координатній площині XOY. Для цього успадкувати клас “трикутник на площині”. Доповнити члени-дані успадкованого класу висотою і відстанню від нижньої основи до площини XOY. Створити конструктори, деструктор.

Визначити операції:

« = » - присвоєння;

«==» - порівняння призм за об’ємами;

«!=» - порівняння призм на співпадання при паралельному переносі;

«<<» - друк інформації про призму (координати всіх вершин).

Визначити функції:

· зсуву призми на заданий вектор;

· знаходження об’єму описаного навколо призми циліндру;

· знаходження периметру призми;

· знаходження площі поверхні призми.

2. Визначити клас: раціональна функція. Члени дані чисельник і знаменник – це об’єкти класу “многочлен степеня n з дійсними коефіцієнтами”.

Створити конструктори і деструктор.

Визначити операції:

«+», «-», «*» -додавання, віднімання і множення раціональних функцій;

«<<» -друк раціональної функції.

Визначити функції:

· піднесення у цілий степінь раціональної функції;

· створення копії раціональної функції;

· знаходження значення раціональної функції в точці;

· знаходження похідної раціональної функції.

Лабораторна робота №6. Тема: Абстрактні класи

Завдання

Реалізувати абстрактний базовий клас з вказаними чисто віртуальними (абстрактними) функціями і чисто віртуальними функціями вводу/виводу. Утворити похідні класи базового класу, в яких здійснити реалізацію всіх чисто віртуальних функцій. Самостійно визначити, які поля необхідні і які з них визначити в базовому класі, а які – в похідних.

Варіанти завдань

1.Створити абстрактний базовий клас Figure з віртуальними методами обчислення площі і периметру. Створити похідні класи: Rectangle (прямокутник), Circle (коло), Trapezium (трапеція) зі своїми функціями для обчислення площі і периметра.

2.Створити абстрактний клас Point (точка). На його основі створити класи ColoredPoint і Line. На основі класу Line створити клас ColoredLine і клас PolyLine (багатокутник). Всі класи повинні мати віртуальні методи установки і отримання значень всіх координат, а також зміни кольору та отримання поточного кольору.

3.Створити абстрактний базовий клас Body (тіло) з віртуальними функціями обчислення площі поверхні і об’єму. Створити похідні класи Parallelepiped (паралелепіпед) і Ball (куля) зі своїми функціями площі поверхні і об’єму.

4.Створити абстрактний базовий клас Currency (валюта) для роботи з грошовими сумами. Визначити віртуальні функції переводу суми в гривні і виводу на екран. Створити похідні класи Dollar (доллар) і Euro (євро) зі своїми функціями переводу в гривні і друку.

5.Створити абстрактний базовий клас Triangle для представлення трикутника з віртуальними функціями обчислення площі і периметру. В якості параметрів класу використати дві сторони трикутника і кут між ними. Створити похідні класи прямокутний трикутник, рівнобедрений трикутник і рівносторонній трикутник зі своїми функціями обчислення площі і периметру.

6.Створити абстрактний клас Worker з полями, які задають прізвище працівника, прізвища керівника і підлеглих і віртуальними методами виведення списку обов'язків та списку підлеглих на екран. На його основі реалізувати класи Manager (керівник проекту), Developer (розробник) і Coder (молодший програміст).

7.Створити абстрактний базовий клас Root (корінь) з віртуальними функціями обчислення коренів і друку результату. Визначити похідні класи Linear (лінійне рівняння) і Square (квадратне рівняння) з власними функціями обчислення коренів і друку.

8.Створити абстрактний базовий клас Function (функція) з віртуальними методами обчислення значення функції в заданій точці x і виводу результату на екран. Визначити похідні класи Ellipse (еліпс) і Hyperbola (гіпербола) з власними функціями обчислення значення і друку.

9.Створити абстрактний базовий клас Pair з віртуальними арифметичними операціями +=, -=, *=. Створити похідні класи Complex (комплексне число) і Rational (раціональний дріб) з власною реалізацією арифметичних операцій.

10.Створити абстрактний базовий клас Triad з віртуальними функціями збільшення на 1 і друку значення. Створити похідні класи Date (поточна дата), Time (поточний час) з власною реалізацією вищенаведених функцій.

11.Створити абстрактний клас Sorting (сортування) з ідентифіка-тором послідовності, віртуальними методами сортування, одержання суми та виведення на екран. На його основі реалізувати класи Choice (метод вибору) і Quick (швидке сортування).

12.Створити базовий клас список з віртуальними функціями добавлення та видалення із списку (push, pop) . Реалізувати на базі списку стек і чергу з власною реалізацією вищенаведених функцій.

13.Створити абстрактний базовий клас Integer (ціле) з віртуальними арифметичними операціями +=, -= , *= і функцією виводу на екран. Створити похідні класи Heximal (шіснадцяткове число) Binary (двійкове число) і перевантажити для них вищевказані функції. Число має бути представлене масивом своїх цифр.

14.Створити базовий клас - працівник з функцію нарахування зарплати і похідні класи - службовець з погодинною оплатою, службовець в штаті і службовець з відсотковою ставкою з власною реалізацією вищенаведеної функції.

15.Створити абстрактний базовий клас Series (прогресія) з віртуальними функціями обчислення вказаного члена прогресії та її суми. Визначити похідні класи Linear (арифметична прогресія) та Exponential (геометрична прогресія) з власною реалізацією вищенаведених функцій.

16.Створити абстрактний базовий клас Norm з віртуальними функціями обчислення норми вектора. Визначити похідні класи Vector2D (вектор на площині) і Vector3D (вектор у просторі) з власною реалізацією вищенаведених функцій. Для Vector2D модуль обчислювати як корінь з суми квадратів, для Vector3D як максимальне з компонентів вектора. Норму для похідних класів обчислювати як квадрат модуля.

17.Описати абстрактний клас Element (елемент логічної схеми), задавши в ньому числовий ідентифікатор, кількість входів, ідентифікатори приєднаних до нього елементів (до 10) і виконавчі значення на входах і виході. На його основі реалізувати класи AND і OR , які можуть мати різну кількість входів і один вихід і реалізують логічне множення додавання відповідно.

18.Створити абстрактний базовий клас Container з віртуальними методами sort() і обробці елементів контейнера norma(). Створити похідні класи Bubble і Choice. Для Bubble метод sort має реалізовувати бульбашкове сортування, а norm обчислювати квадратний корінь з суми елементів. Для Choice метод sort має реалізовувати сортування методом вибору максимального елемента, а norma середнє арифметичне всіх елементів.

19.Створити абстрактний базовий клас Array з віртуальними методами знаходження суми елементів і поелементній обробці елементів масиву foreach(). Створити похідні класи SortArray і XorArray. Для SortArray знаходження суми елементів реалізується як додавання множин, а foreach – сортування. Для XorArray знаходження суми елементів реалізується як побітове виключаючи АБО для елементів масивів, а foreach – нормування елементів масиву.

20.Створити абстрактний базовий клас базовий клас Array з віртуальними методами знаходження суми елементів і поелементній обробці елементів масиву foreach(). Створити похідні класи AndArray і OrArray. Для AndArray знаходження суми елементів реалізується як перетин множин, а foreach – нормування елементів масиву. Для OrArray знаходження суми елементів реалізується як об’єднання множин, а foreach – реалізовує швидке сортування.