Тема №5
Объектно-ориентированные методологии и CASE-средства проектирования ИС.
Практическая работа №5 RROSE. СОЗДАНИЕ ДИАГРАММ КЛАССОВ (УЧЕТ НОВЫХ ТРЕБОВАНИЙ)
Цель и содержание работы: научиться добавлять атрибуты и операции к классам диаграммы Классов, определять связи между классами. Постановка задачи
Заполним разработанную диаграмму Классов подробностями, т.е. добавим к классам параметры операций, типы данных и типы возвращаемых значений. В частности, к классу Order диаграммы Классов добавим атрибуты Order Number (номер заказа) и Customer Name (Имя клиента), Order Date (дата заказа) и Order Fill Date (дата выполнения заказа).
Так как в одном заказе можно указать большое количество товаров, и у каждого из них имеются свои собственные данные и поведение, смоделируем характеристики товара как самостоятельные классы, а не как атрибуты класса Order.
Добавим связи между классами на диаграмму Классов в соответствии с взаимодействием классов диаграммы Последовательности. Теоретическое обоснование
Ассоциации представляют собой связи между экземплярами классов (личность работает в компании, компания имеет ряд офисов).
Класс, участвующий в ассоциации, играет в ней некоторую роль. Любая ассоциация обладает двумя ролями; каждая роль представляет собой направление ассоциации. По существу, это лицо, которым класс, находящийся на одной стороне ассоциации, обращен к классу с другой его стороны.
Роль также обладает множественностью, которая показывает, сколько объектов может участвовать в данной связи. В общем случае множественность показывает нижнюю и верхнюю границы количества объектов, которые могут участвовать в связи. Для этого могут использоваться единственное число, диапазон или дискретная комбинация из чисел и диапазонов.
Для ассоциации может быть указано направление навигации. Если навигация указана только в одном направлении, то такая ассоциация называется однонаправленной. У двунаправленной ассоциации навигация указана в обоих направлениях. В языке UML отсутствие стрелок у ассоциации трактуется следующим образом: направление навигации неизвестно или ассоциация является двунаправленной
Атрибут – это именованное свойство класса, включающее описание множества значений, которые могут принимать экземпляры этого свойства. Класс может иметь любое число атрибутов или не иметь их вовсе. Атрибуты представлены в разделе, который расположен под именем класса; при этом указываются только их имена.
Операции представляют собой процессы, реализуемые классом. Операции класса изображаются в разделе, расположенном ниже раздела с атрибутами. Операцию можно описать более подробно, указав ее сигнатуру, в которую входят имена и типы всех параметров, их значения принятые по умолчанию, а применительно к функциям – тип возвращаемого значения. Методика и порядок выполнения работы
Чтобы привести модель в соответствие с новыми идеями, самостоятельно обновите диаграмму Последовательностей, как показано на рис.31.
Настройка Установим параметры так, чтобы показывать все атрибуты, все операции и их сигнатуры. Видимость покажем с помощью нотации UML.
В меню модели выберите пункт Tools→Options.
Перейдите на вкладку Diagram.
Убедитесь, что помечены переключатели Show Visibility, Show Stereotypes, Show Operation Signatures, Show All Attributes и Show All Operations.
Убедитесь, что переключатели Suppress Attributes и Suppress Operations не помечены.
Рис.31 - Обновленная диаграмма Последовательностей
Перейдите на вкладку Notation (Примечания).
Убедитесь, что переключатель Visibility as Icons не помечен.
Добавление нового класса Найдите в броузере диаграмму Классов варианта использования "Ввести новый заказ".
Щелкните на ней дважды, чтобы ее открыть.
Нажмите кнопку Class панели инструментов.
Щелкните мышью внутри диаграммы, чтобы поместить там новый класс.
Назовите его OrderItem (ПозицияЗаказа).
Назначьте этому классу стереотип Entity.
В броузере перетащите класс в пакет Entities.
Добавление атрибутов Щелкните правой кнопкой мыши на классе Order (Заказ).
В открывшемся меню выберите пункт New Attribute (Создать атрибут).
Введите новый атрибут OrderNumber: Integer (НомерЗаказа)
Нажмите клавишу Enter.
Введите следующий атрибут CustomerName: String (НаименованиеЗаказчика).
Повторите этапы 4 и 5, добавив атрибуты OrderDate: Date (ДатаЗаказа) и OrderFillDate: Date (ДатаЗаполненияЗаказа).
Щелкните правой кнопкой мыши на классе OrderItem.
В открывшемся меню выберите пункт New Attribute (Создать атрибут).
Введите новый атрибут ItemID: Integer (ИдентификаторПредмета).
Нажмите клавишу Enter.
Введите следующий атрибут ItemDescription: String (ОписаниеПредмета).
Добавление операций к классу OrderItem Щелкните правой кнопкой мыши на классе OrderItem.
В открывшемся меню выберите пункт New Operation (Создать операцию).
Введите новую операцию Create.
Нажмите клавишу Enter.
Введите следующую операцию SetInfo
Нажмите клавишу Enter.
Введите следующую операцию GetInfo.
Подробное описание операций с помощью диаграммы Классов Щелкните мышью на классе Order, выделив его таким способом.
Щелкните на этом классе еще один раз, чтобы переместить курсор внутрь.
Отредактируйте операцию Create(), чтобы она выглядела следующим образом: Create() : Boolean
Отредактируйте операцию SetInfo(), чтобы она выглядела следующим образом: SetInfo(OrderNum: Integer, CustomerName: String, OrderDate: Date, FillDate: Date): Boolean
Отредактируйте операцию GetInfo(), чтобы она выглядела следующим образом: GetInfo(): String
Подробное описание операций с помощью броузера Найдите в броузере класс OrderItem.
Чтобы раскрыть этот класс, щелкните на значке "+" рядом с ним. В броузере появятся его атрибуты и операции.
Дважды щелкните на операции GetIInfo(), чтобы открыть окно ее спецификации.
В раскрывающемся списке Return class (возвращаемый класс) укажите String.
Щелкните на кнопке ОК, закрыв окно спецификации операции.
Дважды щелкните в броузере на операции SetInfo класса OrderItem, чтобы открыть окно ее спецификации.
В раскрывающемся списке Return class укажите Boolean.
Перейдите на вкладку Detail (Подробно).
Щелкните правой кнопкой мыши на белом поле в области аргументов, чтобы добавить туда новый параметр.
В открывшемся меню выберите пункт Insert. Rose добавит туда аргумент под названием argname.
Щелкните один раз на этом слове, чтобы выделить его, и измените имя аргумента на ID.
Щелкните на колонке Type, открыв раскрывающийся список типов. В нем выберите тип Integer.
Щелкните на колонке Default, чтобы добавить значение аргумента по умолчанию. Введите туда число 0.
Нажмите на кнопку ОК, закрыв окно спецификации операции.
Дважды щелкните на операции Create() класса OrderItem, чтобы открыть окно ее спецификации.
В раскрывающемся списке Return class укажите Boolean.
Нажмите на кнопку ОК, закрыв окно спецификации операции.
Подробное описание операций с помощью любого из описанных методов Используя броузер или диаграмму Классов, введите следующую сигнатуру операций класса OrderDetail:
Open(): Boolean
SubmitInfo(): Boolean
Save(): Boolean
Используя броузер или диаграмму Классов, введите следующую сигнатуру операций класса OrderOptions:
Create(): Boolean
Используя броузер или диаграмму Классов, введите следующую сигнатуру операций класса OrderMgr:
SaveOrder(OrderID: Integer): Boolean
Используя броузер или диаграмму Классов, введите следующую сигнатуру операций класса TransactionMgr:
SaveOrder(OrderID: Integer): Boolean
Commit(): Integer
Добавление ассоциаций Нажмите кнопку панели инструментов Unidirectional Association.
Нарисуйте ассоциацию от класса ВыборЗаказа (OrderOptions) к классу ДеталиЗаказа (OrderDetail).
Повторите этапы 1 и 2, создав еще ассоциации:
# От класса OrderDetail к классу МенеджерЗаказов (OrderMgr)
# От класса OrderMgr к классу Заказ (Order)
# От класса OrderMgr к классу МенеджерТранзакций (TransactionMgr)
# От класса TransactionMgr к классу Order
# От класса TransactionMgr к классу ПозицияЗаказа (OrderItem)
# От класса Order к классу OrderItem
Щелкните правой кнопкой мыши на однонаправленной ассоциации между классами OrderOptions и OrderDetail, со стороны класса OrderOptions.
В открывшемся меню выберите пункт Multiplicity > Zero or One.
Щелкните правой кнопкой мыши на другом конце однонаправленной ассоциации.
В открывшемся меню выберите пункт Multiplicity > Zero or One.
Повторите этапы 4-7, добавив на диаграмму значения множественности для остальных ассоциаций, как показано на рис.32.
Задание
Добавьте связи между классами на диаграмме классов для модели программного обеспечения, в соответствии с вариантом задания. Контрольные вопросы
Что представляет собой ассоциация?
В чем смысл множественности ассоциаций?
В чем отличие атрибутов от ассоциаций?
Что представляет собой операция класса?
Рис.32 - Ассоциации сценария "Ввести новый заказ"
|