ОО проектирование: статическая структура системы и диаграмма классов
Диаграммы классов
Диаграмма классов для СРТ
Элементы ДК
Информация о типах
Информация о типах
Информация о типах
Информация о типах
Информация о типах
Информация о типах
Операции
Операции
Операции
Операции
Операции
Операции
Операции
Операции
Операции
Информация об области видимости
Информация об области видимости
Информация об области видимости
Вычислимые атрибуты
Направление навигации
Зависимости
Еще раз о полях и операциях класса при агрегации (с областью видимости)
Рекомендации по построению ДК
Рекомендации по построению ДК
Рекомендации по построению ДК
1.27M
Category: programmingprogramming

ОО проектирование - статическая структура системы и диаграмма классов

1. ОО проектирование: статическая структура системы и диаграмма классов

1

2. Диаграммы классов

• завершает этап проектирования
• отражается статическая модель ИС
• диаграмма классов (ДК = структура ИС
на этапе проектирования)
2

3. Диаграмма классов для СРТ

Рисунок 1 – Диаграмма классов СРТ
3

4. Элементы ДК

Многие элементы были рассмотрены при
изучении диаграммы понятий (ассоциации, роли,
атрибуты, ограничения, обобщение, агрегация ...)
Новые элементы:
• информация о типах
• операции
• информация об области видимости
• вычислимые атрибуты
• направление навигации
• зависимости
4

5. Информация о типах

Для всех членов класса (атрибуты,
параметры, результат операций) должны
быть указаны типы данных
Типами данных могут быть:
• стандартные
для
программирования
целевого
языка
• имена других классов модели
5

6. Информация о типах

Имена типов данных в языках ООП (объектноориентированного программирования):
• int (Int) – целочисленный [-32768 : +32767]
- количество:
- на 26 апреля 2019 г. в России насчитывается 1117
городов
- слушателей в группе АНИД-20 – 20 чел.
– номер: автобусного маршрута Пермь – Гамово – 104
• long (Long)– целочисленный длинный
[−2 147 483 647 : +2 147 483 647]
– количество: жителей г. Кунгура – 64898 чел.
- !!!! номер – номер банковской карты 1899456730209234
6
нужен другой тип данных !!!

7. Информация о типах

Имена типов данных в языках ООП (объектноориентированного программирования):
• float (Float) – вещественный
- вес – самый большой и дорогой алмаз в мире «Звезда
Африки» имел массу составляла 3106,75 карата (621,35
грамма)
- длина – длина экватора 40075,696 км
- высота - высота Эвереста 8,848 км
- скорость – первая космическая скорость (чтобы
объект стал искусственным спутником Земли) 7,91 км/с
- ускорение – ускорение свободного падения 9,832 м/с²
на полюсах
7

8. Информация о типах

Имена типов данных в языках ООП (объектноориентированного программирования):
• bool (Bool) – логический (ИСТИНА, ЛОЖЬ)
- статус документа – утвержден/ не утвержден
• char (char) – один символ (‘z’, ‘%’, ‘8’, ‘-’)
• string (String) – строковый (несколько символов)
- название – крупнейшая река РФ «Енисей (с Ангарой)»
- ФИО – «Толстой Л.Н.»
- номер банковской карты «1899456730209234»
• void – пустой
++++++++++++++++++++++++++++++++++++++++++++++
• Currency – денежный
8
• Date – дата и время

9. Информация о типах

• Если в диаграмме понятий присутствует
агрегация, то у класса-контейнера тип поля,
хранящего множество элементов контейнера,
должен быть типом элемента контейнера:
В классе Ящик поля
мнЯблок: множество Яблоко
{тип – класс Яблоко}
колвоЯблок: int
9

10. Информация о типах

Примеры указания имени
параметров (аргументов):
типа
данных
у
ownerName: string
notesNumber: int
contractOpeningDate: Date
change: Currency
applicationStatus: bool
transactionNumber: long
appBox: apple
appNumber: int
10

11. Операции

