Лекция 4.pptx
- Количество слайдов: 38
МОДЕЛИРОВАНИЕ СИСТЕМ ЛЕКЦИЯ 4 СТРУКТУРНОЕ МОДЕЛИРОВАНИЕ 1 Маленичев Антон Александрович ассистент каф. ИБ Тульский государственный университет Кафедра Информационной Безопасности
Кафедра Информационной Безопасности, Лаборатория анализа данных ПЛАН ЛЕКЦИИ Назначение структурного моделирования в рамках ООП; Классификаторы; Элементы классов в нотации UML; Моделирование структурных связей: зависимость, обобщение и ассоциация; Цель применения диаграмм классов; 2
Кафедра Информационной Безопасности, Лаборатория анализа данных ОСНОВНЫЕ ПОНЯТИЯ ООП Объект – структура из данных и процедур их обработки, существующая в памяти компьютера во время выполнения программы. Класс – описание множества однотипных объектов в тексте программы. Каждый такой класс имеет внутреннюю часть, называемую реализацией и внешнюю часть, называемую интерфейсом. Доступ к реализации возможен только через интерфейс. Обычно в интерфейсе различают свойства (которые синтаксически выглядят как переменные) и методы (которые синтаксически выглядят как процедуры или функции). Наследование — это способ структуризации описаний многих классов, который позволяет сократить текст программы, сделав его тем самым более обозримым, а значит более надежным и удобным. 3
Кафедра Информационной Безопасности, Лаборатория анализа данных КЛАССИФИКАТОРЫ Классы – это наиболее важные строительные блоки любой объектно-ориентированной системы. Однако они представляют собой всего лишь одну из разновидностей более общих строительных блоков UML – классификаторов. Классификатором называется механизм описания структурных и поведенческих свойств элемента системы. К классификаторам относятся классы, интерфейсы, типы данных, сигналы, компоненты, узлы, варианты использования и подсистемы. Классификаторы (в особенности классы) помимо простых свойств – атрибутов и операций - имеют много расширенных. Существует несколько видов классификаторов и классов; важно выбрать такой, который наилучшим образом моделирует вашу абстракцию реального мира. 4
Кафедра Информационной Безопасности, Лаборатория анализа данных КЛАССЫ Классы – наиболее важные строительные блоки любой объектноориентированной системы. Класс – это описание множества объектов с одинаковыми атрибутами, операциями, связями и семантикой. Класс реализует один или несколько интерфейсов. В рамках UML: Класс – это абстракция сущности, являющейся частью словаря. Класс – это описание множества объектов с одинаковыми атрибутами, операциями, связями и семантикой. Изображается в виде прямоугольника. 5
Кафедра Информационной Безопасности, Лаборатория анализа данных ДИАГРАММЫ КЛАССОВ. БАЗОВЫЕ ПОНЯТИЯ Диаграмма классов – это диаграмма, которая показывает набор классов, интерфейсов, коопераций и их связи. Графически представляет собой набор вершин и связывающих их дуг; На диаграммах классов обычно представлены следующие элементы: классы; интерфейсы; связи: зависимости, обобщения и ассоциации. Как и другие диаграммы, они могут содержать примечания и ограничения. 6
Кафедра Информационной Безопасности, Лаборатория анализа данных ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ КЛАССА В НОТАЦИИUML Name Атрибуты name: string ready: Boolean = 0 Move(x: int) Stop(): Boolean Обязанности Имя Операции Обязанности -управление перемещением робота 7
Кафедра Информационной Безопасности, Лаборатория анализа данных СВОЙСТВА ЭЛЕМЕНТОВ КЛАССА Видимость (visibility) – это свойство, указывающее на возможность использования данного атрибута или операции другими классификаторами. В UML можно специфицировать четыре уровня видимости: 1. public (открытый). Любой внешний классификатор, которому виден данный, может использовать это свойство. Обозначается символом “+” перед именем атрибута или операции. 2. protected (защищенный). Любой наследник классификатора может использовать данное свойство. Обозначается символом “#” (решетка) перед именем атрибута или операции. 3. private (закрытый). Данное свойство может использовать только сам классификатор. Обозначается символом “–” (минус) перед именем атрибута или операции. 4. package (пакетный). Только классификаторы, объявленные в том же пакете, могут использовать данное свойство. Обозначается символом “~” (тильда) перед именем атрибута или 8 операции.
Кафедра Информационной Безопасности, Лаборатория анализа данных ВИДИМОСТЬ В НОТАЦИИUML ~ 9
Кафедра Информационной Безопасности, Лаборатория анализа данных ОБЛАСТЬ ДЕЙСТВИЯ ЭЛЕМЕНТОВ КЛАССА Область действия свойства указывает на то, может ли каждый экземпляр данного классификатора иметь собственное значение этого свойства либо должно существовать только одно его значение, разделенное всеми экземплярами классификатора. В UML существуют два типа области действия: instance – область действия экземпляра. Каждый экземпляр классификатора имеет собственное значение свойства. Этот вариант принят по умолчанию и не требует дополнительной нотации; static – статическая область действия, или область действия класса (class scope). Предусмотрено только одно значение свойства для всех экземпляров классификатора. Обозначается подчеркиванием. 10
Кафедра Информационной Безопасности, Лаборатория анализа данных ВИДЫ ОБЛАСТЕЙ ДЕЙСТВИЯ В НОТАЦИИ UML 11
Кафедра Информационной Безопасности, Лаборатория анализа данных РАЗДЕЛ ИМЕНИ КЛАССА Раздел имени класса в общем случае имеет следующий синтаксис. «стереотип» ИМЯ {свойства} кратность Стандартные стереотипы классов: Actor Enumeration Exception Implementation Class interface metaclass powertype process signal stereotype utility действующее лицо перечислимый тип данных сигнал, распространяемый по иерархии обобщений реализация класса нет атрибутов все операции абстрактные экземпляры являются классами метакласс, экземплярами которого являются все наследники данного класса активные классы класс, экземплярами которого являются сообщения стереотип данных (datatype) нет экземпляров = служба Если имя подчеркнуто, то это имя объекта «utility» Company служебный класс Company со стереотипом utility для хранения глобальных атрибутов и операций 12
Кафедра Информационной Безопасности, Лаборатория анализа данных РАЗДЕЛ ОПИСАНИЯ АТРИБУТОВ Атрибут — это именованное место (или, как говорят, слот), в котором может храниться значение. Атрибуты класса перечисляются в разделе атрибутов. В общем случае описание атрибута имеет следующий синтаксис. видимость ИМЯ кратность : тип = значение {свойство изменяемости} Видимость обозначается знаками +, –, #, ~. Если имя атрибута подчеркнуто, то областью действия данного атрибута является класс Значения свойства изменяемости атрибута Значение Описание Никаких ограничений на изменение значения атрибута не changeable накладывается. Данное значение имеет место по умолчанию, поэтому указывать в модели его излишне. add. Only Это значение применимо только к атрибутам, кратность которых больше единицы. При изменении значения атрибута новое значение добавляется в массив значений, но старые значения не меняются и не исчезают. Такой атрибут "помнит" историю своего изменения. frozen Значение атрибута задается при инициализации объекта и не может меняться. 13
Кафедра Информационной Безопасности, Лаборатория анализа данных ПРИМЕРЫ ОПИСАНИЯ АТРИБУТОВ Пример name +name -name : String -name [1. . 3] : String Пояснение Минимальное возможное описание — указано только имя атрибута Указаны имя и открытая видимость — предполагается, манипуляции с именем будут производится непосредственно Указаны имя, тип и закрытая видимость — манипуляции с именем будут производится с помощью специальных операций Указана кратность (для хранения трех составляющих; фамилии, имени и отчества) -name : String = "Novikov" Указано начальное значение +name : String = “ 123” {frozen} Атрибут объявлен открытым, не меняющим своего значения после начального присваивания 14
Кафедра Информационной Безопасности, Лаборатория анализа данных РАЗДЕЛ ОПИСАНИЯ ОПЕРАЦИЙ Операция — это описание способа выполнить какие-то действия с объектом. Описания операций имеют следующий синтаксис. видимость ИМЯ (параметры) : тип {свойства} Параметры обозначает последовательность описаний параметров операции, каждое из которых имеет вид следующий формат. направление ПАРАМЕТР : тип = значение Видимость, обозначается с помощью знаков +, –, #, ~. Подчеркивание имени означает, что область действия операции — класс, а не объект. Например, конструкторы имеют область действия класс. Курсивное написание имени означает, что операция абстрактная, т. е. в данном классе ее реализация не задана и должна быть задана в подклассах данного класса. 15
Кафедра Информационной Безопасности, Лаборатория анализа данных НАПРАВЛЕНИЕ ПЕРЕДАЧИ ПАРАМЕТРОВ Ключевое слово Назначение параметра In Out Входной параметр — аргумент должен быть значением, которое используется в операции, но не изменяется Выходной параметр — аргумент должен быть хранилищем, в которое операция помещает значение In. Out Входной и выходной параметр — аргумент должен быть хранилищем, содержащим значение. Операция использует переданное значение аргумента и помещает в хранилище результат Return Значение, возвращаемое операцией. Никакого аргумента не требуется 16
Кафедра Информационной Безопасности, Лаборатория анализа данных СВОЙСТВА ОПЕРАЦИЙ Свойство concurrency определяет, может ли операция быть вызвана из второго потока в то время, пока ее выполнение, инициированное из первого потока, не завершилось. Значение sequential guarded concurrent Описание Операция не допускает параллельного вызова (не является повторновходимой). Если параллельный вызов происходит, то дальнейшее поведение системы не определено. Параллельные вызовы допускаются, но только один из них выполняется — остальные блокируются и их выполнение задерживается до тех пор, пока не завершится выполнение данного вызова. Операция допускает произвольное число параллельных вызовов и гарантирует правильность своего выполнения. Такие операции называются повторно-входимыми (reenterable). Свойство is. Query указывает, не обладает ли операция побочным эффектом. Если значение данного свойства true, то выполнение операции не меняет состояния системы — операция только вычисляет значения, возвращаемые в точку вызова. В противном случае, т. е. при значение false, операция меняет состояние системы: присваивает 17 новые значения атрибутам, создает или уничтожает объекты и т. п.
Кафедра Информационной Безопасности, Лаборатория анализа данных ПРИМЕРЫ ОПИСАНИЯ ОПЕРАЦИЙ КЛАССА Пример move +move(in from, in to) +move(in from : Dpt, in to : Dpt) +get. Name() : String {is. Query} +set. Pwd(in pwd : String = "password") Пояснение Минимальное возможное описание — указано только имя операции Указаны видимость операции, направления передачи и имена параметров Подробное описание сигнатуры: указаны видимость операции, направления передачи, имена и типы параметров Функция, возвращающая значение атрибута и не имеющая побочных эффектов Процедура, для которой указано значение аргумента по умолчанию 18
Кафедра Информационной Безопасности, Лаборатория анализа данных СВЯЗИ В объектно-ориентированном моделировании существуют три вида связей между классами, которые наиболее важны: зависимость, представляющая связи использования между классами; обобщение, которое связывает потомков с их родителями; ассоциации, описывающие структурные связи объектов. 19
Кафедра Информационной Безопасности, Лаборатория анализа данных ВИДЫ СВЯЗЕЙ НА ДИАГРАММАХ КЛАССОВ 20
Кафедра Информационной Безопасности, Лаборатория анализа данных ЗАВИСИМОСТИ Зависимость (dependency) – это связь, которая устанавливает, что одна сущность (например класс Window, использует операцию либо услугу, представляемые другой сущностью, например классом Event (Событие), но не обязательно – наоборот. Выбирайте зависимость, когда вам нужно показать, что одна сущность использует другую. 21
Кафедра Информационной Безопасности, Лаборатория анализа данных ОБОБЩЕНИЯ Обобщение (generalization) – это связь между сущностью общего характера (называемой суперклассом, или родителем) и более специфичной сущностью (называемой подклассом, дочерним классом или потомком). Класс может иметь одного или нескольких родителей, либо не иметь их вовсе. Класс, не имеющий родителей, но имеющий одного или нескольких потомков, называется корневым (root) или базовым. Класс, не имеющий потомков, называется листовым (leaf). 22
Кафедра Информационной Безопасности, Лаборатория анализа данных ГРАФИЧЕСКАЯ ИНТЕРПРЕТАЦИЯ: ОБОБЩЕНИЯ 23
Кафедра Информационной Безопасности, Лаборатория анализа данных АБСТРАКТНЫЕ, ЛИСТОВЫЕ ИПОЛИМОРФНЫЕ ЭЛЕМЕНТЫ Связи обобщения используются для моделирования структуры классов с более общими абстракциями, расположенными на вершине иерархии, и более детальными – внизу. В пределах такой иерархии некоторые классы часто определяются как абстрактные – это значит, что они не могут иметь прямых экземпляров. Может случиться и так, что класс не должен иметь потомков. Такой элемент называется листовым и обозначается в UML свойством leaf, записанным под именем класса. Обычно операция полиморфна, то есть можно специфицировать операцию с той же сигнатурой в разных местах иерархии классов. Операция в дочернем классе отменяет поведение такой же операции родительского класса (приоритетна перед ней). 24
Кафедра Информационной Безопасности, Лаборатория анализа данных ТИПЫ ЭЛЕМЕНТОВ ПРИ ОБОБЩЕНИЯХ В НОТАЦИИ UML 25
Кафедра Информационной Безопасности, Лаборатория анализа данных АССОЦИАЦИИ Ассоциация – это структурная связь, указывающая, что объекты одной сущности соединяются с объектами другой. Так, имея ассоциацию между двумя классами, вы можете соединить объекты одного класса с объектами другого. Вполне допустимо, чтобы оба конца ассоциации соединяли один и тот же класс – иными словами, один объект класса может связываться с другим объектом того же класса. Ассоциация, связывающая два класса, называется бинарной. Ассоциация может иметь имя, используемое для описания природы связи. Поэтому значение имени не должно быть двусмысленным. Используя стрелочку в форме треугольника, можно указать направление, в котором следует читать это имя. 26
Кафедра Информационной Безопасности, Лаборатория анализа данных АССОЦИАЦИИ: РОЛИ И КРАТНОСТЬ Когда класс участвует в ассоциации, он выполняет в этой связи конкретную роль. Роль – это «лицо» класса, который находится на дальнем конце ассоциации, представленное классу, находящемуся на ее ближнем конце. Вы можете явно именовать роль, которую выполняет класс в ассоциации. Кратность (multiplicity) представляет диапазон целых чисел, указывающий возможное количество связанных объектов. Он записывается в виде выражения с минимальным и максимальным значением, которые могут быть равны; для их разделения используются две точки. Устанавливая множественность дальнего конца ассоциации, вы указываете, сколько объектов может существовать на дальнем конце ассоциации для каждого объекта класса, находящегося на ближнем ее конце. 27
Кафедра Информационной Безопасности, Лаборатория анализа данных АССОЦИАЦИИ: АГРЕГАЦИЯ И КОМПОЗИЦИЯ Агрегация (агрегирование по ссылке) — отношение «часть-целое» между двумя равноправными объектами, когда один объект (контейнер) имеет ссылку на другой объект. Оба объекта могут существовать независимо: если контейнер будет уничтожен, то его содержимое — нет. Обозначается как ассоциация с белым ромбом со стороны объекта-целого. Композиция (агрегирование по значению) — более строгий вариант агрегирования, когда включаемый объект может существовать только как часть контейнера. Если контейнер будет уничтожен, то и включённый объект тоже будет уничтожен. Обозначается как ассоциация с черным ромбом со стороны объекта-целого. 28
Кафедра Информационной Безопасности, Лаборатория анализа данных СТРУКТУРНЫЕ СВЯЗИ НА ДИАГРАММЕ КЛАССОВ 29
Кафедра Информационной Безопасности, Лаборатория анализа данных ЦЕЛИ ПРИМЕНЕНИЯ ДИАГРАММЫ КЛАССОВ Диаграммы классов в рамках моделирования структуры применяются с одной из трех целей: 1. Для моделирования словаря системы. 2. Для моделирования простых коопераций. 3. Для моделирования логической схемы базы данных. 31
Кафедра Информационной Безопасности, Лаборатория анализа данных МОДЕЛИРОВАНИЕ СЛОВАРЯ СИСТЕМЫ Чтобы смоделировать словарь системы, необходимо: 1. Идентифицировать те сущности, которыми оперируют пользователи или разработчики для описания проблемы или ее решения. Использовать анализ на основе вариантов использования для выявления этих абстракций. 2. Для каждой абстракции идентифицировать набор ее обязанностей. Убедиться, что каждый класс четко определен и обязанности сбалансированно распределены между классами. 3. Представить атрибуты и операции, необходимые для выполнения обязанностей каждого класса. 32
Кафедра Информационной Безопасности, Лаборатория анализа данных ИДЕНТИФИКАЦИЯ КЛАССОВ ИНФОРМАЦИОННОЙ СИСТЕМЫ ОТДЕЛА КАДРОВ: СЛОВАРЬ ПРЕДМЕТНОЙ ОБЛАСТИ прием; перевод; увольнение; сотрудник; создание; ликвидация; подразделение; вакансия; сокращение; должность. Сотрудник (Person); Подразделение (Department); Должность (Position). 33
Кафедра Информационной Безопасности, Лаборатория анализа данных ИДЕНТИФИКАЦИЯ КЛАССОВ ИНФОРМАЦИОННОЙ СИСТЕМЫ ОТДЕЛА КАДРОВ: РЕАЛИЗАЦИЯ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ Self Fire Получить заявление Special: - include Delete. Account Обновить информацию в базе данных Рассчитать сотрудника Document Adm. Fire Получить приказ Special: - include Delete Account Обновить информацию в базе данных Рассчитать сотрудника 34
Кафедра Информационной Безопасности, Лаборатория анализа данных ИДЕНТИФИКАЦИЯ КЛАССОВ ИНФОРМАЦИОННОЙ СИСТЕМЫ ОТДЕЛА КАДРОВ: РЕАЛИЗАЦИЯ ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ 35
Кафедра Информационной Безопасности, Лаборатория анализа данных МОДЕЛИРОВАНИЕ ПРОСТЫХ КООПЕРАЦИЙ Кооперация – это сообщество классов, интерфейсов и других элементов, которые работают в совокупности для формирования некоторого совместного поведения, которое не может быть обеспечено всеми этими элементами, взятыми в отдельности. Чтобы смоделировать кооперацию, необходимо: 1. Идентифицировать механизм, который вы собираетесь моделировать. 2. Для каждого механизма идентифицировать классы, интерфейсы и прочие элементы, которые участвуют в данной кооперации, а также связи между этими сущностями. 3. Использовать сценарии для тестирования всех этих сущностей. На данном этапе выявляются части модели, которые были пропущены, а также те, которые семантически неверны. 4. Убедиться, что все элементы наполнены правильным содержимым. Что касается классов, для начала обеспечьте оптимальный баланс обязанностей. Затем со временем проработайте конкретные атрибуты и операции. 36
Кафедра Информационной Безопасности, Лаборатория анализа данных МОДЕЛИРОВАНИЕ ПРОСТОЙ КООПЕРАЦИИ 37
Кафедра Информационной Безопасности, Лаборатория анализа данных МОДЕЛИРОВАНИЕ ЛОГИЧЕСКОЙ СХЕМЫБАЗЫ ДАННЫХ Чтобы смоделировать схему, необходимо: Идентифицировать те классы в модели, состояние которых не должно быть зависимым от времени жизни работающего приложения. Создать диаграмму классов, содержащую классы, выявленные на первом этапе. Раскрыть структурные подробности этих классов. В основном это означает необходимость подробно специфицировать их атрибуты, а также ассоциации с указанием множественности, которые связывают данные классы. Выявить общие образцы, которые усложняют физическое проектирование базы данных, например циклические ассоциации и ассоциации «один-к-одному» . Рассмотреть поведение классов, отмеченных на первом этапе, раскрыв операции, существенные для доступа к данным и 38 обеспечения их целостности.
Кафедра Информационной Безопасности, Лаборатория анализа данных ЛОГИЧЕСКАЯ СХЕМЫ БАЗЫ ДАННЫХ В НОТАЦИИUML 39


