Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_2_7-2_8 Иерархия классов и виртуальные функ...doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
179.71 Кб
Скачать

2.1. Ієрархія класів в Windows-проектах

Конструювання ієрархії відносно простих класів з використанням віртуальних функцій надає можливість суттєво економити час і зусилля при програмуванні. Особливо це стає в нагоді, коли проект складається з багатьох близьких, але не тотожних об’єктів. Також це важливо при перспективі подальшого розвинення проекту.

Як приклад, розглянемо наступне завдання:

Створити ієрархію класів для опрацювання двомірних геометричних фігур. Особливість об’єктів така:

  • фігура складається з декількох однорідних базових елементів, наприклад – відрізків прямих ліній, або відрізків дуг, або кольорових кульок, або силуетів автомашин тощо;

  • елементи прив’язані до множини базових точок.

  • координати базових точок прямокутні, подані дійсними числами в міліметрах;

  • типів фігур може бути багато, і кожен вид характеризується власним видом базового елементу та методом формування множини базових точок. Наприклад, методом формування точок може бути табличне завдання, функціональне завдання, ручна корекція координат у графічному режимі, розрахунки за спеціальними алгоритмами тощо.

  • проект має забезпечити своє подальше розвинення через додавання видів елементів і методів формування базових точок, а також комбінування цих двох підходів.

  • при відображенні фігури може бути задано масштаб і зсув по кожній координаті окремо, а також поворот відносно початку власної системи координат.

  • при відображенні фігури також можуть задаватися атрибути креслення (тип, товщина, колір лінії тощо, а також графічний об’єкт, на поверхні, якого розташовано фігуру.

Прикладами таких фігур можуть бути: ломана лінія, карта зоряного неба, карта автомобільних доріг, різноманітні графіки математичних функцій тощо.

Аналіз такого завдання приводить до таких виводів:

  1. Базовим об’єктом є множина точок. Реалізуємо його класом з назвою Dots1.

  2. Допоміжним об’єктом є точка, для якої реалізовано функцію афінних перетворень координат. Реалізуємо її як структуру з назвою G2p.

  3. Функція ініціалізації об’єктів класу Dots1 є віртуальною.

  4. Функція відображення базових елементів також є віртуальною.

  5. Класи G2p ти Dots1 створюють перший рівень ієрархії, на якому проект абстрагується від зображення складових елементів і методу формування множини точок.

  6. Від класу Dots1 може бути створено класи другого рівня, на якому конкретизуються методи формування множин точок. Наприклад, клас DotsPic, в якому точки задаються зовнішньою таблицею координат, і клас DotBar1_X2SinX, в якому координати точок задаються математичною функцією.

  7. Від класу DotsPic може бути створено класи третього рівня, на якому конкретизуються методи відображення базових елементів. Наприклад, клас Lom1, в якому елементи задаються як відрізки прямих, що зв’язують послідовність точок.

  8. Від класу Lom1 може бути створено класи четвертого рівня, і так далі. Прикладом класу четвертого рівня ієрархії, що будується, може стати клас DotBar2_X2SinX, в котрому поєднується функціональне завдання координат з ломаною лінією, тобто будується лінійний графік функції.