Информационные технологии. Диаграммы классов. (Тема 10.2)

Содержание

Слайд 2

Отношение зависимости (dependency relationship) Отношение ассоциации (association relationship) Отношение обобщения (generalization

Отношение зависимости (dependency relationship)
Отношение ассоциации (association relationship)
Отношение обобщения (generalization

relationship)
Отношение реализации (realization relationship)

Типы отношений

Слайд 3

Зависит от Знает о Наследование: является предком (потомком) Реализует Типы отношений

Зависит от
Знает о
Наследование: является предком (потомком)
Реализует

Типы отношений

Слайд 4

Отношение обобщения отношением между более общим элементом (родителем или предком) и

Отношение обобщения

отношением между более общим элементом (родителем или предком) и

более частным или специальным элементом (дочерним или потомком).
Слайд 5

Ограничения отношения обобщения

Ограничения отношения обобщения

Слайд 6

Отношение обобщения Осторожно использовать термин «является»: Шеп – это бордер-колли. Бордер-колли

Отношение обобщения

Осторожно использовать термин «является»:
Шеп – это бордер-колли.
Бордер-колли – это

собака.
Собаки являются животными.
Бордер колли – это порода собак.
Собака – биологический вид.
(1)+(2) => Шеп – это собака
(2)+(3) => бордер-колли – это животное
(1)+(4) => Шеп – это порода собак (неверно!)
Слайд 7

Отношение обобщения

Отношение обобщения

Слайд 8

Ограничения отношения обобщения строка текста, указывающая на некоторые дополнительные свойства этого

Ограничения отношения обобщения

строка текста, указывающая на некоторые дополнительные свойства этого

отношения
{complete} -- определены все классы- потомки
{disjoint} -- классы-потомки не содержат объектов, одновременно являющихся экземплярами двух или более классов
{incomplete}
{overlapping} -- экземпляры классов-потомков могут принадлежать одновременно нескольким классам
Слайд 9

Ограничения отношения обобщения

Ограничения отношения обобщения

Слайд 10

Ассоциация Дополнительные понятия

Ассоциация

Дополнительные понятия

Слайд 11

Класс-ассоциация

Класс-ассоциация

Слайд 12

Класс-ассоциация

Класс-ассоциация

Слайд 13

Класс-ассоциация В UML для каждого клиента подразумевается только одно отношение (последний вариант):

Класс-ассоциация

В UML для каждого клиента подразумевается только одно отношение (последний

вариант):
Слайд 14

N-арная ассоциация Ассоциация-класс – класс, реализующий ассоциацию Конец ассоциации

N-арная ассоциация

Ассоциация-класс – класс, реализующий ассоциацию
Конец ассоциации

Слайд 15

XOR-ассоциация

XOR-ассоциация

Слайд 16

Отношение агрегации Ассоциация Агрегация Композиция Классов представляет собой некоторую сущность, включающую

Отношение агрегации

Ассоциация

Агрегация

Композиция

Классов представляет собой некоторую сущность, включающую в себя в

качестве составных частей другие сущности.
Слайд 17

Отношение агрегации В связи с рассмотрением данного отношения вполне уместно вспомнить

Отношение агрегации

В связи с рассмотрением данного отношения вполне уместно вспомнить

о специальном термине "агрегат", которое служит для обозначения технической системы, состоящей из взаимодействующих составных частей или подсистем
Слайд 18

Отношение агрегации .

Отношение агрегации

.

Слайд 19

Отношение композиции части не могут выступать в отрыве от целого, т.

Отношение композиции

части не могут выступать в отрыве от целого, т.

е. с уничтожением целого уничтожаются и все его составные части.
Слайд 20

Отношение композиции

Отношение композиции

Слайд 21

Ассоциация Различие между агрегированием и осведомленностью(acquaintance) Агрегирование подразумевает, что один объект

Ассоциация

Различие между агрегированием и осведомленностью(acquaintance)
Агрегирование подразумевает, что один объект владеет другим

или несет за него ответственность.
В общем случае мы говорим, что объект содержит другой объект или является его частью.

GoF, 95

Слайд 22

Отношение агрегации Агрегирование и осведомленность легко спутать, поскольку они часто реализуются

Отношение агрегации

Агрегирование и осведомленность легко спутать, поскольку они часто реализуются одинаково.
определяется,

скорее, предполагаемым использованием, а не языковыми механизмами.
Слайд 23

Отношение агрегации Агрегирование подразумевает, что один объект владеет другим или несет за него ответственность.

Отношение агрегации

Агрегирование подразумевает, что один объект владеет другим или несет за

него ответственность.
Слайд 24

Отношение агрегации Композиция подразумевает, что один объект владеет другим или несет

Отношение агрегации

Композиция подразумевает, что один объект владеет другим или несет за

него ответственность (создает и уничтожает).
Слайд 25

Отношение агрегации На диаграмме классов можно показать несколько классов потенциальных владельцев,

Отношение агрегации

На диаграмме классов можно показать несколько классов потенциальных владельцев, но

у любого экземпляра класса есть только один объект владелец
Слайд 26

Отношение агрегации Правило «нет совместного владения» является ключевым в композиции

Отношение агрегации

Правило «нет совместного владения» является ключевым в композиции

Слайд 27

Производные свойства

Производные свойства

Слайд 28

Активный класс

Активный класс

Слайд 29

Шаблоны или параметризованные классы

Шаблоны или параметризованные классы

Слайд 30

Шаблоны или параметризованные классы

Шаблоны или параметризованные классы

Слайд 31

Объекты

Объекты

Слайд 32

Объекты Диаграммы объектов удобны для показа примеров связанных друг с другом

Объекты

Диаграммы объектов удобны для показа примеров связанных друг с другом

объектов. Во многих ситуациях точную структуру можно определить с помощью диаграммы классов, но при этом структура оста ется трудной для понимания. В таких случаях пара примеров диаграммы объектов может прояснить ситуацию.
Слайд 33

Объекты '/' : . о : C– объект с собственным именем

Объекты

<собственное имя объекта >'/'<Имя роли класса>:<Имя класса >.
о : C–

объект с собственным именем о, экземпляр класса С.
: C– анонимный объект, экземпляр класса С.
о :(или просто о) — объект-сирота с собственным именем о.
о / R : C— объект с собственным именем о, экземпляр класса С, играющий роль R.
/ R : C— анонимный объект, экземпляр класса С, играющий роль R.
о / R— объект-сирота с собственным именем о, играющий роль R.
/ R— анонимный объект и одновременно объект-сирота, играющий роль R.
Слайд 34

Рекомендации Как разбить на классы? Русский язык или английский?

Рекомендации

Как разбить на классы?
Русский язык или английский?

Слайд 35

Рекомендации Использование классов, ассоциаций, атрибутов, отношений и ограничений решает 90% всех

Рекомендации

Использование классов, ассоциаций, атрибутов, отношений и ограничений решает 90% всех задач

моделирования.
Сконцентрировать внимание только на важных аспектах проблемы
Выбор точки зрения должен соответствовать определенному этапу работы: концептуальный, спецификации, реализации)
Слайд 36

