Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системный анализ и проектирование информационных систем на основе объектно-ориентированного подхода. Учебно-методическое пособие по дисциплине «Методы

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
разработчик должен явно указать процедуру или операцию для вычисления их значений. <имя> (name) представляет собой строку текста, которая используется в качестве идентификатора соответствующего атрибута и поэтому должна быть уникальной в пределах данного класса. Имя атрибута является единственным обязательным элементом в обозначении атрибута, должно начинаться со строчной (малой) буквы и, как правило, не должно содержать пробелов. <тип атрибута> (attribute type) – представляет собой имя некоторого типа данных. Типу атрибута должно предшествовать двоеточие <кратность> (multiplicity) атрибута характеризует общее количество конкретных значений для атрибута, которые могут быть заданы для объектов данного класса <значение по умолчанию> (default) – некоторое выражение, которое служит для задания начального значения или значений данного атрибута в момент создания отдельного экземпляра соответствующего класса. Конкретное значение по умолчанию должно соответствовать типу данного атрибута. Если этот терм не указан, то значение атрибута на момент создания нового экземпляра класса не определено.
<модификатор атрибута> (attribute modifier)
представляет собой текстовое выражение, которое придает дополнительную семантику данному атрибуту.
Операция (operation) представляет собой некоторый сервис, предоставляемый каждым экземпляром класса по определенному требованию. Совокупность операций характеризует функциональный аспект поведения класса. Операции или методы класса записываются в третьей сверху секции прямоугольника. Запись операций класса в языке UML также стандартизована и подчиняется определенным синтаксическим правилам.
51
Синтаксис операции на языке UML
[<видимость>] <имя операции> ‘(‘ [<список параметров>] ‘)’ [‘:’ [<тип возвращаемого результата>] ‘{‘ <свойство операции> [‘,’ <свойство операции>]* ‘}’] ,
где <видимость> ::= ‘+’ | ‘-‘ | ‘#’
+ public (общедоступный). Общедоступный элемент является видимым всеми элементами.
- private (закрытый). Закрытый элемент является видимым только внутри пространства имен, который им владеет.
# protected (защищенный). Защищенный элемент является видимым для элементов, которые имеют отношение обобщения с пространством имен, который им владеет. <имя операции> (operation name) идентификатор соответствующей операции <список параметров> (parameter list) представляет собой перечень разделенных запятыми формальных параметров операции
<тип возвращаемого результата> (return type)
специфицирует тип значения, возвращаемого данной операцией
<свойство операции>
redefines <имя операции> – данная операция
переопределяет некоторую наследуемую операцию с именем <имя операции>
query – данная операция не изменяет состояния
моделируемой системы и, соответственно, не имеет побочного эффекта
52
ordered – значения возвращаемого параметра
являются упорядоченными. Предполагается, что кратность данного возвращаемого параметра должна быть больше 1
unique – значения возвращаемого параметра не могут
повторяться. Предполагается, что кратность данного возвращаемого параметра должна быть больше 1.
Базовыми отношениями в языке UML являются:
зависимости (dependency relationship); ассоциации (association relationship); обобщения (generalization relationship).
Отношение зависимости в общем случае указывает некоторое семантическое отношение между двумя элементами модели или двумя множествами таких элементов, которое не является отношением ассоциации, обобщения или реализации. Оно используется в такой ситуации, когда некоторое изменение одного элемента модели может потребовать изменения другого зависимого от него элемента модели.
Отношение зависимости графически изображается пунктирной линией между соответствующими элементами со стрелкой, направленной от класса-клиента зависимости к независимому классу или классу-источнику (рисунок 18).
Рисунок 18 – Пример использования отношения
зависимости
Ассоциацией называется структурная связь, показывающая, что объекты одного класса некоторым образом связаны с объектами другого или того же самого класса. Допускается, чтобы оба конца ассоциации
53
относились к одному классу. Графически ассоциация изображается в виде линии, соединяющей класс сам с собой или с другими классами. Если ассоциация указана сплошной линией без стрелок или в виде двунаправленной стрелки, то объекты одного класса будут содержать ссылку на объекты другого и наоборот. Если ассоциация указана однонаправленной стрелкой, то ссылка будет содержаться только в объектах класса, из которого исходит стрелка. Отношение ассоциации может указываться между классами анализа как одного, так и разных типов.
Конец ассоциации обладает кратностью, которая показывает, сколько объектов может участвовать в данном отношении (рисунок 19). В общем случае кратность указывает верхнюю и нижнюю границы количества объектов, которые могут участвовать в отношении. Часто используемые варианты кратности:
1 – означает, что в ассоциации участвует один и только один экземпляр класса, с которым связана ассоциация;
* – в ассоциации может участвовать неограниченное число экземпляров класса;
0..1 – в ассоциации участвует либо один, либо ни одного
экземпляра класса;
0..N – в ассоциации участвует от 0 до N экземпляров
класса.
Рисунок 19 – Пример использования отношения
ассоциации
Обобщение на диаграммах классов используется, чтобы показать связь между классом-родителем и классом­потомком. Оно вводится на диаграмму, когда возникает разновидность какого-либо класса, а также в тех случаях, когда в системе обнаруживаются несколько классов, обладающих сходным поведением (рисунок 20).
54
Рисунок 20 – Пример использования отношения
обобщения
Отношение ассоциации имеет подвид – ассоциацию с агрегированием. В этом случае один класс имеет более высокий статус (целое) и состоит из низших по статусу классов (частей). При этом выделяют простое и композитное агрегирование и говорят о собственно агрегации и композиции. Простая агрегация предполагает, что части, отделенные от целого, могут продолжать свое существование независимо от него. Под композитным же агрегированием понимается ситуация, когда целое владеет своими частями и их время жизни соответствует времени жизни целого, т. е. независимо от целого части существовать не могут. Примеры этих видов ассоциаций и их обозначений в UML представлены на рисунке 21.
Рисунок 21 – Пример использования отношений
агрегирования
Стереотип класса – это элемент расширения словаря UML, который обозначает отличительные особенности в
55
использовании класса. Стереотип имеет название, которое задается в виде текстовой строки. При изображении класса на диаграмме стереотип показывается в верхней части класса в двойных угловых скобках. Есть три стандартных стереотипа классов, для которых предусмотрены специальные графические изображения (рисунок 22):
Класс-сущность (entity) – пассивный класс. Класс- сущность содержит информацию, которая должна храниться постоянно и не уничтожается с уничтожением объектов данного класса или прекращением работы моделируемой системы, связанные с выключением системы или завершением программы. Как правило, этот класс соответствует отдельной таблице базы данных. Класс­сущность может быть изображен также стандартным образом в форме прямоугольника класса со стереотипом
<<entity>>.
Граничный класс (boundary class) – используется для проектирования взаимодействия между системой и актерами (пользователями, внешними системами или устройствами). Взаимодействие часто включает в себя получение или передачу информации, запросы на предоставление услуг и т. д. Граничные классы являются абстракциями диалоговых окон, форм, панелей, коммуникационных интерфейсов, интерфейсов периферийных устройств, интерфейсов API (англ. application program interface – интерфейс прикладных программ) и т. д. Каждый граничный класс должен быть связан как минимум с одним актером. Граничный класс может быть изображен также стандартным образом в форме прямоугольника класса со стереотипом <<boundary>>.
Управляющий класс (control class) — класс, отвечающий за координацию действий других классов. На каждой диаграмме классов должен быть хотя бы один управляющий класс, причем количество посылаемых
56
объектам управляющего класса сообщений мало, по сравнению с числом рассылаемых ими. Управляющий класс отвечает за координацию действий других классов. У каждой диаграммы классов должен быть хотя бы один управляющий класс, контролирующий последовательность выполнения действий этого варианта использования. Как правило, данный класс является активным и инициирует рассылку множества сообщений другим классам модели. Кроме специального обозначения управляющий класс может быть изображен в форме прямоугольника класса со стереотипом <<control>>.
Рисунок 22 – Стереотипы классов
Порядок выполнения работы
1) Ознакомьтесь с теоретической частью данного
учебного пособия и описанием бизнес-процесса.
2) Проанализируйте варианты использования бизнес-
процесса «Управление учебным процессом ВУЗа».
3) Создайте классы для вариантов использования
бизнес-процесса «Управление учебным процессом ВУЗа».
4) Установите стереотипы классов для вариантов
использования бизнес-процесса «Управление учебным процессом ВУЗа».
5) Добавьте атрибуты и операции для классов.
6) Дополните диаграммы внутренними стрелками,
используя отношения зависимости, ассоциации и обобщения.
57
7) Продемонстрируйте созданные модели
преподавателю.
8) Оформите отчет.
9) Подготовьте ответы на контрольные вопросы.
Ход работы
1. В созданном в ходе лабораторной работы №1
проекте, переключитесь на папку логического представления Logical View – для работы с диаграммами классов (Class). Щелкните правой кнопкой мыши по папке представления Logical View в навигаторе модели, в контекстном меню выберите пункт Add Diagram, в списке выберите диаграмму классов Class Diagram
При этом появляется новое окно с чистым рабочим листом диаграммы классов и специальная панель инструментов, содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы классов (рисунок 23).
58
Рисунок 23 – Добавление диаграммы классов
Графическое изображение
Всплывающая
подсказка
Назначение кнопки
Select
Превращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме
Text
Добавляет на диаграмму текстовую область
Note
Добавляет на диаграмму примечание
NoteLink
Добавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы
Class
Добавляет на диаграмму класс
Interface
Добавляет на диаграмму интерфейс
Directed Association
Добавляет на диаграмму направленную ассоциацию
Association Class
Добавляет на диаграмму ассоциацию класс
Package
Добавляет на диаграмму пакет
Dependency
Добавляет на диаграмму отношение зависимости
Generalization
Добавляет на диаграмму отношение обобщения
Назначение отдельных кнопок панели можно узнать также из всплывающих подсказок (таблица 4).
Таблица 4 – Назначение кнопок специальной панели
инструментов диаграммы классов
59
Графическое изображение
Всплывающая
подсказка
Назначение кнопки
Realization
Добавляет на диаграмму отношение реализации
На специальной панели инструментов по умолчанию присутствует только часть пиктограмм элементов, которые могут быть использованы для построения диаграммы классов. Добавить кнопки с пиктограммами других графических элементов или удалить ненужные кнопки можно с помощью настройки специальной панели инструментов. Соответствующее диалоговое окно настройки специальной панели инструментов для диаграммы классов можно вызвать аналогично другим панелям с помощью операции контекстного меню Customize (Настройка) при позиционировании курсора на специальной панели инструментов.
2. Создайте классы для варианта использования
«Войти в систему» (Login) в соответствии с нижеследующим описанием.
Для добавления класса на диаграмму классов нужно с помощью левой кнопки мыши нажать кнопку с изображением пиктограммы класса на специальной панели инструментов, отпустить левую кнопку мыши и щелкнуть левой кнопкой мыши на свободном месте рабочего листа диаграммы. На диаграмме появится изображение класса с маркерами изменения его геометрических размеров и предложенным средой именем по умолчанию NewClass. Или создать класс, нажав правой кнопкой мыши по Logical
View и выбрав из контекстного меню Add Class (рисунок
24), а потом «перетащить» созданный класс из окна
браузера проекта в область окна диаграммы классов.
Для варианта использования «Войти в систему» нужно создать 5 классов с соответствующими стереотипами:
User – «entity»;
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]