Задания. Методические рекомендации по выполнению практических
Скачать 2.15 Mb.
|
Задание 4. Уточнение методов и свойств классов. В этом упражнении к описаниям операций будут добавлены детали, включая параметры и типы возвращаемых значений, и определены атрибуты классов Постановка проблемы Для определения атрибутов классов был проанализирован поток событий. В результате к классу Заказ диаграммы Классов были добавлены атрибуты Номер заказа и Имя клиента. Так как в одном заказе можно указать большое количество товаров и у каждого из них имеются свои собственные данные и поведение, было решено моделировать товары как самостоятельные классы, а не как атрибуты класса Заказ. Добавление атрибутов и операций Добавим атрибуты и операции к классам диаграммы Классов "Ввод нового заказа". При этом используем специфические для языка особенности. Установим параметры так, чтобы показывать все атрибуты, все операции и их сигнатуры. Применим нотацию UML. Этапы выполнения Настройка 1. В меню модели выберите пункт Тооls > Options (Инструменты >Параметры). 2. Перейдите на вкладку Diagram. 3. Убедитесь, что флажок Show visibility (Показать видимость) установлен. 4. Убедитесь, что флажок Show stereotyps (Показать стереотипы) установлен. 5. Убедитесь, что флажок Show operation signatures (Показать сигнатуры операций) установлен. 6. Убедитесь, что флажки Show all attributes (Показать все атрибуты) и Show all operations (Показать вое операции) установлены. 7. Убедитесь, что флажки Suppress attributes (Подавить атрибуты) и Suppress operations (Подавить операции) сброшены. 8. Перейдите на вкладку Notation (Нотация). 9. Убедитесь, что флажок Visibility as icons (Отображать пиктограммы) сброшен. Добавление нового класса 1. Найдите в браузере диаграмму Классов варианта использования "Ввести новый заказ". 2. Дважды щелкнув мышью на диаграмме, откройте ее. 3. Нажмите кнопку С1аss панели инструментов. 4. Щелкните мышью внутри диаграммы, чтобы поместить туда новый класс. 5. Назовите его Позиц_заказа. 6. Назначьте этому классу стереотип Entity. 7. В браузере перетащите класс в пакет Сущности. Добавление атрибутов 1. Щелкните правой кнопкой мыши на классе Заказ. 2. В открывшемся меню выберите пункт New Attribute (Создать атрибут), 3. Введите новый атрибут: OrderNumber : Integer 4. Нажмите клавишу Enter 5. Введите следующий атрибут: CustomerName : String. 6. Повторив шаги 4 и 5, добавьте атрибуты: OrderDate : Date OrderFillDate : Date Если тип атрибута не появляется в выпадающем списке, то введите его от руки и он далее будет появляться. 7. Щелкните правой кнопкой мыши на классе Позиц_заказа. 8. В открывшемся меню выберите пункт New Attribute (Создать атрибут). 9. Введите новый атрибут: ItemID : Integer. 10. Нажмите клавишу Enter. 11. Введите следующий атрибут: ItemDescription : String. Добавление операций к классу Позиц_заказа 1. Щелкните правой кнопкой мыши на классе Позиц_заказа. 2. В открывшемся меню выберите пункт New Opration (Создать операцию). 3. Введите новую операцию: Создать() 4. Нажмите клавишу Enter. 5. Введите следующую операцию: Взять_информацию() 6. Нажмите клавишу Enter. 7. Введите операцию: Дать_информацию() Подробное описание операций с помощью диаграммы Классов 1. Щелкнув мышью на классе Заказ, выделите его. 2. Щелкните на этом классе еще раз, чтобы переместить курсор внутрь. 3. Отредактируйте операцию Создать(), чтобы она выглядела следующим образом: Создать() : Воо1еаn 4. Отредактируйте операцию Взять_информацию: Взять_информацию (OrderNum : Integer, Customer : String, OrderDate : Date, FillDate : Date): Boolean 5. Отредактируйте операцию Дать_информацию; Дать_информацию(): String Подробное описание операций с помощью браузера 1. Найдите в браузере класс Позиц_заказа. 2. Раскройте этот класс, щелкнув на значке "+" рядом с ним. В браузере появятся атрибуты и операции класса. 3. Дважды щелкнув мышью на операции Дать_информацию() , откройте окно ее спецификации: 4. В раскрывающемся списке Return class (Возвращаемый класс) укажите String. 5. Щелкнув мышью на кнопке ОК, закройте окно спецификации операции. 6. Дважды щелкните в браузере на операции Дать_информацию () класса Позиц_заказа, чтобы открыть окно ее спецификации. 7. В раскрывающемся списке Return class укажите Воо1еаn. 8. Перейдите на вкладку Detail(Подробно). 9. Щелкните правой кнопкой мыши в области аргументов, чтобы добавить туда новый параметр: 10. В открывшемся меню выберите пункт Insert (Вставить). Rose добавит аргумент под названием argname. 11. Щелкнув один раз на этом слове, выделите его и измените имя аргумента на ID. 12. Щелкните на колонке Туре (Тип). В раскрывающемся списке типов выберите Integer (Если этого либо иного необходимого типа не будет- введите его вручную). 13. Щелкните на колонке Default (По умолчанию), чтобы добавить значение аргумента по умолчанию. Введите число 0. 14. Нажав на кнопку ОК, закройте окно спецификации операции. 15. Дважды щелкните на операции Создать() класса Позиц_заказа, чтобы открыть окно ее спецификации. 16. В раскрывающемся списке Return class укажите Воо1еаn. 17. Нажав на кнопку ОК, закройте окно спецификации операции. Подробное описание операций 1. Используя браузер или диаграмму Классов, введите следующие сигнатуры операций класса Заказ_деталей: Открыть() : Boolean Сохранить заказ() : Boolean 2. Используя браузер или диаграмму Классов, введите сигнатуру операций класса Выбор_заказа: Создать() : Воо1еаn 3. Используя браузер или диаграмму Классов, введите сигнатуру операций класса Упр_заказами: Сохранить заказ(OrderID : Integer) : Воо1еаn 4. Используя браузер или диаграмму Классов, введите сигнатуры операций класса Упр_транзакциями: Сохранить заказ(OrderID : Integer) : Boolean Сохранить информацию() : Integer Задание 5. Описание связей между классами В этом упражнении определяются связи между классами, участвующими в варианте использования "Ввести новый заказ". Постановка задачи Чтобы найти связи, были просмотрены диаграммы Последовательности. Все взаимодействующие там классы нуждались в определении соответствующих связей на диаграммах Классов. После обнаружения связи были добавлены на диаграммы классов. Добавление связей Добавим связи к классам, принимающим участие в варианте использования "Ввести новый заказ". Этапы выполнения упражнения Настройка 1. Найдите в браузере диаграмму Классов "Ввод нового заказа", 2. Дважды щелкнув на диаграмме, откройте ее. 3. Проверьте, имеется ли в панели инструментов диаграммы кнопка Unidirectional Association (Однонаправленная ассоциация). Если ее нет, продолжите настройку, выполнив шаги 4 и 5. Если есть, приступайте к выполнению самого упражнения. 4. Щелкните правой кнопкой мыши на панели инструментов диаграммы и в открывшемся меню выберите пункт Customize(Настроить), 5. Добавьте на панель кнопку Creates A Unidirectional Association (Создать однонаправленную ассоциацию). Добавление ассоциаций 1. Нажмите кнопку Unidirectional Association панели инструментов. 2. Проведите ассоциацию от класса выбор_заказа к классу заказ_деталей. 3. Повторите шаги 1 и 2, создав ассоциации: • От класса заказ_деталей к классу упр_заказами • От класса упр_заказами к классу Заказ • От класса упр_заказами к классу упр_транзакциями • От класса упр_транзакциями к классу Заказ • От класса упр_транзакциями к классу Позиц_заказа • От класса Заказ к классу Позиц_заказа 4. Щелкните правой кнопкой мыши на однонаправленной ассоциации между классами выбор_заказа и заказ_деталей класса выбор_заказа. 5. В открывшемся меню выберите пункт Multiplicity > Zero or One (Множественность >- Нуль или один), 6. Щелкните правой кнопкой мыши на другом конце однонаправленной ассоциации. 7. В открывшемся меню выберите пункт Multiplicity > Zero or One (Множественность > Нуль или один), 8. Повторите шаги 4—7, добавив на диаграмму значения множественности для остальных ассоциаций, как показано на рис. 10 Рис. 10 Ассоциации сценария "Ввести новый заказ" Задание 6. Исключение кириллизованного текста в информации классов. Разработанные ранее модели, предназначенные для описания предметной области используют кириллизованную символику, недопустимую для большинства языков программирования. Выполните замену русского текста на латинский шрифт. Для этой цели сохраните предыдущую модель под другим именем и далее работайте с новым файлом (что бы при необходимости можно было бы вернуться к бизнес- процессам, описанным русским шрифтом). Этапы выполнения Этап 1. Используя меню (Файл-> Сохранить как) сохраните данную модель под другим именем (например Заказ1) в той же папке, что и исходная модель. Работайте далее с копией модели (то есть Заказ1). Этап 2. Переименуйте классы и их спецификации таким образом, чтобы использовался только латинский шрифт. Замените имя класса Заказ_деталей на OrderDetail Выбор_заказа на OrderОptions Заказ на Order Упр_заказами на OrderMgr Позиц_заказа на OrderItem Упр_транзакциями на TransactionMgr Измените имена операций таким образом, чтобы рис.10 преобразовался в рис. 11. Для этого, измените операцию класса OrderОptions Открыть() на Open() Класса OrderDetail Открыть() на Open() Сохранить заказ() на Save() Класса Order Ввести номер заказа, заказчика и число заказываемых предметов() на SetInfo() Сохранить_заказ() на Save() Класса OrderMgr Сохранить заказ() на SaveOrder() Класса TransactionMgr Сохранить заказ() на SaveOrder() Сохранить информацию о заказе() на Commit() Создать_заказ() на SubmitInfo() Класса OrderItem Создать() на Create() Взять_информацию() на GetInfo() Дать_информацию на SetInfo() Переименуйте имена пакетов Границы на Boundaries Сущности на Entity Контроль на Control Добавление стереотипов к классам 1. Щелкните правой кнопкой мыши на классе OrderOptions диаграммы. 2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию). 3. В поле стереотипа выберите из выпадающего списка слово Boundary (если его нет, то введите). 4. Нажмите на кнопку ОК. 5. Повторив шаги 1—4, свяжите классы OrderDetail со стереотипом Boundary, OrderMgr и TransactionMgr со стереотипом Control, а класс Order и OderItem— со стереотипом Entity. Теперь диаграмма Классов должна иметь вид, показанный на рис. 11. Рис. 11 Основная диаграмма классов Замечание. На диаграмме рис. 11 возможно визуальное представление классов не в виде иконок, а в виде дополнительной строки текста с именем стереотипа. За этот вид отвечает метка установленная либо на icon либо на label (Class> Open Specefication> Options> Label) Лабораторная работа №4 «Построение диаграммы компонентов» Цель работы: исследование процесса построения диаграммы компонентов и в заданной предметной области с помощью пакета Rational Rose Задание 1. Построение диаграммы Компонентов Этапы выполнения Так как эта модель связана с конкретным языком программирования, то в настройках это необходимо отметить. Выполнить Tools>Options>Notations>Default Language и из выпадающего списка языков программирования выбрать Delphi. Создание пакетов компонентов 1. Щелкните правой кнопкой мыши на представлении компонентов в браузере. 2. В открывшемся меню выберите пункт New > Package (Создать > Пакет}. 3. Назовите пакет Entities (Сущности). 4. Повторив шаги с первого по третий, создайте пакеты Boundaries (Границы) и Control (Управление). Добавление пакетов на Главную диаграмму Компонентов 1. Откройте Главную диаграмму Компонентов, дважды щелкнув на ней мышью, 2. Перетащите пакеты Entities, Boundary и Control из браузера на Главную диаграмму. Отображение зависимостей между пакетами 1. Нажмите кнопку Dependency (Зависимость) панели инструментов. 2. Щелкните мышью на пакете Boundary Главной диаграммы Компонентов. 3. Проведите линию зависимости к пакету Control. 4. Повторив шаги 1 — 3, проведите зависимость от пакета Control к пакету Entities. В результате диаграмма примет вид рис. 12 Рис. 12 Зависимости между пакетами Добавление компонентов к пакетам и отображение зависимостей 1. Дважды щелкнув мышью на пакете Entities Главной диаграммы Компонентов, откройте Главную диаграмму Компонентов этого пакета. 2. Нажмите кнопку Package Specification (Спецификация пакета) панели инструментов. 3. Поместите спецификацию пакета на диаграмму. 4. Введите имя спецификации пакета — OrderItem_. 5. Повторив шаги 2—4, добавьте спецификацию пакета Order_. 6. Нажмите кнопку Dependency (Зависимость) панели инструментов. 7. Щелкните мышью на спецификации пакета OrderItem_. 8. Проведите линию зависимости к спецификации пакета OrderItem_. 9. С помощью описанного метода создайте следующие компоненты и зависимости: Для пакета Boundaries: • Спецификацию пакета Orderоptions_ • Спецификацию пакета OrderDetail_ Зависимости в пакете Boundaries: • От спецификации пакета Orderоptions_ к спецификации пакета OrderDetai_l Для пакета Control: • Спецификацию пакета OrderMgr_ • Спецификацию пакета TransactionMgr_ Зависимости в пакете Control: • От спецификации пакета OrderMgr_ к спецификации пакета TransactionMg_ Создание диаграммы Компонентов системы 1. Щелкните правой кнопкой мыши на представлении Компонентов в браузере. 2. В открывшемся меню выберите пункт New > Component Diagram (Создать > Диаграмма Компонентов). 3. Назовите новую диаграмму System. 4. Дважды щелкните на этой диаграмме мышью. Размещение компонентов на диаграмме Компонентов системы 1. Разверните в браузере пакет компонентов Entities, чтобы открыть его. 2. Щелкните мышью на спецификации пакета Order_ в пакете компонентов Entities. 3. Перетащите эту спецификацию на диаграмму. 4. Повторив шаги 2 и 3, поместите на диаграмму спецификацию пакета OrderItem_. 5. С помощью этого метода поместите на диаграмму следующие компоненты: Из пакета компонентов Boundaries: • Спецификацию пакета Orderоptions_ • Спецификацию пакета OrderDetail_ Из пакета компонентов Control: • Спецификацию пакета OrderMgr_ • Спецификацию пакета TransactionMgr_ 6. Нажмите кнопку Task Specification (Спецификация задачи) панели инструментов. 7. Поместите на диаграмму спецификацию задачи и назовите ее OrderClientExe. 8. Повторите шаги 6 и 7 для спецификации задачи OrderServerExe. Добавление оставшихся зависимостей на диаграмму Компонентов системы Уже существующие зависимости будут автоматически показаны на диаграмме Компонентов системы после добавления туда соответствующих компонентов. Теперь нужно добавить остальные зависимости. 1. Нажмите кнопку Dependency (Зависимость) панели инструментов. 2. Щелкните мышью на спецификации пакета OrderDetail_ 3. Проведите линию зависимости к спецификации пакета OrderDetail_ 4. Повторив шаги 1 — 3, создайте следующие зависимости: • От спецификации пакета OrderMgr_ к спецификации пакета Order_ • От спецификации пакета TransactionMgr_ к спецификации пакета OrderItem_ • От спецификации пакета TransactionMgr_ к спецификации пакета Order_ • От спецификации задачи OrderClientExe к спецификации пакета Orderоptions_ От спецификации задачи OrderServerExe к спецификации пакета OrderMg_r Соотнесение классов с компонентами 1. В Логическом представлении браузера найдите класс Order пакета Entities. 2. Перетащите этот класс на спецификацию пакета компонента Order_ в представлении Компонентов браузера, В результате класс Order будет соотнесен со спецификацией пакета компонента Order_. 3. Повторив шаги 1 — 2, соотнесите классы со следующими компонентами: • Класс OrderItem со спецификацией пакета OrderItem_ • Класс Orderоptions со спецификацией пакета Orderоptions_ • Класс OrderDetail со спецификацией пакета OrderDetai_l • Класс OrderMgr со спецификацией пакета OrderMgr_ • Класс TransactionMgr со спецификацией пакета TransactionMgr_ В результате в браузере после имени класса, в скобках появятся имена компонентов, с которыми этот класс связан (рис. 13) Рис. 13 Представление компонентов и классов в браузере Лабораторная работа №5 «Построение диаграмм потоков данных» Цель работы: исследование процесса построения диаграммы потоков данных и диаграммы размещения в заданной предметной области с помощью пакета Rational Rose и Delphi Задание 1. Кодогенерация проекта в Delphi. Теперь вся информация подготовлена к тому, чтобы запрограммировать классы с их методами и операциями. Для выполнения кодогенерации в среде Delphi необходимо выполнить следующую последовательность действий: - протестировать модель на логические непротиворечия; - настроить (или проверить настройки) среду на законы кодогенерации (соответствие элемента модели Rose элементу кода Delphi); - создать имя проекта Delphi и выполнить кодогенерацию. Этапы выполнения упражнения. 1) Протестируйте модель Tools->Ceck Model. Просмотрите log файл на наличие ошибок. Если файл не виден- выполните команду file->Save Log As и введите имя файла (по умолчанию error.log). Затем его просмотрите и, при необходимости, исправьте ошибки. К наиболее распространенным ошибкам относятся такие, как неотображение сообщений на операции или несоотнесение объектов с классами на диаграммах взаимодействия. С помощью пункта меню Check Model можно выявить большую часть неточностей и ошибок в модели. 2) Пункт меню Access Violations позволяет обнаружить нарушения правил доступа, возникающие тогда, когда существует связь между двумя классами разных пакетов. При этом связи между самими пакетами нет. Например, если существует связь между классами Order пакета Entities и OrderManager пакета Control, то обязательно должна существовать и связь между пакетами Entities и Control. Если последняя связь не установлена, Rose выявит нарушение правил доступа. Чтобы обнаружить нарушение правил доступа: Выберите в меню Report > Show Access Violations. Проанализируйте все нарушения правил доступа. 3) Выполните Tools>Options>Notation>Default Language и из выпадающего списка выберите язык программирования Delphi. 4) Проверьте правильность установок кодогенерации по умолчанию (default). Для этого выполните Tools->Options->Delphi и последовательно переберите из выпадающего списка поля Type все элементы. Сравните установки в поле Model Propities с данными (default) из таблицы Приложения A. В случае несоответствия- исправьте. 5) Выполните Tools> Ensemble Tools>Rose Delphi Link (рис.14) Рис. 14. Меню для выбора процесса кодогенерации В результате появится соответствующая экранная форма. Выполните на этой форме File>New Proect. Появится форма с браузером. Введите имя файла и место на диске, куда будет сохранено имя сгенерированного проекта в Delphi. Например, NewProect.dpr и нажмите Открыть. В результате форма примет вид (рис. 15) Рис. 15. Представление результатов кодогенерации в окне Rose Delphi Link 5. Через проводник Windows найдите папку проекта Delphi. С помощью программы Блокнот просмотрите содержимое всех файлов. В приложении B к руководству приведено содержимое всех файлов проекта. |