МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Реалізація залежностейЗалежності в мові С++ реалізуються за допомогою покажчиків чи за допомогою спеціальних об’єктів. Наприклад, залежність «багато-до-одного» між класами 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*); //визначити кількість об’єктів у наборі } Колективні класи часто використовуються в бібліотеках класів. При роботі з колективними класами зручно використовувати ітератори, тобто об’єкти, за допомогою яких можна «розглянути» колектив. Залежності між класами можна реалізувати і за допомогою спеціальних класів (кожний об’єкт такого класу описує зв’язок між об’єктами відповідних класів). У цьому разі атрибути класу відповідають атрибутам описуваної ним залежності.
|
||||||||
|