Повторное использование библиотеки ActiveX
В этом разделе полученная библиотека будет использоваться для другого приложения с учетом всех этапов анализа и проектирования, рекомендованных в книге. Задача состоит в следующем. Вам нужно создать приложение, которое будет выводить зарплату служащего. Пользователь приложения — управляющий. Вы должны работать с программной библиотекой, предоставленной отделом оплаты труда (то есть созданной ранее DLL). Начнем с новой пустой модели.
Последовательность создания диаграммы прецедентов:
1. Щелкните по значку «+» слева от названия раздела Use Case View (Представление прецедентов) в окне браузера.
2. Дважды щелкните по диаграмме Main (Главная диаграмма) в разделе Use Case View (Представление прецедентов), чтобы открыть ее.
3. Щелкните по кнопке Actor (Актер) на панели инструментов, а затем по диаграмме, чтобы поместить на нее актера.
4. Введите имя нового актера — Manager.
5. Щелкните правой кнопкой мыши по изображению актера на диаграмме.
6. В появившемся контекстно-зависимом меню выберите команду Options => Stereotype display => Icon (Параметры => Отображение стереотипа => Значок).
7. Щелкните по кнопке Use Case (Прецедент) на панели инструментов, а затем по диаграмме, чтобы поместить на нее прецедент.
8. Введите имя нового прецедента — Display Pay.
9. Щелкните по кнопке Unidirectional Association (Однонаправленная ассоциативная связь) на панели инструментов.
10. Щелкните по актеру Manager на диаграмме и проведите линию связи к прецеденту Display Pay.
Для создания диаграммы реализации прецедентов:
1. Щелкните правой кнопкой мыши по названию раздела Logical View (Логическое представление) в браузере.
2. В появившемся контекстно-зависимом меню выберите команду New => Use Case Diagram (Создать => Диаграмма прецедентов). В список браузера будет добавлена новая диаграмма.
3. Введите ее название — Realizations.
4. Дважды щелкните по диаграмме Realizations, чтобы открыть ее. Чтобы создать реализацию прецедента:
1. Щелкните по кнопке Use Case на панели инструментов, а затем по диаграмме, чтобы поместить на нее прецедент.
2. Дважды щелкните по прецеденту, чтобы открыть диалоговое окно настройки его параметров.
3. В поле ввода Name (Название) введите имя прецедента — Display Pay. Важно, чтобы вы указали название прецедента именно таким образом. В этом случае вы сообщите программе Rational Rose о необходимости использования другого пространства имен (namespace). Если ввести название прецедента непосредственно на диаграмме, программа сочтет, что это тот же прецедент Display Pay, что и в представлении прецедентов.
4. В открывающемся списке Stereotype (Стереотип) выберите стереотип use-case-realization (реализация прецедента).
5. Щелкните по кнопке OK, чтобы закрыть диалоговое окно настройки параметров.
6. На экране появится сообщение о том, что прецедент существует в нескольких пространствах имен. Это нормально. Щелкните по кнопке OK, чтобы закрыть сообщение.
7. Щелкните правой кнопкой мыши по прецеденту.
8. В появившемся контекстно-зависимом меню выберите команду Stereotype display => Icon (Отображение стереотипа => Значок).
Этапы создания диаграммы последовательности действий:
1. Щелкните правой кнопкой мыши по реализации прецедента Display Pay в списке браузера.
2. В появившемся контекстно-зависимом меню выберите команду New => Sequence Diagram (Создать => Диаграмма последовательности действий).
3. Введите название новой диаграммы — Display Pay for an Employee.
4. Дважды щелкните по созданной диаграмме последовательности действий, чтобы открыть ее.
Для добавления объектов и сообщений на диаграмму последовательности действий:
1. В списке браузера выберите актера Manager и перетащите его с помощью мыши на диаграмму последовательности действий.
2. Щелкните по кнопке Object (Объект) на панели инструментов, а затем по диаграмме последовательности действий, чтобы поместить на нее объект.
3. Введите имя объекта — aPayForm.
4. Щелкните по кнопке Object Message (Сообщение) на панели инструментов.
5. Щелкните по пунктирной линии для актера и проведите линию сообщения к пунктирной линии для объекта a Pay Form.
6. Ведите название сообщения — display pay for joe.
7. Щелкните по кнопке Object на панели инструментов, а затем по диаграмме последовательности действий, чтобы поместить на нее объект.
8. Введите имя объекта — Joe.
9. Щелкните по кнопке Object Message на панели инструментов.
10. Щелкните по пунктирной линии для объекта aPayForm и проведите линию сообщения к пунктирной линии для объекта Joe.
11. Введите название сообщения — get pay rate.
12. Щелкните по кнопке Object на панели инструментов, а затем по диаграмме последовательности действий, чтобы поместить на нее объект.
13. Введите имя объекта — aPayClerk.
14. Щелкните по пунктирной линии для объекта aPayForm и проведите линию сообщения к пунктирной линии для объекта aPayClerk.
15. Введите название сообщения — calculate pay for this rate.
16. Щелкните по кнопке Message to Self (Сообщение себе) на панели инструментов.
17. Щелкните по пунктирной линии для объекта aPayForm, чтобы добавить сообщение.
18. Введите название сообщения — display pay. Этапы создания классов PayrollForm и Employee:
1. Щелкните правой кнопкой мыши по названию раздела Logical View (Логическое представление) в браузере.
2. В появившемся контекстно-зависимом меню выберите команду New => Class (Создать => Класс).
3. Введите имя для нового класса — PayrollForm.
4. Щелкните правой кнопкой мыши по классу PayrollForm в браузере.
5. В появившемся контекстно-зависимом меню выберите команду Open Specification (Открыть параметры).
6. В открывающемся списке Stereotype выберите стереотип Form (Форма). Если вы не указали Visual Basic в качестве языка, используемого по умолчанию, данный стереотип будет недоступен. В таком случае можно либо пересоздать класс, установив перед этим язык, либо выбрать стереотип после привязки класса к компоненту с языком Visual Basic.
7. Щелкните по кнопке OK, чтобы закрыть окно настройки параметров класса.
8. Выберите класс PayrоlllForm в списке браузера и введите описание класса в окне Documentation (Описание) — this form displays the weekly pay of an employee.
9. Щелкните правой кнопкой мыши по названию раздела Logical View (Логическое представление)в браузере.
10. В появившемся контекстно-зависимом меню выберите команду New => Class (Создать => Класс).
11. Введите имя для нового класса — Employee.
12. Введите описание класса в окне Documentation (Описание) — an Employee is someone who is paid by the Company.
Для добавления динамической библиотеки к модели:
1. Щелкните по значку «+» слева от названия раздела Component View (Представление компонентов) в окне браузера.
2. Дважды щелкните по диаграмме компонентов Main (Главная диаграмма), чтобы открыть ее.
3. Откройте программу Проводник (Explorer) и найдите файл библиотеки PayrollCalculator.dll, созданный ранее.
4. Перетащите его на открытую диаграмму компонентов.
5. Выберите команду меню Full Import (Полный импорт).
Чтобы связать объекты с классами на диаграмме последовательности действий:
1. Если диаграмма последовательности действий Display Pay for an Employee закрыта, щелкните по ней правой кнопкой мыши в списке браузера, а в появившемся контекстно-зависимом меню выберите команду Open (Открыть).
2. Щелкните по значку «+» слева от названия раздела Logical View в окне браузера, чтобы открыть вложенный список.
3. Выберите класс PayrollForm и перетащите его на объект aPayForm.
4. Выберите класс Employee и перетащите его на объект Joe.
5. В окне браузера щелкните по значку «+» слева от названия раздела СОМ в разделе Logical View, чтобы открыть вложенный список.
6. В окне браузера щелкните по значку «+» слева от названия раздела Payroll Calculator в разделе Logical View, чтобы открыть вложенный список.
7. Выберите класс Payroll и перетащите его на объект aPayCierk.
Этапы связывания сообщений с операциями:
1. Сообщения, адресованные классу формы, не являются операциями. Они превратятся в поля формы, которые мы установим в программе Visual Basic. Щелкните правой кнопкой мыши по сообщению get pay rate и в появившемся контекстно-зависимом меню выберите команду (Создать операцию). На экране увидите диалоговое окно настройки параметров операции.
2. В поле Name (Название) введите имя операции — getRate.
3. В открывающемся списке Return Class (Возвращаемый класс) выберите Currency. Как и раньше, если вы не указали Visual Basic в качестве языка, используемого по умолчанию, тип Currency будет недоступен.
4. Щелкните по кнопке OK, чтобы закрыть окно настройки параметров операции.
5. Щелкните правой кнопкой мыши по сообщению calculate pay for this rate.
6. В появившемся контекстно-зависимом меню выберите команду IPayroll_calcPay.
Для создания диаграммы классов:
1. Щелкните по значку «+» слева от названия раздела Logical View в окне браузера, чтобы открыть вложенный список.
2. Дважды щелкните по диаграмме Main (Главная диаграмма), чтобы открыть ее.
3. Выберите команду меню Query => Add Classes (Запрос => Добавить классы). Разделом для добавления классов по умолчанию является Logical View.
4. Щелкните по кнопке All >> (Все), чтобы добавить на диаграмму классы PayrollForm и Employee.
5. В открывающемся списке Package (Пакет) выберите PayrollCalculator.
6. Щелкните по кнопке All>>, чтобы добавить на диаграмму класс IPayroll.
7. Щелкните по кнопке OK, чтобы закрыть диалоговое окно Add Classes (Добавить классы).
8. Щелкните по кнопке Unidirectional Association (Однонаправленная ассоциативная связь) на панели инструментов, а затем по классу PayrollForm и проведите линию связи к классу Employee.
9. Щелкните правой кнопкой мыши по линии связи рядом с классом Employee.
10. В появившемся контекстно-зависимом меню выберите команду Role Name (Название роли) и введите название роли — anEmployee.
11. Щелкните правой кнопкой мыши по линии связи рядом с классом Employee.
12. В появившемся контекстно-зависимом меню выберите команду Multiplicity: 1 (Мощность: 1).
13. Щелкните по кнопке Unidirectional Association на панели инструментов, затем по классу PayrollForm и проведите линию связи к классу Payroll. Укажите стереотип «coclass».
14. Щелкните правой кнопкой мыши по линии связи рядом с классом Payroll.
15. В появившемся контекстно-зависимом меню выберите команду Role Name (Название роли) и введите название роли — myPayClerk.
16. Щелкните правой кнопкой мыши по линии связи рядом с классом Payroll.
17. В появившемся контекстно-зависимом меню выберите команду Multiplicity: 1.
Последовательность установки параметров генерации кода с помощью программы Model Assistant Tool:
1. Щелкните правой кнопкой мыши по классу PayrollForm.
2. В появившемся контекстно-зависимом меню выберите команду Model Assistant.
3. Щелкните по значку «+» слева от свойства anEmployee в списке, чтобы открыть вложенный список.
4. Выберите элемент данных anEmployee.
5. Установите флажок New (Новый).
6. Щелкните по значку «+» слева от свойства myPayClerk в списке, чтобы открыть вложенный список.
7. Выберите элемент данных myPayClerk.
8. Установите флажок New (Новый).
9. Щелкните по кнопке OK, чтобы закрыть окно Model Assistant.
Этапы создания диаграммы компонентов:
1. Щелкните по значку «+» слева от названия раздела Component View (Представление компонентов) в окне браузера.
2. Дважды щелкните по диаграмме Main (Главная диаграмма), чтобы открыть ее.
3. Щелкните по кнопке Package (Пакет) на панели инструментов, а затем по диаграмме, чтобы поместить на нее пакет.
4. Введите название пакета — Manager Options.
5. В окне браузера щелкните по значку «+» слева от названия раздела СОМ в разделе Component View (Представление компонентов), чтобы открыть вложенный список.
6. В списке браузера выберите пакет PayrollCalculator в представлении компонентов и перетащите его на главную диаграмму компонентов.
7. Щелкните по кнопке Dependency (Отношение зависимости) на панели инструментов, затем по пакету Manager Options и перетащите линию связи к пакету PayrollCalculator.
8. Дважды щелкните по пакету Manager Options на диаграмме, чтобы открыть главную диаграмму компонентов пакета.
9. Щелкните по кнопке Component (Компонент) на панели инструментов, а затем на диаграмме, чтобы поместить на нее компонент.
10. Дважды щелкните по новому компоненту, чтобы открыть диалоговое окно настройки параметров компонента.
11. Введите имя компонента в поле ввода Name (Название) — DisplayPay.
12. Если вы не указали Visual Basic в качестве языка, используемого по умолчанию, выберите в открывающемся списке Language (Язык) язык Visual Basic.
13. В открывающемся списке Stereotype (Стереотип) выберите стереотип ЕХЕ.
14. Щелкните по кнопке OK, чтобы закрыть диалоговое окно настройки параметров компонента.
15. В списке браузера выберите класс PayrollForm в логическом представлении и перетащите его на компонент DisplayPay.
16. В списке браузера выберите класс Employee в логическом представлении и перетащите его на компонент DisplayPay.
17. В окне браузера щелкните по значку «+» слева от пакета PayrollCalculator в разделе Component View (Представление компонентов), чтобы открыть вложенный список.
18. В списке браузера выберите компонент PayrollCalculator и перетащите его на диаграмму компонентов.
19. Щелкните по кнопке Dependency (Отношение зависимости) на панели инструментов, а затем по компоненту DisplayPay и перетащите линию связи к компоненту PayrollCalculator.
Этапы генерации кода:
1. Выберите компонент DisplayPay, щелкнув по нему мышью.
2. Выберите команду меню Tools => Visual Basic => Update code (Сервис => Visual Basic => Обновить код) для запуска мастера Code Update Tool.
3. Щелкните по кнопке Finish (Готово) в окне мастера Code Update Tool.
4. Установите флажок рядом с формой Form1 в диалоговом окне Synchronize (Синхронизация) и щелкните по кнопке OK, чтобы продолжить процесс генерации кода.
5. По завершении генерации кода появится диалоговое окно с итоговым отчетом. Щелкните по кнопке Close (Закрыть), чтобы закрыть окно мастера Code Update Tool.
Последовательность реализации методов на Visual Basic:
1. В программе Visual Basic найдите класс Employee.
2. Введите код реализации для метода getRate: getRate = 10.
3. Выберите класс PayrollForm.
4. Поместите на форму поле ввода.
5. Введите код реализации для метода Form_Load:
Dim theRate As Integer TheRate = anEmployee.getRate
Text1.Text = myPayClerk.IPayroll_calcPay(theRate)
6. Выберите команду меню Project => Display Pay Properties (Проект => Свойства Display Pay).
7. В открывающемся списке Startup Object (Начальный объект) выберите класс PayrollForm.
8. Щелкните по кнопке OK, чтобы закрыть окно настройки параметров проекта.
9. Запустите исполняемый файл, и вы увидите в поле ввода число 400.