А.М. Вендров - Объектно-ориентированный анализ и проектирование с использованием языка UML и Rational Rose (1158631), страница 8
Текст из файла (страница 8)
Щелкните правой кнопкой мыши на процессоре в браузере.2. В открывшемся меню выберите пункт New > Process.3. Введите имя нового процесса.Чтобы показать процессы на диаграмме:1. Щелкните правой кнопкой мыши на процессоре.2. В открывшемся меню выберите пункт Show Processes.442.10.3 Проектирование классовКаждый граничный класс преобразуется в некоторый набор классов, в зависимости от своегоназначения.
Это может быть набор элементов пользовательского интерфейса, зависящий отвозможностей среды разработки, или набор классов, реализующий системный или аппаратныйинтерфейс.Классы-сущности с учетом соображений производительности и защиты данных могутразбиваться на ряд классов. Основанием для разбиения является наличие в классе атрибутов сразличной частотой использования или видимостью. Такие атрибуты, как правило, выделяются вотдельные классы.Что касается управляющих классов, то классы, реализующие простую передачу информацииот граничных классов к сущностям, могут быть удалены. Сохраняются классы, выполняющиесущественную работу по управлению потоками событий (управление транзакциями,распределенная обработка и т.д.).Обязанности классов, определенные в процессе анализа, преобразуются в операции. Каждойоперации присваивается имя, характеризующее ее результат. Определяется полная сигнатураоперации: operationName(parameter:class,…):returnType.
Создается краткое описание операции,включая смысл всех ее параметров. Определяется видимость операции: public, private, protected.Определяется область действия (scope) операции: экземпляр или классификатор.Определяются (уточняются) атрибуты классов:• Кроме имени, задается тип и значение по умолчанию (необязательное):attributeName:Type = Default;• Учитываются соглашения по именованию атрибутов, принятые в проекте и языкереализации;• Задается видимость атрибутов: public, private, protected;• При необходимости определяются производные (вычисляемые) атрибуты.Рис. 2.27 Класс Student с полностью определенными операциями и атрибутамиУпражнение 18.
Определение атрибутов и операций для класса Student45Чтобы задать тип данных, значение по умолчанию и видимость атрибута:1. Щелкните правой кнопкой мыши на атрибуте в браузере.2. В открывшемся меню выберите пункт Open Specification.3. Укажите тип данных в раскрывающемся списке типов или введите собственный типданных.4. В поле Initial Field (Первоначальное значение) введите значение атрибута по умолчанию.5.
В поле Export Control выберите видимость атрибута: Public, Protected, Private илиImplementation. По умолчанию видимость всех атрибутов соответствует Private.Чтобы изменить нотацию для обозначения видимости:1. В меню модели выберите пункт Tools > Options.2. Перейдите на вкладку Notation.3. Пометьте контрольный переключатель Visibility as Icons, чтобы использовать нотациюRose, или снимите пометку, чтобы использовать нотацию UML.Примечание.
Изменение значения этого параметра приведет к смене нотации только дляновых диаграмм и не затронет уже существующие диаграммы.Чтобы задать тип возвращаемого значения, стереотип и видимость операции:1. Щелкните правой кнопкой мыши на операции в браузере.2. Откройте окно спецификации класса этой операции.3. Укажите тип возвращаемого значения в раскрывающемся списке или введите свой тип.4. Укажите стереотип в соответствующем раскрывающемся списке или введите новый.5. В поле Export Control укажите значение видимости операции: Public, Protected, Privateили Implementation. По умолчанию видимость всех операций установлена в public.Чтобы добавить к операции аргумент:1.
Откройте окно спецификации операции.2. Перейдите на вкладку Detail.3. Щелкните правой кнопкой мыши в области аргументов, в открывшемся меню выберитеInsert.4. Введите имя аргумента.5. Щелкните на колонке Data type и введите туда тип данных аргумента.6. Если надо, щелкните на колонке default и введите значение аргумента по умолчанию.Моделирование состояний для классовЕсли некоторый объект всегда одинаково реагирует на событие, то он считаетсянезависимым от состояния по отношению к этому событию.
В отличие от него, зависимые отсостояния объекты по-разному реагируют на одно и то же событие в зависимости от своегосостояния. Обычно в экономических ИС содержится очень мало объектов, зависимых отсостояния, а системы управления технологическими процессами (системы реального времени)зачастую содержат множество таких объектов.Если в системе присутствуют зависимые от состояния объекты со сложной динамикойповедения, то для них можно построить модель, описывающую состояния объектов и переходымежду ними. Эта модель представляется в виде диаграмм состояний.В качестве примера, связанного с системой регистрации, рассмотрим поведение объектакласса CourseOffering. Диаграмма состояний строится в несколько этапов:1. Идентификация состояний. Признаками для выявления состояний являются изменениезначений атрибутов объекта или создание и уничтожение связей с другими объектами.
Так, объектCourseOffering может находиться в состоянии Open (прием на курс открыт) до тех пор, покаколичество зарегистрировавшихся на него студентов не превышает 10, а как только оно станетравным 10, объект переходит в состоянии Closed (прием на курс закрыт). Кроме того, объектCourseOffering может находиться в состоянии Unassigned (его никто не ведет, т.е., отсутствуетсвязь с каким-либо объектом Professor) или Assigned (такая связь существует).462. Идентификация событий.
События связаны, как правило, с выполнениемнекоторых операций. Так, в классе CourseOffering в результате распределения обязанностей прианализе варианта использования «Выбрать курсы для преподавания» определены две операции –addProfessor и removeProfessor, связанные с выбором курса некоторым профессором (созданиемновой связи) и отказом от выбранного курса (разрывом связи).
Этим операциям ставятся всоответствие два события - addProfessor и removeProfessor.3. Идентификация переходов между состояниями. Переходы вызываются событиями. Такимобразом, состояния Unassigned и Assigned соединяются двумя переходами (рис. 2.28).Рис. 2.28. Переходы между состояниямиДальнейшая детализация поведения объекта CourseOffering приведет к построениюдиаграммы состояний, показанной на рис. 2.29. На данной диаграмме использованы такиевозможности моделирования состояний, как композитные состояния (composite state) иисторическое состояние (history state). В данном случае композитными состояниями являютсяOpen и Closed, а вложенными состояниями – Unassigned, Assigned, Cancelled (курс отменен), Full(курс заполнен) и Committed (курс включен в расписание).
Композитные состояния позволяютупростить диаграмму, уменьшая количество переходов, поскольку вложенные состояниянаследуют все свойства и переходы композитного состояния.Историческое состояние (обозначенное на диаграмме окружностью с буквой «Н») – этопсевдосостояние, которое восстанавливает предыдущее активное состояние в композитномсостоянии.
Оно позволяет композитному состоянию Open запоминать, какое из вложенныхсостояний (Unassigned или Assigned) было текущим в момент выхода из Open, для того, чтобылюбой из переходов в Open (add student или remove student) возвращался именно в это вложенноесостояние, а не в начальное состояние.47Рис. 2.29. Диаграмма состояний с композитными состояниямиУпражнение 19. Создание диаграммы состояний для класса CourseOfferingДля создания диаграммы состояний:1. Щелкните правой кнопкой мыши в браузере на нужном классе.2. В открывшемся меню выберите пункт New > Statechart Diagram.Чтобы добавить состояние:1. На панели инструментов нажмите кнопку State2.
Щелкните мышью на диаграмме состояний в том месте, куда хотите его поместить.Все элементы состояния можно добавить с помощью вкладки Detail окна спецификациисостояния.Чтобы добавить деятельность:1. Откройте окно спецификации требуемого состояния.2. Перейдите на вкладку Detail.3. Щелкните правой кнопкой мыши на окне Actions.4. В открывшемся меню выберите пункт Insert.5. Дважды щелкните на новом действии.6. Введите действие в поле Actions.7.
В окне When укажите Do, чтобы сделать новое действие деятельностью.Чтобы добавить входное действие, в окне When укажите On Entry.48Чтобы добавить выходное действие, в окне When укажите On Exit.Чтобы послать событие:1. Откройте окно спецификации требуемого состояния.2. Перейдите на вкладку Detail.3. Щелкните правой кнопкой мыши на окне Actions.4.
В открывшемся меню выберите пункт Insert.5. Дважды щелкните на новом действии.6. В качестве типа действия укажите Send Event.7. В соответствующие поля введите событие (event), аргументы (arguments) и целевойобъект (Target).Чтобы добавить переход:1. Нажмите кнопку Transition панели инструментов.2. Щелкните мышью на состоянии, откуда осуществляется переход.3. Проведите линию перехода до того состояния, где он завершается.Чтобы добавить рефлексивный переход:1. Нажмите кнопку Transition to Self панели инструментов.2.