Навигация в ассоциации Это возможность легко находить те классы, на которые указывает данная ассоциация

Навигация в ассоциации

Это возможность легко находить те классы, на которые указывает

данная ассоциация
Слайд 37

Навигация в ассоциации Если у ассоциации нет стрелок, то это трактуется: Двунаправленная ассоциация Направление не известно

Навигация в ассоциации

Если у ассоциации нет стрелок, то это трактуется:
Двунаправленная ассоциация
Направление

не известно
Слайд 38

Методы Как называть, метод или операция? Операция – функция класса Метод – экземпляр операции

Методы

Как называть, метод или операция?
Операция – функция класса
Метод – экземпляр операции

Слайд 39

Виды методов Операция-запрос (не меняет состояние класса) Операция модификатор (меняет состояние класса) Итераторы (Г.Буч)

Виды методов

Операция-запрос (не меняет состояние класса)
Операция модификатор (меняет состояние класса)
Итераторы (Г.Буч)

Слайд 40

Советы использования Не пытайтесь использовать все доступные понятия. Начните с классов,

Советы использования

Не пытайтесь использовать все доступные понятия. Начните с классов, ассоциаций,

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

Ограничения Используются в языке Eiffel (Design by contract, Бертран Мейер) В

Ограничения

Используются в языке Eiffel (Design by contract, Бертран Мейер)
В основе лежит

