Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_LAB_Part_2_Obyektno-orientov_progr.DOC
Скачиваний:
11
Добавлен:
03.05.2019
Размер:
418.3 Кб
Скачать

Лабораторна робота №3. Ієрархія об'єктів і групи. Ітератори.

Мета. Одержати практичні навички створення об'єктів-груп і використання методів-ітераторів.

Основні теоретичні відомості.

Група.

Група — це об'єкт, у який включені інші об'єкти. Об'єкти, що входять у групу, називаються елементами групи. Елементи групи, у свою чергу, можуть бути групою.

Приклади груп:

1)Вікно в інтерактивній програмі, що володіє такими елементами, як поля вводу і редагування даних, кнопки, списки вибору, діалогові вікна і т.д. Прикладами таких вікон є об'єкти класів, породжених від абстрактного класу TGroup (TDeskTop, TWindow, TDialog) в ієрархії класів бібліотеки Turbo Vision і об'єкти класів, породжених від TWindowObject в ієрархії класів бібліотеки OWL.

2)Агрегат, що складається з більш дрібних вузлів.

3)Город, що складається з рослин, системи поливу і плану вирощування.

4)Деяка організаційна структура (наприклад, ФАКУЛЬТЕТ, КАФЕДРА, СТУДЕНТСЬКА ГРУПА).

Ми відрізняємо “групу” від “контейнера”. Контейнер використовується для збереження інших даних. Приклади контейнерів: об'єкти класу TCollection бібліотеки Turbo Vision і об'єкти контейнерних класів бібліотеки STL у C++ (масиви, списки, черги).

На відміну від контейнера ми розуміємо групу, як клас, що не тільки зберігає об'єкти інших класів, але і має власні властивості, що не випливають із властивостей його елементів.

Група дає другий вид ієрархії (перший вид — ієрархія класів, побудована на основі успадкування) — ієрархію об'єктів (ієрархію типу ціле/частина), побудовану на основі агрегування.

Реалізувати групу можна декількома способами.

1.Клас “група” містить полючи даних об'єктного типу. Таким чином, об'єкт “група” як дані містить або безпосередньо свої елементи, або покажчики на них

class TWindowDialog: public TGroup

{

protected:

TInputLine input1;

TEdit edit1;

TButton button1;

/*інші члени класу*/

};

Такий спосіб реалізації групи використовується в C++Builder.

2.Група містить член-дане last типу TObject*, що вказує на початок зв'язаного списку об'єктів, включених у групу. У цьому випадку об'єкти повинні мати поле next типу TObject*, що вказує на наступний елемент у списку. Такий спосіб використовується при реалізації груп у Turbo Vision.

3.Створюється зв'язаний список структур типу TItem:

struct TItem

{TObject* item;

TItem* next;};

Поле item указує на об'єкт, включений у групу. Група містить поле last типу TItem *, що вказує на початок зв'язаного списку структур типу TItem.

Якщо необхідний доступ елементів групи до її полів і методів, об'єкт типу TObject повинний мати поле owner типу TGroup*, що вказує на власника цього елемента.

Методи групи.

Є два методи, що необхідні для функціонування групи:

1)void Insert(TObject* p);

Вставляє елемент у групу.

2)void Show();

Дозволяє переглянути групу.

Крім цього група може містити наступні методи:

1) int Empty();

Показує, чи є хоча б один елемент у групі.

2) TObject* Delete(TObject* p);

Видаляє елемент із групи, але зберігає його в пам'яті.

3)void DelDisp(TObject* p);

Видаляє елемент із групи і з пам'яті.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]