Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Реалізація залежностей

Залежності в мові С++ реалізуються за допомогою покажчиків чи за допомогою спеціальних об’єктів. Наприклад, залежність «багато-до-одного» між класами Item та Group реалізована через покажчики:

class Item{

public:

virtual void cut ();

virtual void move (Length deltax, Length deltay)=0;

virtual Boolean pick (Length px; Length py)=0;

virtual void ungroup ()=0;

private:

Group* group;

friend group::add_item (Item*);

friend group::remove_item (Item*);

public:

Group* get_group () {return group;};

};

class group: public Item

{

public:

void cut ();

void move (Length deltax, Length deltay);

Boolean pick (Length px; Length py)=0;

void ungroup (){ };

private:

ItemSet* іtems;

public:

void add_item (Item*);

void remove_item (Item*);

ItemSet* get_іtems() {return items;}

};

Щоразу, коли до залежності додається (чи з неї вилучається) зв’язок, два показники повинні бути змінені:

void Group::add_item (Item*item);

{

item->group = this;

items->add (item);

}

void Group::remove_item (Item*item);

{

item->group =0;

items->remove (item);

}

Методи Group:: add … item та Group:: remove … item можуть змінювати приватні (private) атрибути класу Item, хоч вони визначені у його підкласі Group, оскільки вони визначені як дружні (friends)для класу Item.

У розглянутому прикладі опущені перевірки:

1) чи не є графічний об’єкт, який влючається в групу, членом цієї групи (у цьому разі його не слід ще раз включати в групу);

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

Іноді зв’язані між собою (залежні) об’єкти включають у так звані колективні класи. Як приклад такого класу розглянемо клас ItemSet (набір об’єктів):

Class ItemSet

{

public:

ItemSet(); //скласти порожній набір об’єктів

~ItemSet(); //знищити набір об’єктів

void add(Item*); //включити об’єкт у набір

void remove(Item*); //виключити об’єкт з набору

Boolean includes(Item*); //перевірити наявність об’єкта у наборі

Int size(Item*); //визначити кількість об’єктів у наборі

}

Колективні класи часто використовуються в бібліотеках класів. При роботі з колективними класами зручно використовувати ітератори, тобто об’єкти, за допомогою яких можна «розглянути» колектив.

Залежності між класами можна реалізувати і за допомогою спеціальних класів (кожний об’єкт такого класу описує зв’язок між об’єктами відповідних класів). У цьому разі атрибути класу відповідають атрибутам описуваної ним залежності.




Переглядів: 246

<== попередня сторінка | наступна сторінка ==>
Class Item | Шаблони, шаблони-класи

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.006 сек.