- •Лабораторна робота 5 Конструювання ієрархії класів у с#
- •1.1. Завдання
- •2.1. Ієрархія класів в Windows-проектах
- •3.1. Реалізація ієрархії класів в Windows-проектах
- •InitializeComponent();
- •Init();
- •Virtual public void Init()
- •Virtual public void Draw(Graphics g1, Pen p1,
- •Virtual public void Init(double[,] a)
2.1. Ієрархія класів в Windows-проектах
Конструювання ієрархії відносно простих класів з використанням віртуальних функцій надає можливість суттєво економити час і зусилля при програмуванні. Особливо це стає в нагоді, коли проект складається з багатьох близьких, але не тотожних об’єктів. Також це важливо при перспективі подальшого розвинення проекту.
Як приклад, розглянемо наступне завдання:
Створити ієрархію класів для опрацювання двомірних геометричних фігур. Особливість об’єктів така:
фігура складається з декількох однорідних базових елементів, наприклад – відрізків прямих ліній, або відрізків дуг, або кольорових кульок, або силуетів автомашин тощо;
елементи прив’язані до множини базових точок.
координати базових точок прямокутні, подані дійсними числами в міліметрах;
типів фігур може бути багато, і кожен вид характеризується власним видом базового елементу та методом формування множини базових точок. Наприклад, методом формування точок може бути табличне завдання, функціональне завдання, ручна корекція координат у графічному режимі, розрахунки за спеціальними алгоритмами тощо.
проект має забезпечити своє подальше розвинення через додавання видів елементів і методів формування базових точок, а також комбінування цих двох підходів.
при відображенні фігури може бути задано масштаб і зсув по кожній координаті окремо, а також поворот відносно початку власної системи координат.
при відображенні фігури також можуть задаватися атрибути креслення (тип, товщина, колір лінії тощо, а також графічний об’єкт, на поверхні, якого розташовано фігуру.
Прикладами таких фігур можуть бути: ломана лінія, карта зоряного неба, карта автомобільних доріг, різноманітні графіки математичних функцій тощо.
Аналіз такого завдання приводить до таких виводів:
Базовим об’єктом є множина точок. Реалізуємо його класом з назвою Dots1.
Допоміжним об’єктом є точка, для якої реалізовано функцію афінних перетворень координат. Реалізуємо її як структуру з назвою G2p.
Функція ініціалізації об’єктів класу Dots1 є віртуальною.
Функція відображення базових елементів також є віртуальною.
Класи G2p ти Dots1 створюють перший рівень ієрархії, на якому проект абстрагується від зображення складових елементів і методу формування множини точок.
Від класу Dots1 може бути створено класи другого рівня, на якому конкретизуються методи формування множин точок. Наприклад, клас DotsPic, в якому точки задаються зовнішньою таблицею координат, і клас DotBar1_X2SinX, в якому координати точок задаються математичною функцією.
Від класу DotsPic може бути створено класи третього рівня, на якому конкретизуються методи відображення базових елементів. Наприклад, клас Lom1, в якому елементи задаються як відрізки прямих, що зв’язують послідовність точок.
Від класу Lom1 може бути створено класи четвертого рівня, і так далі. Прикладом класу четвертого рівня ієрархії, що будується, може стати клас DotBar2_X2SinX, в котрому поєднується функціональне завдання координат з ломаною лінією, тобто будується лінійний графік функції.