понятие утверждения: булевское высказывание, которое всегда истинно
Предусловия, условия и инвариант
Слайд 42

Ограничения Пусть A – это некоторая операция, тогда формула корректности (correctness

Ограничения

Пусть A – это некоторая операция, тогда формула корректности (correctness formula)
{P}

A {Q} (Триада Хоара)
{x = 5} x = x ^ 2 {x > 0}
Слайд 43

Ограничения Кто ответственен за выполнение проверки? Для предусловия ответственен вызывающий класс

Ограничения

Кто ответственен за выполнение проверки?
Для предусловия ответственен вызывающий класс

Слайд 44

Самая трудная задача в объектно-ориентированном проектировании – разложить систему на объекты

Самая трудная задача в объектно-ориентированном проектировании – разложить систему на объекты
Можно

сформулировать задачу письменно, выделить из получившейся фразы существительные и глаголы, после чего создать соответствующие классы и операции.
Слайд 45

Моделирование Другой путь – сосредоточиться на отношениях и разделении обязанностей в

Моделирование

Другой путь – сосредоточиться на отношениях и разделении обязанностей в системе.
Согласие

по поводу того, какой подход самый лучший, никогда не будет достигнуто. (GoF)
Слайд 46

CRC – карточки Уорд Каннингхем и Кент Бек (разработчики Smalltalk) в

CRC – карточки

Уорд Каннингхем и Кент Бек (разработчики Smalltalk) в

конце 80-х, Удобны при построении диаграмм взаимодействия
CRC: Class-Responsibility-Collaboration (Класс- Ответсвенность- Кооперация)
Технология использовалась для проектирования модели классов
Слайд 47

CRC карточки

CRC карточки

Слайд 48

CRC – карточки Небольшие карточки, размером 4 х 6см

CRC – карточки

Небольшие карточки, размером 4 х 6см

Слайд 49

CRC карточки

CRC карточки

Слайд 50

Диаграммы классов используются: диаграммы классов используются в следующих целях: для моделирования

Диаграммы классов используются:

диаграммы классов используются в следующих целях:
для моделирования

словаря системы
для моделирования простых коопераций
для моделирования логической схемы базы данных.
Слайд 51

Диаграммы классов используются: Моделирование словаря системы: Определите, какие элементы пользователи и

Диаграммы классов используются:

Моделирование словаря системы:
Определите, какие элементы пользователи и разработчики

применяют для описания задачи или ее решения. Используйте CRC-карточки.
Выявите для каждой абстракции соответствующее ей множество обязанностей.
Разработайте атрибуты и операции, необходимые для выполнения класса ими своих обязанностей.
Слайд 52

Диаграммы классов используются: Пример: робот

Диаграммы классов используются:

Пример: робот

Слайд 53

Диаграммы классов используются: Примитивные типы

Диаграммы классов используются:

Примитивные типы

Слайд 54

Диаграммы классов используются: соединение между классами, когда один класс использует другой в качестве параметра операции

Диаграммы классов используются:

соединение между классами, когда один класс использует другой

в качестве параметра операции
Слайд 55

Моделирование схемы БД Идентифицируйте классы вашей модели Создайте содержащую эти классы

Моделирование схемы БД

Идентифицируйте классы вашей модели
Создайте содержащую эти классы

диаграмму классов
Раскройте структурные особенности классов (акрибуты, ассоциации, кратности)
Поищите образцы, усложняющие проектирование физической базы данных, например циклические ассоциации, и др.
Рассмотрите поведение этих классов
Слайд 56

Моделирование схемы БД

Моделирование схемы БД

Слайд 57

Моделирование схемы БД используйте зависимость, только если моделируемое отношение не является

Моделирование схемы БД

используйте зависимость, только если моделируемое отношение не является

структурным;
используйте обобщение, только если имеет место отношение типа "является";
множественное наследование часто можно заменить агрегированием;
остерегайтесь циклических отношений обобщения;
Слайд 58

Моделирование схемы БД поддерживайте баланс в отношениях обобщения: иерархия наследования не

Моделирование схемы БД

поддерживайте баланс в отношениях обобщения: иерархия наследования не

должна быть ни слишком глубокой (желательно не более пяти уровней), ни слишком широкой (лучше прибегнуть к промежуточным абстрактным классам);
применяйте ассоциации прежде всего там, где между объектами существуют структурные отношения.
Слайд 59

Моделирование схемы БД выбрав один из стилей оформления линий (прямые или

Моделирование схемы БД

выбрав один из стилей оформления линий (прямые или

наклонные), в дальнейшем старайтесь его придерживаться. Прямые линии подчеркивают, что соединения идут от родственных сущностей к одному общему родителю. Наклонные линии позволяют существенно сэкономить пространство в сложных диаграммах. Если вы хотите привлечь внимание к разным группам отношений, применяйте одновременно оба типа линий;
Слайд 60

Моделирование схемы БД избегайте пересечения линий; показывайте только такие отношения, которые

Моделирование схемы БД

избегайте пересечения линий;
показывайте только такие отношения, которые

необходимы для понимания особенностей группирования элементов модели; скрывайте несущественные (особенно избыточные) ассоциации.
Слайд 61

Основы структурного моделирования Общие механизмы UML: Примечание (Note) Стереотипом (Stereotype) Помеченное значение (Tagged value) Ограничение (Constraint)

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

Общие механизмы UML:
Примечание (Note)
Стереотипом (Stereotype)
Помеченное значение (Tagged value)
Ограничение

(Constraint)
Слайд 62

Основы структурного моделирования Примечание (Note) - это графический символ, используемый для

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

Примечание (Note) - это графический символ, используемый для

изображения ограничений или комментариев, присоединенных к элементу модели или их совокупности. Примечание выглядит как прямоугольник с загнутым углом, содержащий текстовый или графический комментарий
Слайд 63

Основы структурного моделирования Стереотипом (Stereotype) называют расширение словаря UML, позволяющее создавать

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

Стереотипом (Stereotype) называют расширение словаря UML, позволяющее создавать

новые виды строительных блоков, аналогичные существующим, но специфичные для данной задачи. Стереотип представлен в виде имени, заключенного в кавычки и расположенного над именем другого элемента. Стереотипный элемент можно изображать также с помощью новой связанной с ним пиктограммы.
Слайд 64

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

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

Слайд 65

Основы структурного моделирования Помеченное значение (Tagged value) - это расширение свойств

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

Помеченное значение (Tagged value) - это расширение свойств

элемента UML, позволяющее вводить новую информацию в его спецификацию. Помеченные значения изображаются в виде строки в скобках, расположенной под именем другого элемента.
Слайд 66

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

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

Слайд 67

Основы структурного моделирования Ограничение (Constraint) - это расширение семантики элемента UML,

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

Ограничение (Constraint) - это расширение семантики элемента UML,

позволяющее создавать новые или изменять существующие правила. Изображаются ограничения в виде строки в скобках, которая расположена возле ассоциированного элемента или связана с ним отношениями зависимости. Можно также представить ограничение в виде примечания.