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 и в появившемся контекстно-зависимом меню выберите команду <new operation> (Создать операцию). На экране увидите диалоговое окно настройки параметров операции.
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.
Глоссарий
Автоматический переход (Automatic transition) - переход между состояниями, который осуществляется по завершении деятельности внутри исходного состояния.
Агрегация (Aggregation) - более сильная форма ассоциации, при которой связь устанавливается между целым и его частью или частями.
Актер (Actor) - кто-то (или что-то) внешний по отношению к системе, кто должен взаимодействовать с разрабатываемой системой.
Архитектура (Architecture) - логическая и физическая структура системы, созданная на основе всех стратегических и тактических решений, принятых в ходе разработки.
Ассоциативный класс (Association class) - класс, содержащий информацию, которая относится к связи между двумя объектами, но ни к одному из объектов в отдельности.
Ассоциация (Association) - двунаправленная семантическая связь между двумя классами.
Атрибут (Attribute) - поле данных, содержащееся в объектах класса. Атрибуты составляют структуру класса.
Базовый проект (Base project) - проект с дополнительной информацией по отношению к основному программному проекту. Он обычно содержит сведения о файлах заголовков для вспомогательных библиотек классов.
Библиотека классов (Class library) - программная библиотека, содержащая классы, которые могут быть использованы другими разработчиками.
Бизнес-цели (Business goals) - список потребностей организации в приоритетном порядке, помогающий выработать правильные решения и найти разумные компромиссы в процессе разработки.
Визуальное моделирование (Visual Modeling) - способ представления идей и проблем реального мира с помощью моделей.
Действие (Action) - поведение, которое сопровождает событие перехода между состояниями. Считается, что действие занимает нулевое время и не может быть прервано.
Деятельность (Activity) - поведение, возникающее внутри состояния. Деятельность может быть прервана событием перехода между состояниями.
Диаграмма взаимодействий (Collaboration diagram) - диаграмма, отражающая взаимодействие объектов, организованное вокруг самих объектов и связей между ними.
Диаграмма внедрения (Deployment diagram) - диаграмма, показывающая распределение процессов по узлам вычислительных систем в физической организации системы.
Диаграмма классов (Class diagram) - графическое представление некоторых или всех классов модели.
Диаграмма компонентов (Component diagram) - диаграмма, показывающая организацию программных компонентов и их зависимости, включая компоненты исходного кода, программные (rim-time) и исполняемые (executable) компоненты.
Диаграмма последовательности действий (Sequence diagram) - диаграмма, отражающая взаимодействие объектов, упорядоченное во времени.
Диаграмма прецедентов (Use case diagram) - графическое представление актеров, прецедентов и взаимодействий между ними.
Диаграмма состояний (Statechart diagram) - диаграмма, отражающая набор состояний данного класса, события, вызывающие переходы между состояниями, 'и действия, выполняемые при смене состояний.
Дизайн (Design) - представление реализации системы.
Задумка (Inception) - определение концепции проекта.
Итеративный и инкрементальный жизненный цикл (Iterative and incremental life cycle) - создание серии архитектурных выпусков, развивающихся в законченную систему.
Итерационный план (Iteration plan) - расписание итеративных выпусков (releases), запланированных для системы.
Класс (Class) - описание группы объектов с общими свойствами (атрибутами), однотипным поведением (операциями), общими отношениями с другими объектами (ассоциативными или агрегационными) и общей семантикой.
Ключевой механизм (Key mechanism) - проектные решения, касающиеся отдельных частей архитектуры.
Линия синхронизации (Synchronization bar) - горизонтальная или вертикальная линия на диаграмме, указывающая, что определенные действия должны выполняться одновременно. Линии синхронизации также используются, чтобы показать объединение потоков событий.
Модель (Model) - абстракция, отражающая основу сложной проблемы или структуры и упрощающая работу с ней.
Модель прецедентов (Use case model) - совокупность актеров, прецедентов и диаграмм прецедентов системы.
Наследование (Inheritance) - отношение между классами, когда один класс использует часть структуры и/или поведения другого класса или нескольких классов.
Обобщение (Generalization) - процесс создания суперклассов, объединяющих общие для нескольких классов структуру и поведение.
Объект (Object) - концепция, абстракция или вещь с четко определенными границами и значением для системы.
Операция (Operation) - действия одного объекта над другим, направленные па вызов конкретной реакции. Операции определяют поведение класса.
Определение требований к системе (Requirement analysis) - описание задач системы.
Охранное условие (Guard) - условие, которое должно принять значение TRUE для осуществления определенного перехода.
Переход между состояниями (State transition) - переход от одного состояния к другому.
Переходный период (Transition) - поставка продукта пользователям (производство, распространение, обучение).
Подкласс (Subclass) - класс-потомок, унаследованный от одного или нескольких классов.
Полиморфизм (Polymorphism) - механизм, обеспечивающий возможность воздействовать на объекты, оперируя понятиями их суперклассов.
Прецедент (Use case) - представление бизнес-процессов системы. Модель диалога между актером и системой.
Проверка целостности (Consistency checking) - процесс сверки информации в статическом (диаграммы классов) и динамическом (диаграммы взаимодействий) представлении системы.
Проработка (Elaboration) - планирование необходимых действий и требуемых ресурсов; определение особенностей и проектирование архитектуры.
Прототип проверки концепции (Proof of concept prototype) - прототип, используемый для проверки начальных предположений и допущений, сформулированных для проблемной области.
Раздел (Partition) - пакеты, составляющие часть уровня абстракции.
Реализация (Implementation) - создание кода для получения действующей системы.
Секция (Swimlane) - участок диаграммы действий для выделения ответственных за действия. Секции часто соответствуют организационным единицам в бизнес-модели.
Слой (Layer) - набор пакетов на одном уровне абстракции. Создание (Construction) - построение продукта с помощью серии инкрементальных итераций.
Состояние (State) - обобщенный результат поведения объекта; одно из условий, в которых может находиться объект.
Специализация (Specialization) - процесс создания подклассов, которые являются уточнением суперклассов и в которых добавляются, изменяются или скрываются структура и поведение.
Стереотип (Stereotype) - новый тип элемента моделирования, расширяющий метамодель. Стереотипы должны основываться на элементах, являющихся частью метамодели языка UML.
Суперкласс (Superclass) - класс-предок, от которого унаследованы другие классы.
Сценарий (Scenario) - экземпляр прецедента - единичный проход по потоку событий для прецедента.
Тестирование (Test) - проверка всей системы.
Точка принятия решения (Decision point) - точка на диаграмме действий, в которой проверяется условие для выбора одного из возможных переходов.
Унифицированный язык моделирования (Unified Modeling Language - UML) - язык, используемый для определения, отображения и описания элементов объектно-ориентированной системы на стадии разработки.
Управляемый модуль (Controlled unit) - пакет, включенный в систему управления конфигурацией, который может быть загружен или сохранен независимо.
Фоновая постановка задачи (Background problem statement) - обобщенный материал, собранный перед началом работы над проектом. Обычно содержит описание предыдущей системы.
Примечания
1
Booch, Grady. Object Solutions. Redwood City, CA: Addison-Wesley, 1995.
2
The Unified Method,Draft Edition (0.8). Rational Software Corporation, October, 1995.
3
Booch, Grady-Object Solutions.Redwood City, CA: Addison-Wesley, 1995.
4
Дополнительную информацию об итеративном и инкрементальном процессе разработки программного обеспечения можно найти в статье "А Rational Development Process" by Philippe Kruchten,CossTalk,9(7), July 1996, p.p. 11–16. Эта статья также доступна на сайте компании Rational по адресу: http://www.ralional.com.
5
Rumbaugh, James et al.Object-Oriented Modeling and Design.Upper Saddle River, NJ: Pentice Hall 1991, p. 58.
6
Booch, Grady.Object Solutions.Redwood City, CA: Addison-Wesley, 1995.
7
Jacobson, Ivar.The Objector Software Development Process.Draft edition.
8
Там же.
9
Kruchten, Philippe.Software Architecture and Iterative Development.Santa Clara, CA: Rational Software Corporation, April 1994, p. 53.
10
Там же.
11
Solutions.Redwood City, CA: Addison-Wesley, 1995.
12
Booch, Grady.Object Solutions.Redwood City, CA: Addison-Wesley, 1995.
13
Kruchten, Philippe.A Rational Development Process.Rational Software Corporation. Available at www.rational.com.
14
Booch, Grady.Object Solutions.Redwood City, CA: Addison-Wesley, 1995.
15
Там же.
16
Booch, Grady.Best of Booch, SIGS Reference Library.New York, NY, 1996, p. 167.