отношения обобщения
Изменим имя отношения обобщения, предложенное средой по умолчанию. Это можно выполнить с помощью окна спецификации свойств обобщения. Доступ к диалоговому окну спецификации свойств отношения обобщения Generalize Specification можно получить после выделения линии обобщения на диаграмме классов или в браузере проекта и двойного щелчка на ней левой кнопки мыши (рис. 4.17).
Рисунок 4.17 - Диалоговое окно спецификации свойств отношения обобщения
Для задания имени обобщения следует на единственной вкладке General (Общие) в поле ввода Name (Имя) ввести текст ее имени: следует и нажать кнопку Apply или OK, чтобы сохранить результаты редактирования имени ассоциации.
3 Пример построения диаграммы классов
Рисунок 4.18 – Диаграмма классов для алгоритма дискриминантного анализа
4 Задание на лабораторное занятие
Разработайте диаграмму классов для реализации метода многомерного статистического анализа, применяемого в приложении.
5 Контрольные вопросы для защиты лабораторной работы
1. Каково назначение диаграммы классов?
2. Какими способами можно создать диаграмму?
3. Какие инструменты доступны для диаграммы?
4. Какие команды предоставляет контекстное меню класса?
5. Как настроить свойства атрибутов класса?
6. Как настроить свойства методов класса?
7. Какие типы отношений классов вы знаете?
Тема: «Генерация кода проектируемого программного обеспечения»
Цель работы:
1) Подготовка модели к генерации программного кода;
2) Генерация программного кода на язык С++.
- разработать диаграмму классов (предыдущая лабораторная работа);
- знать основы объектно-ориентированного программирования.
Одно из самых мощных свойств Rational Rose – возможность генерации программного кода, представляющего модель. Варианты генерации программ меняются в зависимости от установленной версии Rose. В настоящее время применяются следующие три различные версии:
- Rose Modeler – позволяет создавать модель системы, но не поддерживает генерацию программного кода и обратное проектирование.
- Rose Professional – позволяет генерировать программный код на одном языке.
- Rose Enterprise – позволяет генерировать программный код на Ada 83, Ada 95, ANSI C++, CORBA, Java, COM, Visual Basic, Visual C++, C++ и XML. Кроме того, поддерживается генерация кода и обратное проектирование баз данных.
Весь лабораторный практикум по данной дисциплине построен на изучении Case-средства Rational Rose версии - Enterprise Edition.
2.1 Подготовка к генерации программного кода
Процесс генерации программного кода состоит из пяти основных этапов:
1. Проверка модели.
2. Создание компонентов.
3. Отображение классов на компоненты.
4. Установка свойств генерации программного кода.
5. Генерация программного кода.
В разных языках не все этапы обязательны. Так, программы, разработанные на языке С++, генерируются и без предварительного создания компонентов. Генерировать код программ на любом языке можно, не выполняя проверки модели, хотя во время генерации это порой приводит к различным ошибкам.
Хотя не все этапы обязательны, первые пять из них рекомендуется выполнять до начала процесса генерации. Проверка модели поможет выявить ее неточности и недостатки, нежелательные с точки зрения последующей генерации программ. Этапы, на которых рассматриваются компоненты, - это способ отобразить логическую схему системы на ее физическую реализацию, причем на этих этапах собирается большой объем полезной информации. Если пропустить эти этапы, то для создания компонентов Rose воспользуется пакетной структурой логического представления.
2.1.1 Проверка модели
В Rose существует не зависящее от языка средство проверки моделей, применяемое для обеспечения корректности модели перед генерацией программного кода. Такая проверка помогает выявить в модели неточности и ошибки, не позволяющие генерировать программы надлежащим образом.
В общем случае проверка модели может выполняться на любом этапе работы над проектом. Однако после завершения разработки графических диаграмм она является обязательной, поскольку позволяет выявить целый ряд ошибок разработчика. К числу таких ошибок и предупреждений относятся, например, не используемые ассоциации и классы, оставшиеся после удаления отдельных графических элементов с диаграмм, а также операции, не являющиеся именами сообщений на диаграммах взаимодействия.
Для проверки модели следует выполнить операцию главного меню: Tools
Check Model (Инструменты Проверить модель). Результаты проверки разработанной модели на наличие ошибок отображаются в окне журнала. Прежде чем приступить к генерации текста программного кода разработчику следует добиться устранения всех ошибок и предупреждений, о чем должно свидетельствовать чистое окно журнала (рис. 5.1).К наиболее распространенным ошибкам относятся, например, сообщения на диаграмме Последовательности или Кооперативной диаграмме, не отображенные на операцию, либо объекты этих диаграмм, не отображенные на класс.
2.1.2 Создание компонентов
Второй этап процесса генерации программного кода - создание компонентов для классов. Существуют компоненты самых разных типов: файлы исходного программного кода, исполняемые файлы, библиотеки исполнения в реальном времени, компоненты ActiveX, апплеты и т.д. Перед генерацией программ можно отобразить каждый из классов на соответствующий компонент исходного программного кода.
После создания компонентов можно добавить зависимости между ними на диаграмме Компонентов. Зависимости между компонентами - это зависимости во время компиляции системы.
При генерации программ на C++, Java или Visual Basic выполнять подобный шаг не обязательно. В Java и Visual Basic Rose создаст автоматически соответствующий компонент для каждого из классов.
Для создания компонента:
1. Откройте диаграмму Компонентов (Component).
2. С помощью значка Component панели инструментов Diagram введите новый компонент в диаграмму.
2.1.3 Отображение классов на компоненты
Каждый компонент исходного кода - это файл с исходным программным кодом для одного или нескольких классов. В C++ каждый класс отображается на два компонента с исходным кодом: файл заголовка и основной файл (тело). В PowerBuilder на один компонент отображается несколько классов. Компонентом с исходным программным кодом в PowerBuilder является файл библиотеки PowerBuilder (.pbl). В Java каждый компонент - это один файл .java. Компоненты также создаются для элементов управления ActiveX, апплетов, файлов DDL, исполняемых файлов, а также других исходных и скомпилированных файлов.
Третий этап процесса генерации программного кода - отображение каждого из классов на соответствующие компоненты. В PowerBuilder необходимо отобразить каждый класс на компонент перед генерацией программы, в то время как в C++, Java и Visual Basic этот шаг не является обязательным. Rose может генерировать программный код самостоятельно. При генерации в Rose программ Java и Visual Basic производится еще и генерация нужных компонентов и отображение классов. Однако для C++ компоненты не создаются автоматически, а кроме того, ни для одного из языков не генерируются зависимости. Поэтому рекомендуется выполнять этот шаг независимо от применяемого языка программирования. Для отображения класса на компонент:
1. Щелкните правой кнопкой мыши на компоненте, на диаграмме Компонентов или в браузере.
2. Выберите Open Specification в контекстном меню.
3. Выберите вкладку Realizes (Реализует).
4. Во вкладке Realizes щелкните правой кнопкой мыши на нужном классе (классах) и выберите Assign (Присвоить) в контекстном меню.
В браузере имя компонента будет показано в круглых скобках вслед за именем класса в Логическом представлении (Logical view).
ИЛИ
1. Найдите класс в окне Logical view браузера.
2. Перетащите класс на нужный компонент в окне Component view.
3. В окне Logical view имя компонента будет показано в круглых скобках за именем класса.
2.1.4 Установка свойств генерации программного кода
Для каждого языка в Rose предусмотрен ряд определенных свойств генерации программного кода. Можно установить несколько параметров генерации программного кода для классов, атрибутов, компонентов и других элементов модели. Этими свойствами определяется способ генерации программ. В Rose предлагаются общепринятые параметры по умолчанию.
2.1.4.1 Настройка свойств C++
Для того чтобы пользоваться возможностями C++, необходимо описать назначение этих свойств, список которых доступен во вкладке C++ спецификаций класса. (см. рис. 5.2)
Рисунок 5.2 – Окно свойств генерации кода на С++
Перед генерацией программного кода рекомендуется анализировать эти свойства и вносить необходимые изменения.
Назначение свойств:
1) CodeName - устанавливает имя класса в создаваемом коде. Данное свойство необходимо устанавливать только в том случае, если имя класса должно быть отлично от имени заданного в модели Rational Rose. Данное свойство необходимо использовать для создания работоспособного кода C++, если для классов в модели используются русские имена.