Similar presentations:
ОО проектирование - статическая структура системы и диаграмма классов
1. ОО проектирование: статическая структура системы и диаграмма классов
12. Диаграммы классов
• завершает этап проектирования• отражается статическая модель ИС
• диаграмма классов (ДК = структура ИС
на этапе проектирования)
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. Информация об области видимости
Рисунок 322
23. Вычислимые атрибуты
• атрибуты, чье значение класс не хранит,а вычисляет при каждом обращении
• перед именем
ставится слэш /
вычислимого
атрибута
• на рис. 1 это атрибуты Продажа.Сумма и
ТоварнаяПозиция.Сумма
23
24. Направление навигации
• Стрелкана
конце
ассоциации
означает,
что
навигация
осуществляется только в указанном
направлении
(видимость
в
направлении стрелки есть)
• Если направление навигации
указано, то она в обе стороны
не
24
25. Зависимости
Используются для отражения способоввидимости,
отличных
от
видимости
посредством ассоциаций.
На рис.1
товарная позиция вызывает
методы каталога товаров (зависимость «call»),
доступ к которому она получает через продажу
и СРТ
25
26. Еще раз о полях и операциях класса при агрегации (с областью видимости)
Рисунок 426
27. Рекомендации по построению ДК
1. Придерживайтесь правил, которыебыли сформулированы для диаграмм
понятий
2. Дополнительно воспользуйтесь CRCкарточками (Class Responsibility Card,
карточка ответственности класса):
• возьмите небольшие листочки бумаги по
одному на каждый класс
27
28. Рекомендации по построению ДК
• Размер бумаги с 1-2 спичечных коробка• Для каждого класса на такой бумаге
напишите его обязанности (не мелким
шрифтом и без сокращений)
28
29. Рекомендации по построению ДК
• Если обязанности некоторого классасформулировать
трудно,
то
задумайтесь над его необходимостью
• Если на бумаге недостаточно места для
записи обязанностей, то следует
рассмотреть вариант разбиения этого
класса на несколько более простых
29