Розробка класу обробки геометричних фігур та їх даних за допомогою динамічних масивів даних стандартної бібліотеки шаблонів STL – послідовні контейнери deque
11

Для оператору «<<» перевантажена функція дозволяє записувати екземпляри класу у файл - friend ostream &operator<<( ostream &output, Figure &f ); У середині функції у файл через знак табуляції «\t» записуються значення полів класу. Функція повертає екземпляр потоку.

Для оператору «>>» перевантажена функція дозволяє зчитувати з однієї строки екземпляр класу - friend string &operator>>( string &line, Figure &f ); У середині функції за допомогою substr парсимо строку по черзі, використовуючи символ табуляції(\t) як роздільник. Отримані значення присвоюємо екземпляру класу, який був переданий як аргумент функції.

Функція-член класу Figure - show() виконує форматований вивід даних на екран, якщо параметр класу visible встановлений в true. Інакше замість даних о фігурі на екран буде виведено «invisible».

За допомогою функції-члену input() виконується наповнення класу даними, які будуть введені з клавіатури. При чому запис дробової частини дійсних чисел буде записуватися при розділенні цілої і дробової частини числа як символом «.», так символом «,», за допомогою фунції char* dotsToCommasChar(char *c, int N), яка замінює усі точки в рядку на коми та повертає цей рядок.

Функція-член класу Figurehide() ставить параметр visible у значення false, який використовується при виводі фігури на екран.

Функція-член класу FigureunHide() ставить параметр visible у значення true.

Функція-член класу FigurerotateBy(float _angle) збільшує параметр angle фігури на передане значення _angle.

Функція-член класу FiguremoveBy(float x, float y) збільшує параметри centerX та centerY на передані значення x та y.

Функції-члени класу Figure: float getXCenter(),float getYCenter(), float getAngle(), float getScaleFactor() відповідно повертають значення полів centerX, centerY, angle, scaleFactor.

Для зручного використання класів Figure, Circle та Ellipse об’являємо клас Programm. У ролі захищеного члена класу виступає послідовний контейнер бібліотеки STLdeque, який зберігає показники на елементи класу Figure. За допомогою директиви typedef визначаємо синонім для типу колекції - typedef deque<Figure*> MyCollection. Та створюємо показник на екземпляр цієї коллекції - MyCollection* collection;