русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Відношення узагальнення


Дата додавання: 2014-10-07; переглядів: 2087.


Відношення узагальнення є звичайним відношенням між більше загальним елементом (батьком або предком) і більше приватним або спеціальним елементом (дочірнім або нащадком). Дане відношення може використовуватися для подання взаємозв'язків між пакетами, класами, варіантами використання й інших елементів мови UML.

Стосовно до діаграми класів дане відношення описує ієрархічна будова класів і спадкування їхніх властивостей і поводження. При цьому передбачається, що клас-нащадок має всі властивості й поводженням класу-предка, а також має свої власні властивості й поводження, які відсутні в класу-предка. На діаграмах відношення узагальнення позначається суцільною лінією із трикутною стрілкою на одному з кінців. Стрілка вказує на більше загальний клас ( клас-предок або суперклас), а її відсутність - на більше спеціальний клас ( клас-нащадок або підклас).

Як правило, на діаграмі може вказуватися кілька ліній для одного відношення узагальнення. У цьому випадку більше загальний клас розбивається на підкласи одним відношенням Узагальнення. Наприклад, клас Геометрична_фігура_на_площині (курсив позначає абстрактний клас) може виступати як суперклас для підкласів, що відповідають конкретним геометричним фігурам, таким як, Прямокутник, Окружність, Еліпс і ін. Даний факт може бути представлений графічно у формі діаграми класів наступного виду (мал. 5.13).

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

Це позначення за формою відповідає графові спеціального виду, що розглядався в главі 2, а саме - ієрархічному дереву. У цьому випадку клас-предок є коренем цього дерева, а класи-нащадки - його листами. Відмінність полягає в можливості вказівки на діаграмі класів потенційної можливості наявності інших класів-нащадків, які не включені в позначення представлених на діаграмі класів.

Поруч зі стрілкою узагальнення може розміщатися рядок тексту, що вказує на деякі додаткові властивості цього відношення. Даний текст буде ставитися до всіх ліній узагальнення, які йдуть до класів-нащадкам. Інакше кажучи, відзначене властивість стосується всіх підкласів даного відношення. При цьому текст варто розглядати як обмеження, і тоді він записується у фігурних дужках.

Як обмеження можуть бути використані наступні ключові слова мови UML:

  • {complete} - означає, що в даному відношенні узагальнення специфіковані всі класи-нащадки, і інших класів-нащадків у даного класу-предка бути не може. Приклад - клас Клієнт_банку є предком для двох класів: Фізичне_особа й Компанія, і інших класів-нащадків він не має. На відповідній діаграмі класів це можна вказати явно, записавши поруч із лінією узагальнення даний рядок-обмеження;
  • {disjoint} - означає, що класи-нащадки не можуть містити об'єктів, що одночасно є екземплярами двох або більше класів. У наведеному вище прикладі ця умова також виконується, оскільки передбачається, що ніяка конкретна фізична особа не може бути одночасно й конкретною компанією. У цьому випадку поруч із лінією узагальнення можна записати даний рядок-обмеження;
  • {incomplete} - означає випадок, протилежний першому. А саме, передбачається, що на діаграмі зазначені не всі класи-нащадки. Надалі можливо заповнити їхній перелік не змінюючи вже побудовану діаграму. Приклад - діаграма класу "Автомобіль", для якої вказівка всіх без винятку моделей автомобілів порівнянно зі створенням відповідного каталогу. З іншого боку, для окремого завдання, такий як розробка системи продажу автомобілів конкретних моделей, у цьому немає необхідності. Але вказати неповноту структури класів-нащадків все-таки треба;
  • {overlapping} - означає, що окремі екземпляри класів-нащадків можуть належати одночасно декільком класам. Приклад - клас "Багатокутник" є класом-предком для класу "Прямокутник" і класу "Ромб". Однак існує окремий клас "Квадрат", екземпляри якого одночасно є об'єктами перших двох класів. Цілком природно таку ситуацію вказати явно за допомогою даною рядка-обмеження.

З урахуванням можливості використання рядків-обмежень діаграма класів (мал. 5.14) може бути зображена без втрати інформації.

Щоб проілюструвати особливості використання відносини узагальнення, перетворимо один з розглянутих раніше прикладів зображення класів у графічну нотацію мови UML. Як такий приклад розглянемо ієрархію вкладеності класів для абстрактного класу "Автомобіль". Як неважко помітити, відношення між окремими класами на цих малюнках є саме відношення узагальнення, що у мові UML має спеціальне графічне позначення. З обліком цієї графічної нотації, фрагмент семантичної мережі для подання ієрархії класу "Автомобіль" може бути представлений у вигляді наступної діаграми класів.

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

Як вправа для закріплення розглянутого матеріалу можна спробувати побудувати діаграми класів або хоча б їхні фрагменти для бібліотек стандартних класів MFC (Microsoft) і VCL (Borland/Inprise) з використанням графічної нотації мови UML. Можна припустити, що в недалекому майбутньому довідкові посібника з відповідних середовищ програмування будуть містити саме такі діаграми класів, а можливо, і деякі інші.


 

Лекція №9

Тема: Проектування динамічних аспектів програмних продуктів. Діаграми дій та діяльності, станів.

Мета: Навчитися виконувати проектування динамічних аспектів програмних продуктів.

Перелік питань, що розглядаються на лекції:

1. Діяльність, дія, діаграма діяльності, доріжка та траєкторія об’єкта.

2. Діаграма станів.

 


<== попередня лекція | наступна лекція ==>
Відношення композиції | Діяльність, дія, діаграма діяльності, доріжка об’єкта.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн