Тема 5. Об'єктно-орієнтоване проектування
Між об'єктно-орієнтованим аналізом і об'єктно-орієнтованим проектуванням спостерігається термінологічна плутаннина. То, що в ООА називається об'єктом в ООП називається класом. То, що в ООА називається екземпляром об'єкта в ООП називається об'єктом.
Таблиця 5.1. Відповідність термінології
|
У процесі об'єктно-орієнтованого проектування вирішуються наступні |
Задачі:
- Вибір класів і визначення взаємозв'язків між ними,
- Визначення механізмів взаємодії об'єктів,
- Вибір місця оголошення класів і об'єктів,
- Розподіл обчислювальних процесів між виконавцями (процесорами) і методи управління процесами.
Об'єктно-орієнтований проект складається з наступних діаграм:
- Діаграма класів,
- Діаграма об'єктів,
- Діаграма модулів,
- Діаграма процесів,
- Діаграма переходів,
- Часова діаграма.
Діаграма класів включає наступні види компонентів:
- Класи,
- Ієрархія успадкування класів,
- Утиліти класів.
Під класами розуміють те, про що говорилось вище. Ієрархія класів розуміється більш ширше. Зокрема розглядається не тільки відношення успадкування, але й цілий ряд інших відношень.
Відношення успадкування в ООП - це відношення виду "являється", в той же час як відношення виду "складається з" описується відношеннями:
А) використання в інтерфейсній частині класу.
Б) використання в реалізації класу.
Друге відношення дозволяє зобразити додаткові відтінки взаємодії класів. Відношення включення описує таку взаємодію класів, при якій екземпляри одного класу включають в себе (зберігають в собі) екземпляри іншого класу. Типовими представниками класів, які призначені для зберігання
Інших класів є списки, дерева, колекції.
Для кожного виду відношень може бути побудована власна діаграма. На діаграмі класів можуть зображатися так звані утиліти класів - загальнодоступні інтерфейсні підпрограми. Відношення між утилітами і класами — таке ж, як і між класами.
Проектування великих систем потребує створення великих діаграм класів, які можуть виявитися важкими для сприйняття. Методом додаткової декомпозиції може бути створення категорій класів, які є наборами класів і категорій класів.
Процес проектування і осмислення класів стає більш оглядовим при використанні категорій.
Між категоріями класів можливе відношення виду "імпортує з".
Графічне зображення діаграми класів несе інформацію про склад класів і відношення між ними, але на відміну від діаграм в ООА діаграми в ООП не містять відомостей про атрибути і методи. Для вказування цих відомостей використовуються шаблони:
- Шаблон класу,
- Шаблон утиліти,
- Шаблон операції.
Шаблони задаються в текстовому або в табличному виді. Шаблон класу має вид: ім'я: ім'я
Документація: текст документації
Видимість: експортований / відособлення / імпортований
Множинність: 0/1/п
Ієрархія:
Суперклас: список імен суперкласів метаклас: ім'я класу
Узагальнені параметри: список параметрів інтерфейс:
Використання: список імен класів
Поля: список використовуваних полів даних
Операції: список використовуваних операцій
Реалізація:
Загальнодоступна:
Поля: список полів даних
Операції: список операцій
Захищена:
Поля: список полів даних операції: список операцій відособлена:
Поля: список полів даних операції: список операцій. Шаблон утиліти класу має вид: ім'я: ім'я утиліти
Документація: текст документації видимість: експортована / відособлена / імпортована узагальнені параметри: список параметрів інтерфейс:
Використання: список імен класів
Поля: список використовуваних полів даних
Операції: список використовуваних операцій
Шаблон операції має вид:
Ім'я: ім'я операції
Документація: текст документації
Категорія: категорія операції (передбачається, що всі операції діляться на категорії
Параметри: список параметрів дія: короткий опис алгоритму.
Класи описують статичну структуру об'єктно-орієнтованого проекту. Однією з складових динамічної структури є об'єкти (екземпляри класів). Об'єкти можуть створюватися і знищуватися, використовувати методи інших об'єктів.
Ім'я об'єкта може бути відсутнім, так як програма може створювати неіменовані об'єкти, наприклад, для запису його в деякий контейнер типу список або колекція.
Зв'язок між об'єктами позначається лінією без напрямку, яка показує, що один об'єкт може передавати повідомлення (викликати операції з) іншому об'єкту. Поруч з лінією можна вказати стрілку з іменем операції, яка викликається.
Інформаційні потоки на діаграмах об'єктів не зображаються. На лінії, яка зв'язує два об'єкти, може бути вказана мітка, що конкретизує вид зв'язку (використання параметру, загальне використання параметру, використання поля, загальне використання поля).
Якщо об'єкт А використовує поле об'єкта В, то мітка Р розміщується ближче до об'єкту А.
На діаграмі об'єктів можна зобразити той факт, що один об'єкт включає в себе набір інших. Для цього включені об'єкти розміщуються в середині зображення зовнішнього об'єкта.
Може бути вказаний зв'язок інших об'єктів не тільки з охоплюючим об'єктом, але й з внутрішніми.
Діаграма переходів описує стан об'єктів і переходи між станами. Серед
Станів виділяється один початковий і один або декілька кінцевих, переходи між станами позначаються стрілкою з поміткою події, яка викликає відповідний перехід.
Можна побудувати діаграму станів для схеми в цілому, окремої її частини, або для одного об'єкта.