Слайд 2
![Основные термины Классификатор Класс Интерфейс Экземпляр класса Ассоциация Квалификатор Класс](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-1.jpg)
Основные термины
Классификатор
Класс
Интерфейс
Экземпляр класса
Ассоциация
Квалификатор
Класс ассоциации
Обобщение
Украшение
Тип данных
Пакеты
Отношение доступа
Отношение импорта
Отношение объединения
Ограничение
Слайд 3
![Класс](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-2.jpg)
Слайд 4
![Класс](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-3.jpg)
Слайд 5
![Кванторы видимости “+” – public “#” – protected “–” – private](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-4.jpg)
Кванторы видимости
“+” – public
“#” – protected
“–” – private
Слайд 6
![Мультипликативность [0..1] [0..*] [1..*] [1..5] [1..3, 5, 7] [1..3, 7.. 10] [1..3,7..*]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-5.jpg)
Мультипликативность
[0..1]
[0..*]
[1..*]
[1..5]
[1..3, 5, 7]
[1..3, 7.. 10]
[1..3,7..*]
Слайд 7
![Атрибуты класса color: Соlоr employee_name[1..2]: String visibility: Boolean form: Polygon](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-6.jpg)
Атрибуты класса
color: Соlоr
employee_name[1..2]: String
visibility: Boolean
form: Polygon
Слайд 8
![Атрибуты класса color: Соlоr = (255, 0, 0) employee_name[1..2]: String](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-7.jpg)
Атрибуты класса
color: Соlоr = (255, 0, 0)
employee_name[1..2]: String =
“Ivan
Ivanovich”
visibility: Вооlеаn = true
form: Polygon = rectangle
visibility: Вооlеаn = false
Слайд 9
![Операции класса +create() +draw(form: Polygon = rectangle; fill_color: Color =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-8.jpg)
Операции класса
+create()
+draw(form: Polygon = rectangle; fill_color: Color = (0, 0,
255))
ask_client’s_account(number_of_account: Integer): Сurrеnсу
show_message():{"division by zero Error"}
Слайд 10
![Операции ассоциации Соответствуют наличию некоторого отношения между классами, возможности одного](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-9.jpg)
Операции ассоциации
Соответствуют наличию некоторого отношения между классами, возможности одного класса узнавать
о публичных атрибутах и операциях другого класса
Ассоциация может быть направленной и ненаправленной. Направленная ассоциация может быть однонаправленной и двунаправленной.
Если ассоциация однонаправленная, то один класс-участник должен знать о другом, тот, в свою очередь, знать о первом классе не обязан и может использоваться без него. Например: «Законодательство» – «Гражданин». Каким другим отношением можно заменить такую ассоциацию?
Если ассоциация двунаправленная, то каждый класс-участник должен знать о другом и ни один из них не может использоваться без другого. Например: «Человек» – «Автомобиль»
Что означает ненаправленная ассоциация?
Слайд 11
![Ассоциация Любая ассоциация обладает двумя ролями: каждая роль представляет собой направление ассоциации.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-10.jpg)
Ассоциация
Любая ассоциация обладает двумя ролями: каждая роль представляет собой направление ассоциации.
Слайд 12
![Ассоциация](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-11.jpg)
Слайд 13
![Ассоциация](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-12.jpg)
Слайд 14
![Отношение зависимости](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-13.jpg)
Слайд 15
![Отношение зависимости Класс Class_С зависит от класса Class_B или от обоих классов Class_A и Class_B?](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-14.jpg)
Отношение зависимости
Класс Class_С зависит от класса Class_B или от обоих классов
Class_A и Class_B?
Слайд 16
![Стереотипы отношения зависимости “access” – один класс обеспечивает доступ к](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-15.jpg)
Стереотипы отношения зависимости
“access” – один класс обеспечивает доступ к другому классу
“bind”
– один класс связан с другим классом
“derive” – зависимый класс может быть восстановлен по информации независимого класса. Стереотип применим также к атрибутам и операциям. Зависимый элемент излишен, введен для удобства, наглядности и т.д.
“import” – один класс включает другой класс
“refine” – один класс уточняет другой класс. Связанные классы концептуально совпадают, но находятся на разных уровнях абстракции
“call” – операция зависимого класса вызывает операцию независимого класса
Приведите примеры на разные виды стереотипы зависимости.
Какими другими типами отношений между классами можно заменить некоторые стереотипы зависимости?
Слайд 17
![Агрегация](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-16.jpg)
Слайд 18
![Композиция](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-17.jpg)
Слайд 19
![Обобщение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-18.jpg)
Слайд 20
![Обобщение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-19.jpg)
Слайд 21
![Ограничения {complete} – полный перечень подчиненных классов, других не существует](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-20.jpg)
Ограничения
{complete} – полный перечень подчиненных классов, других не существует
{incomplete} – перечень
подчиненных классов не завершен
{disjoint} – непересекающиеся классы
{overlapping} – перекрытие классов
Слайд 22
![Обобщение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-21.jpg)
Слайд 23
![Обобщение Смысл обобщения (уточнения, наследования): интерфейс подтипа должен включать все](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-22.jpg)
Обобщение
Смысл обобщения (уточнения, наследования): интерфейс подтипа должен включать все элементы интерфейса
супертипа. Другая сторона обобщения – принцип подстановочности.
Пример: «Исполнитель» обобщает «Субподрядчика». Субподрядчика можно подставить в любой код, где требуется «Исполнитель», и при этом все должно нормально работать. Любой экземпляр любого подтипа «Исполнителя» должен свободно работать на коде, предполагающем использование «Исполнителя». Субподрядчик может реагировать на некоторые команды отличным от другого исполнителя образом (в соответствии с каким принципом ООП?), но это отличие не должно беспокоить вызывающий объект.
Какой принцип методологии SOLID заложен в семантике отношения обобщения?
Слайд 24
![Интерфейс Если класс реализует интерфейс, то отношение между ним и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-23.jpg)
Интерфейс
Если класс реализует интерфейс, то отношение между ним и интерфейсом –
реализация.
Если класс использует интерфейс, то отношение между ним и интерфейсом – зависимость со стереотипом “call”.
Слайд 25
![Интерфейс В блоке с названием класса, интерфейса может быть указано](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-24.jpg)
Интерфейс
В блоке с названием класса, интерфейса может быть указано ключевое слово
в кавычках (например, “interface”) или фигурных скобках (например, {abstract}).
В кавычках пишем то, что указывает на метакласс, определенный в UML.
В фигурных скобках пишем то, что указывает на значение свойства класса. Например, {abstract} указывает на значение свойства isAbstract метакласса Class.
Слайд 26
![Объекты](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-25.jpg)
Слайд 27
![Шаблоны](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-26.jpg)
Слайд 28
![Шаблоны](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-27.jpg)
Слайд 29
![Рекомендации по созданию диаграммы классов Хорошо структурированная (согласованная, well-formed) диаграмма](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-28.jpg)
Рекомендации по созданию диаграммы классов
Хорошо структурированная (согласованная, well-formed) диаграмма классов:
фокусируется только
на одном аспекте статического представления системы;
содержит только те элементы, которые существенны для понимания данного аспекта;
предоставляет информацию в соответствии с уровнем их абстракции, только с теми украшениями, которые необходимы для понимания;
не настолько минималистична, чтобы дезинформировать читателя о важных семантических особенностях.
Слайд 30
![Рекомендации по созданию диаграммы классов Когда вы создаете диаграмму классов:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-29.jpg)
Рекомендации по созданию диаграммы классов
Когда вы создаете диаграмму классов:
давайте ей имя
в соответствии с ее назначением;
располагайте элементы так, чтобы минимизировать пересечение линий;
организуйте элементы в пространстве так, чтобы семантически связанные сущности располагались близко друг к другу;
используйте замечания и выделения цветом как визуальные подсказки, чтобы обратить внимание на важные особенности диаграммы;
Старайтесь не использовать слишком много разных типов отношений. В общем случае, один вид отношений должен доминировать на диаграмме классов.
Слайд 31
![Вопросы для самостоятельного изучения Сравнить CASE-средства BPWin, ERWin, Rational Rose,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-30.jpg)
Вопросы для самостоятельного изучения
Сравнить CASE-средства BPWin, ERWin, Rational Rose, ATS по
следующим критериям: технология моделирования, тип модели информационной системы в результате, способ создания модели, представления, поддерживаемый язык, автоматическое создание БД, автоматическая генерация кода приложения
Слайд 32
![Вопросы для самостоятельного изучения Узнать наиболее известные CASE-средства следующих типов:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/50208/slide-31.jpg)
Вопросы для самостоятельного изучения
Узнать наиболее известные CASE-средства следующих типов:
Только графические OO
CASE-средства
ОО CASE-средства с частичной кодогенерацией (от 1% до 60%)
Мета ОО CASE-средства
ОО CASE-средства полного цикла разработки
Узнать, зачем нужны методы нормализации диаграммы классов:
Применение паттернов
Рефакторинг