Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування інформаційних систем.doc
Скачиваний:
95
Добавлен:
21.09.2019
Размер:
28.77 Mб
Скачать

19.1. Клас

Клас (class) у мові UML служить для позначення множини об'єктів, які володіють однаковою структурою, поведінкою і відношеннями з об'єктами інших класів. Графічно клас зображається у вигляді прямокутника, який додатково може бути розділений горизонтальними лініями на розділи або секції (рис. 19.1). У цих секціях можуть вказуватися ім'я класу, атрибути (змінні) і операції (методи).

Рис. 19.1. Графічне зображення класу на діаграмі класів

Обов'язковим елементом позначення класу є його ім'я. На початкових етапах розроблення діаграми окремі класи можуть позначатися простим прямокутником з вказівкою тільки імені відповідного класу (рис. 19.1, а). У міру опрацьовування окремих компонентів, діаграми опису класів доповнюються атрибутами (рис. 19.1, б) і операціями (рис. 19.1, в).

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

Навіть якщо секція атрибутів і операцій є порожньою, в позначенні класу вона виділяється горизонтальною лінією, щоб відразу відрізнити клас від інших елементів мови UML. Приклади графічного зображення класів на діаграмі класів приведені на рис. 19.2. У першому випадку для класу "Прямокутник" (рис. 19.2, а) вказані тільки його атрибути – крапки на координатній площині, які визначають його розташування. Для класу "Вікно" (рис. 19.2, б) вказані тільки його операції, секція атрибутів залишена порожньою. Для класу "Рахунок" (рис. 194.2, в) додатково зображена четверта секція, в якій вказано виключення – відмову від опрацювання простроченої кредитної картки.

Рис.19.2. Приклади графічного зображення класів на діаграмі

19.1.1. Ім'я класу

Ім'я класу має бути унікальним у межах пакету, який описується деякою сукупністю діаграм класів (можливо, однією діаграмою). Воно вказується в першій верхній секції прямокутника. На додаток до загального правила найменування елементів мови UML, ім'я класу записується по центру секції імені напівжирним шрифтом і повинно починатися із заголовної букви. Рекомендується як імена класів використовувати іменники, записані з практичних міркуваннях без пропусків. Необхідно пам'ятати, що саме імена класів утворюють словник предметної області під час ООАП.

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

Прикладами імен класів можуть бути такі іменники, як "Співробітник", "Компанія", "Керівник", "Клієнт", "Продавець", "Менеджер", "Офіс" і багато інших, що мають безпосереднє відношення до модельованої предметної області і функціонального призначення проектованої системи.

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

Примітка

У деяких випадках необхідно явно вказати, до якого пакету відноситься той або інший клас. Для цієї мети використовується спеціальний символ роздільник – подвійна двокрапка "::". Синтаксис рядка імені класу в цьому випадку буде наступний <Ім’я_пакету>::<Ім’я_класу>. Іншими словами, перед ім'ям класу має бути явно вказане ім'я пакету, до якого його слід віднести. Наприклад, якщо визначений пакет з ім'ям "Банк", то клас "Рахунок" в цьому банку може бути записаний у вигляді: "Банк::Рахунок".