Кроме раздела (секции) атрибутов у класса
используется раздел (секция) операций
Операции
соответствуют
входящим
сообщениям,
которые
должны
уметь
обрабатывать экземпляры классов
У операции есть :
• имя
• список параметров (аргументов)
• тип
результата,
возвращает результат
если
операция
11

12. Операции

операция = модуль
программирования:
(функция)
языка
12

13. Операции

Операции, «поставляемые» по умолчанию
для любого класса:
• конструктор
класса)
(создает
объект
• деструктор (уничтожает объект
класса)
13

14. Операции

Конструктор:
• имя совпадает с именем класса
• может иметь параметры
• ничего не возвращает (даже void !!!)
• может быть несколько с разным количеством
параметров
14

15. Операции

Деструктор:
• имя совпадает с именем класса
• имя начинается с ~
• не может иметь параметры
• ничего не возвращает (даже void !!!)
15

16. Операции

Пример:
- класс «ящик яблок»
с атрибутами и станд.
операциями
- класс «яблоко»
с атрибутами и станд.
операциями
16

17. Операции

Примеры указания имени типа данных:
1. Параметр (аргумент) операции
setName (iName: string)
add (iApp: apple)
2. Тип результата операции
getName ( ): string
getWeight ( ): float
17

18. Операции

Если в диаграмме понятий присутствует
агрегация, то у класса-контейнера должны быть:
• поле для хранения множества элементов
контейнера (или ссылка на это множество)
• поле для хранения текущего значения
количества элементов в контейнере (если не
используется стандартный тип контейнера ЯП:
array, list, stack и т.п.)
• операция добавления элемента в контейнер
• операция удаления элемента из контейнера
18

19. Операции

Пример:
класс «ящик
операциями
яблок»
с
атрибутами
и
19

20. Информация об области видимости

Для каждого члена класса должна быть
указана его область видимости
Существует 3 области видимости:
1. public (+) – член класса виден за его
пределами
2. protected (#) - член класса виден только
самому классу и его потомкам
3. private (-) - член класса виден только
самому классу
20

21. Информация об области видимости

Рисунок 2
В модели реализации свойство Платеж.Сумма
может быть реализовано как скрытое поле и два
метода (get- и set-)
21

22. Информация об области видимости

Рисунок 3
22

23. Вычислимые атрибуты

• атрибуты, чье значение класс не хранит,
а вычисляет при каждом обращении
• перед именем
ставится слэш /
вычислимого
атрибута
• на рис. 1 это атрибуты Продажа.Сумма и
ТоварнаяПозиция.Сумма
23

24. Направление навигации

• Стрелка
на
конце
ассоциации
означает,
что
навигация
осуществляется только в указанном
направлении
(видимость
в
направлении стрелки есть)
• Если направление навигации
указано, то она в обе стороны
не
24

25. Зависимости

Используются для отражения способов
видимости,
отличных
от
видимости
посредством ассоциаций.
На рис.1
товарная позиция вызывает
методы каталога товаров (зависимость «call»),
доступ к которому она получает через продажу
и СРТ
25

26. Еще раз о полях и операциях класса при агрегации (с областью видимости)

Рисунок 4
26

27. Рекомендации по построению ДК

1. Придерживайтесь правил, которые
были сформулированы для диаграмм
понятий
2. Дополнительно воспользуйтесь CRCкарточками (Class Responsibility Card,
карточка ответственности класса):
• возьмите небольшие листочки бумаги по
одному на каждый класс
27

28. Рекомендации по построению ДК

• Размер бумаги с 1-2 спичечных коробка
• Для каждого класса на такой бумаге
напишите его обязанности (не мелким
шрифтом и без сокращений)
28

29. Рекомендации по построению ДК

• Если обязанности некоторого класса
сформулировать
трудно,
то
задумайтесь над его необходимостью
• Если на бумаге недостаточно места для
записи обязанностей, то следует
рассмотреть вариант разбиения этого
класса на несколько более простых
29
English     Русский Rules