Проектный практикум. Учебное пособие для студентов, обучающихся по направлению 230700. 62 При кладная информатика
Скачать 1.9 Mb.
|
Описание состояний 1. Дважды щелкните мышью на состоянии Initialization (Инициали- зация). 2. Перейдите на вкладку Detail (Подробно). 3. Щелкните правой кнопкой мыши в окне Actions (Действия). 4. В открывшемся меню выберите пункт Insert (Вставить). 5. Дважды щелкните мышью на новом действии. 6. Назовите его Store order date (Сохранить дату заказа). 7. Убедитесь, что в окне When (Когда) указан пункт On Entry (На входе). 8. Повторив шаги 3 — 7, добавьте следующие действия: 79 Collect customer info (Собрать клиентскую информацию), в окне When укажите Entry until Exit (Выполнять до завершения) Add order items (Добавить к заказу новые позиции), укажите Entry until Exit (Выполнять до завершения) 9. Нажмите два раза на ОК, чтобы закрыть спецификацию. 10. Дважды щелкните мышью на состоянии Cancelled (Отменен). 11. Повторив шаги 2 — 7, добавьте действие: Store cancellation data (Сохранить дату отмены), укажите On Exit (На выходе) 12. Нажмите два раза на ОК, чтобы закрыть спецификацию. 13. Дважды щелкните мышью на состоянии Filled (Выполнен). 14. Повторив шаги 2 — 7, добавьте действие: Bill customer (Выписать счет), укажите Entry until Exit 15. Нажмите два раза на ОК, чтобы закрыть спецификацию. Добавление переходов 1. Нажмите кнопку Transition (Переход) панели инструментов. 2. Щелкните мышью на начальном состоянии. 3. Проведите линию перехода к состоянию Initialization (Инициали- зация). 4. Повторив шаги с первого по третий, создайте следующие перехо- ды: От состояния Initialization (Инициализация) к состоянию Pending (Выполнение заказа приостановлено) От состояния Pending (Выполнение заказа приостановлено) к со- стоянию Filled (Выполнен) От суперсостояния к состоянию Cancelled (Отменен) От состояния Cancelled (Отменен) к конечному состоянию От состояния Filled (Выполнен) к конечному состоянию 80 5. На панели инструментов нажмите кнопку Transition to Self (Пере- ход к себе). 6. Щелкните мышью на состоянии Pending (Выполнение заказа приостановлено). Описание переходов 1. Дважды щелкнув мышью на переходе от состояния Initialization (Инициализация) к состоянию Pending (Выполнение заказа приостановлено), откройте окно спецификации перехода. 2. В поле Event (Событие) введите фразу Finalize order (Выполнить заказ). 3. Щелкнув на кнопке ОК, закройте окно спецификации. 4. Повторив шаги с первого по третий, добавьте событие Cancel Or- der (Отменить заказ) к переходу между суперсостоянием и состоянием Can- celled (Отменен). 5. Дважды щелкнув мышью на переходе от состояния Pending (Вы- полнение заказа приостановлено) к со стоянию Filled (Выполнен), откройте окно его спецификации. 6. В поле Event (Событие) введите фразу Add order item (Добавить к заказу новую позицию). 7. Перейдите на вкладку Detail (Подробно). 8. В поле Condition (Условие) введите No unfilled items remaining (He осталось незаполненных позиций). 9. Щелкнув на кнопке ОК, закройте окно спецификации. 10. Дважды щелкните мышью на рефлексивном переходе (Transition to Self) состояния Pending (Выполнение заказа приостановлено). 11. В поле Event (Событие) введите фразу Add order item (Добавить к заказу новую позицию). 12. Перейдите на вкладку Detail (Подробно). 81 13. В поле Condition (Условие) введите Unfilled items remaining (Ос- таются незаполненные позиции). 14. Щелкнув на кнопке ОК, закройте окно спецификации. 1.6. Диаграммы компонентов Продолжим разработку проекта системы обработки заказов. На данный момент уже определены все классы, требуемые для варианта использования "Ввести новый заказ". По мере реализации других вариантов использования на диаграмму следует добавлять новые компоненты. Упражнение 8. Создание диаграммы компонентов Постановка задачи Построить диаграммы Компонентов. В качестве языка программиро- вания выбрать C++. Этапы выполнения упражнения Создание пакетов компонентов 1. Щелкните правой кнопкой мыши на представлении компонентов в браузере. 2. В открывшемся меню выберите пункт New > Package (Создать > Пакет). 3. Назовите пакет Entities (Сущности). 4. Повторив шаги с первого по третий, создайте пакеты Boundaries (Границы) и Control (Управление). Добавление пакетов на Главную диаграмму Компонентов 1. Откройте Главную диаграмму Компонентов, дважды щелкнув на ней мышью. 2. Перетащите пакеты Entities, Boundary и Control из браузера на Главную диаграмму. 82 Отображение зависимостей между пакетами 1. Нажмите кнопку Dependency (Зависимость) панели инструмен- тов. 2. Щелкните мышью на пакете Boundaries Главной диаграммы Компонентов. 3. Проведите линию зависимости к пакету Control. 4. Повторив шаги 1 — 3, проведите зависимость от пакета Control к пакету Entities. В окончательном виде Главная диаграмма Компонентов представлена на рис. 35. Рис. 35. Главная диаграмма компонентов системы Добавление компонентов к пакетам и отображение зависимостей 1. Дважды щелкнув мышью на пакете Entities Главной диаграммы Компонентов, откройте Главную диаграмму Компонентов этого пакета. 2. Нажмите кнопку Package Specification (Спецификация пакета) панели инструментов. 3. Поместите спецификацию пакета на диаграмму. 4. Введите имя спецификации пакета — OrderItem. 83 5. Повторив шаги 2—4, добавьте спецификацию пакета Order. 6. Нажмите кнопку Package Body (Тело пакета) панели инструмен- тов. 7. Поместите его на диаграмму. 8. Введите имя тела пакета — OrderItem. 9. Повторив шаги 6 — 8, добавьте тело пакета Order. 10. Нажмите кнопку Dependency (Зависимость) панели инструмен- тов. 11. Щелкните мышью на теле пакета OrderItem. 12. Проводите линию зависимости к спецификации пакета OrderItem. 13. Повторив шаги 10 — 12, добавьте линию зависимости между те- лом пакета Order и спецификацией пакета Order. 14. Повторив шаги 10 — 12. добавьте линию зависимости от специ- фикации пакета Order к спецификации пакета Orderltem (рис. 36). 15. С помощью описанного метода создайте следующие компоненты и зависимости: Для пакета Boundaries (рис. 37): Спецификацию пакета OrderOptions Тело пакета OrderOptions Спецификацию пакета OrderDetail Тело пакета OrderDetail Зависимости в пакете Boundaries: От тела пакета OrderOptions к спецификации пакета OrderOptions От тела пакета OrderDetail к спецификации пакета OrderDetail От спецификации пакета OrderOptions к спецификации пакета OrderDetail Для пакета Control: Спецификацию пакета OrderMrg 84 Тело пакета OrderMrg Спецификацию пакета TransactionMrg Тело пакета TransactionMrg Зависимости в пакете Control: От тела пакета OrderMrg к спецификации пакета OrderMrg От тела пакета TransactionMrg к спецификации пакета Transac- tionMrg От спецификации пакета OrderMrg к спецификации пакета Trans- actionMrg (рис. 38). Рис. 36. Диаграмма компонентов пакета Entities 85 Рис. 37. Диаграмма компонентов пакета Boundaries Рис. 38. Диаграмма компонентов пакета Control Создание диаграммы Компонентов системы 1. Щелкните правой кнопкой мыши на представлении Компонентов в браузере. 86 2. В открывшемся меню выберите пункт New > Component Diagram (Создать > Диаграмма Компонентов). 3. Назовите новую диаграмму System. 4. Дважды щелкните на этой диаграмме мышью. Размещение компонентов на диаграмме Компонентов системы 1. Разверните в браузере пакет компонентов Entities, чтобы открыть его. 2. Щелкните мышью на спецификации пакета Order в пакете ком- понентов Entities. 3. Перетащите эту спецификацию на диаграмму. 4. Повторив шаги 2 и 3, поместите на диаграмму спецификацию па- кета OrderItem. 5. С помощью этого метода поместите на диаграмму следующие компоненты: Из пакета компонентов Boundaries: Спецификацию пакета OrderOptions Спецификацию пакета OrderDetail Из пакета компонентов Control: Спецификацию пакета OrderMgr Спецификацию пакета TransactionMgr Спецификацию задачи OrderClientExe Спецификацию задачи OrderServerExe 6. Нажмите кнопку Task Specification (Спецификация задачи) пане- ли инструментов. 7. Поместите на диаграмму спецификацию задачи и назовите ее Or- derClientExe. 8. Повторите шаги 6 и 7 для спецификации задачи OrderServerExe. 87 Добавление оставшихся зависимостей на диаграмму Компонентов системы Уже существующие зависимости будут автоматически показаны на диаграмме Компонентов системы после добавления туда соответствующих компонентов. Теперь нужно добавить остальные зависимости. 1. Нажмите кнопку Dependency (Зависимость) панели инструмен- тов. 2. Щелкните мышью на спецификации пакета OrderDetail. 3. Проведите линию зависимости к спецификации пакета OrderMgr. 4. Повторив шаги 1 — 3, создайте следующие зависимости: От спецификации пакета OrderMrg к спецификации пакета Order От спецификации пакета TransactionMrg к спецификации пакета OrderItem От спецификации пакета TransactionMrg к спецификации пакета Order От спецификации задачи OrderClientExe к спецификации пакета OrderOptions От спецификации задачи OrderServerExe к спецификации пакета OrderMrg. Окончательный вид диаграммы компонентов системы приведен на рис.39. Соотнесение классов с компонентами 1. В Логическом представлении браузера найдите класс Order паке- та Entities. 2. Перетащите этот класс на спецификацию пакета компонента Or- der в представлении Компонентов браузера. В результате класс Order будет соотнесен со спецификацией пакета компонента Order. 88 3. Перетащите класс Order на тело пакета компонента Order в пред- ставлении Компонентов браузера. В результате класс Order будет соотнесен с телом пакета компонента Order. 4. Повторив шаги 1 — 3, соотнесите классы со следующими компо- нентами: • Класс OrderItem со спецификацией пакета OrderItem • Класс OrderItem с телом пакета OrderItem • Класс OrderOptions со спецификацией пакета OrderOptions • Класс OrderOptions с телом пакета OrderOptions • Класс OrderDetail со спецификацией пакета OrderDetail • Класс OrderDetail с телом пакета OrderDetail • Класс OrderMrg со спецификацией пакета OrderMrg • Класс OrderMrg с телом пакета OrderMrg • Класс TransactionMrg со спецификацией пакета TransactionMrg • Класс TransactionMrg с телом пакета TransactionMrg. 89 Рис. 39. Диаграмма компонентов системы 1.7. Диаграмма размещения Упражнение 9. Создание диаграммы Размещения для системы об- работки заказов. Постановка задачи В предыдущих упражнениях по разработке учебного проекта Варианты использования, взаимодействие между объектами и компоненты описаны. Тем не менее подразделениям обслуживания создаваемой системы необходимо знать, на каких компьютерах будут размещаться различные ком- 90 поненты системы. В связи с этим необходимо разработать диаграмму Разме- щения для системы обработки заказов. Создание диаграммы Размещения Разработайте диаграмму Размещения для системы обработки заказов. Готовая диаграмма Размещения показана на рис. 40. Рис. 40. Диаграмма размещения для системы обработки заказов Последовательность выполнения упражнения Добавление узлов к диаграмме Размещения 1. Дважды щелкнув мышью на представлении Размещения в брау- зере, откройте диаграмму Размещения. 2. Нажмите кнопку Processor (Процессор) панели инструментов. 3. Щелкнув мышью на диаграмме, поместите туда процессор. 4. Введите имя процессора "Сервер базы данных". 5. Повторив шаги 2 — 4, добавьте следующие процессоры: 91 Сервер приложения Клиентская рабочая станция №1 Клиентская рабочая станция №2 6. На панели инструментов нажмите кнопку Device (Устройство). 7. Щелкнув мышью на диаграмме, поместите туда устройство. 8. Назовите его "Принтер". Добавление связей 1. Нажмите кнопку Connection (Связь) панели инструментов. 2. Щелкните мышью на процессоре "Сервер базы данных". 3. Проведите линию связи к процессору "Сервер приложения". 4. Повторив шаги 1 — 3, добавьте следующие связи: От процессора "Сервер приложения‖ к процессору "Клиентская ра- бочая станция №1 От процессора "Сервер приложения" к процессору "Клиентская ра- бочая станция №2" От процессора "Сервер приложения" к устройству "Принтер" Добавление процессов 1. Щелкните правой кнопкой мыши на процессоре "Сервер прило- жения" в браузере. 2. В открывшемся меню выберите пункт New > Process (Создать > Процесс). 3. Введите имя процесса — OrderServerExe. 4. Повторив шаги 1 — 3, добавьте процессы: • Процесс OrderClientExe на процессоре "Клиентская рабочая станция №1" • Процесс ATMCIientExe на процессоре "Клиентская рабочая стан- ция №2" Отражение процессов на диаграмме 92 1. Щелкните правой кнопкой мыши на процессоре "Сервер прило- жения". 2. В открывшемся меню выберите пункт Show Processes (Показать процессы). 3. Повторив шаги 1 и 2, покажите процессы на следующих процес- сорах: Клиентская рабочая станция №1 Клиентская рабочая станция №2 1.8. Генерация программного кода В предыдущих упражнениях была создана модель для системы обра- ботки заказов. Теперь необходимо сгенерировать программный код C++ для этой системы. С этой целью воспользуемся диаграммой Компонентов системы, представленной на рисунке 39. Для генерации про- граммного кода необходимо выполнить описанные ниже шаги. Упражнение 10. Генерация кода C++ Этапы выполнения упражнения Ввод тел пакетов на диаграмму Компонентов системы 1. Откройте диаграмму Компонентов системы. 2. Выберите в браузере Entities: тело пакета Order. 3. "Перетащите" тело пакета Order на диаграмму Компонентов сис- темы. 4. Повторите пункты 2 и 3 для следующих компонентов: Entities: тело пакета OrderItem. Boundaries: тело пакета OrderOptions. Boundaries: тело пакета OrderDetail. Control: тело пакета TransactionMrg. Control: тело пакета OrderMrg. 93 В окончательном виде после выполнения перечисленных опера- ций диаграмма компонентов системы будет иметь вид, приведен- ный на рис. 41. Установка языка C++ 1. Откройте спецификацию компонента Order (спецификацию паке- та) в пакете компонентов Entities. 2. Выберите в качестве языка C++. 3. Повторите подпункты 1 и 2 для следующих компонентов: Entities: тело пакета Order. Entities: спецификация пакета OrderItem. Entities: тело пакета OrderItem. Boundaries: спецификация пакета OrderOptions. Boundaries: тело пакета OrderOptions. Boundaries: спецификация пакета OrderDetail. Boundaries: тело пакета OrderDetail. Control: спецификация пакета Transaction Mrg. Control: тело пакета TransactionMrg. Control: спецификация пакета OrderMrg. Control: тело пакета OrderMrg. Спецификация задачи OrderClientExe. Спецификация задачи OrderServerExe. 94 Рис. 41. Диаграмма Компонентов системы Упражнение 11. Генерация программного кода 1. Откройте диаграмму Компонентов системы. 2. Выполните проверку модели (Tools > Check Model). 3. Если система обнаружила ошибки в модели, устраните их. 2. Выберите все объекты на диаграмме Компонентов системы. 3. Выберите в меню Tools > ANSI C++ > Code Generation. 95 4. Откройте для просмотра сгенерированный код (Tools > ANSI C++ > Browse Header, Tools > ANSI C++ > Browse Body). Файл OrderOptions.h #ifndef ORDEROPTIONS_H_HEADER_INCLUDED_B1720E4D #define ORDEROPTIONS_H_HEADER_INCLUDED_B1720E4D //##ModelId=4E6CAD7E000F class OrderOptions { public : //##ModelId=4E6CB29803D8 Boolean Create(); }; #endif /* ORDEROPTIONS_H_HEADER_INCLUDED_B1720E4D */ Файл OrderOptions.cpp #include "OrderOptions.h" //##ModelId=4E6CB29803D8 Boolean OrderOptions::Create() { } Файл Order Detail.h #ifndef ORDER_DETAIL_H_HEADER_INCLUDED_B17213B5 #define ORDER_DETAIL_H_HEADER_INCLUDED_B17213B5 //##ModelId=4E6CAE330167 class Order Order Detail { public : //##ModelId=4E6CB2E9001F Boolean Open(); //##ModelId=4E6CB3C80138 96 Boolean SubmitInfo(); //##ModelId=4E6CB756003E Boolean Save(); }; #endif /* ORDER_DETAIL_H_HEADER_INCLUDED_B17213B5 */ Файл Order Detail.cpp #include "Order Detail.h" //##ModelId=4E6CB2E9001F Boolean Order Order Detail::Open() { } //##ModelId=4E6CB3C80138 Boolean Order Order Detail::SubmitInfo() { } //##ModelId=4E6CB756003E Boolean Order Order Detail::Save() { } 1.9. Проектирование базы данных Упражнение 12. Проектирование реляционной базы данных Проектирование БД состоит из следующих шагов. Шаг 1. Создание нового компонента - базы данных: 1. Щелкните правой кнопкой мыши по представлению компонен- тов. 2. Выберите пункт Data Modeler > New > Database в открывшемся меню. 97 3. Откройте окно спецификации вновь созданного компонента DB_0 и в списке Target выберите Oracle 8.x (рис. 42). Рис. 42. Окно спецификации базы данных Ш а г 2. Определение устойчивых (persistent) классов: 1. Откройте окно спецификации класса Order в пакете Entities. 2. Перейдите на вкладку "Detail". 3. Установите значение переключателя Persistence в Persistent. 4. Проделайте такие же действия для класса OrderItem. 5. Откройте класс OrderItem в браузере. 6. Щелкните правой кнопкой мыши по атрибуту ItemID. 7. Выберите пункт Data Modeler > Part of Object Identity в от- крывшемся меню (указание атрибута в качестве части первично- го ключа). Ш а г 3. Создание схемы БД: 98 1. Щелкните правой кнопкой мыши по пакету Entities. 2. Выберите пункт Data Modeler > Transform to Data Model в открывшемся меню. 3. Укажите DB_0 и щелкните по кнопке ОК в появившемся окне в списке Target Database. В результате в логическом представлении появится новый пакет Schemas. 4. Откройте пакет Schemas и щелкните правой кнопкой мыши по пакету < Выберите пункт Data Modeler > New > Data Model Diagram в от- крывшемся меню. 6. Откройте пакет, затем вновь созданную диаграмму "сущность- связь" NewDiagram и перенесите на нее все классы-таблицы, находящиеся в пакете < |