
1
03
3.
В
появившемся
окне
в
списке
Target Database
укажите
DB_0
и
нажмите
ОК
.
В
результате
в
логическом
представлении
появится
новый
пакет
Schemas.
4.
Откройте
пакет
Schemas
и
щелкните
правой
кнопкой
мыши
на
пакете
<<Schema>> S_0.
5.
В
открывшемся
меню
выберите
пункт
Data Modeler > New > Data
Model Diagram.
6.
Откройте
пакет
,
затем
откройте
вновь
созданную
диаграмму
«
сущность
-
связь
» NewDiagram
и
перенесите
на
нее
все
классы
-
таблицы
,
находящиеся
в
пакете
<<Schema>> S_0.
Получившаяся
диаграмма
показана
на
рис
. 3.29.
Рис
. 3.29.
Диаграмма
«
сущность
-
связь
»
T_Student.
+ name : NUMBER(5, 0)
+ address : NUMBER(5, 0)
+ nextAvailID : NUMBER(5, 0)
- studentID : NUMBER(5, 0)
+ dateofBirth : DATE
<<PK>> + PK_T_Student.
1
5()
T_FulltimeClassification
+ gradDate : NUMBER(5, 0)
studentID : NUMBER(5, 0)
T_Classification_ID : NUMBER(
1
0, 0)
<<PK>> + PK_T_FulltimeClassification
1
6()
<<FK>> + FK_T_FulltimeClassification7()
T_ParttimeClassification
+ maxNumCourses : NUMBER(5, 0)
studentID : NUMBER(5, 0)
T_Classification_ID : NUMBER(
1
0, 0)
<<PK>> + PK_T_ParttimeClassification
1
7()
<<FK>> + FK_T_ParttimeClassification8()
T_Classification
- T_Classification_ID : NUMBER(
1
0, 0)
studentID : NUMBER(5, 0)
<<PK>> + PK_T_Classification
1
4()
<<Unique>> + TC_T_Classification
1
8()
<<FK>> + FK_T_Classification6()
<<Index>> + TC_T_Classification
1
7()
1
1
<<Identifying>>
1
0..
1
1
0..
1
<<Identifying>>
1
0..
1
1
0..
1
<<Identifying>>

1
04
Генерация
описания
БД
на
SQL:
1
.
Щелкните
правой
кнопкой
мыши
на
пакете
<<Schema>> S_0.
2.
В
открывшемся
меню
выберите
пункт
Data Modeler > Forward
Engineer.
3.
В
открывшемся
окне
мастера
Forward Engineering Wizard
нажмите
Next.
4.
Отметьте
все
флажки
генерации
DDL
и
нажмите
Next.
5.
Укажите
имя
и
расположение
текстового
файла
с
результатами
генерации
и
нажмите
Next.
6.
После
завершения
генерации
откройте
созданный
текстовый
файл
и
просмотрите
результаты
.
3.7.
Реализация
системы
3.7.1.
Создание
компонентов
В
Rational Rose
диаграммы
компонентов
создаются
в
представлении
компонентов
системы
.
Отдельные
компоненты
можно
создавать
непосредственно
на
диаграмме
,
или
перетаскивать
их
туда
из
браузера
.
Упражнение
15.
Создание
компонентов
Выберем
в
качестве
языка
программирования
С
++
и
для
класса
Student
создадим
соответствующие
этому
языку
компоненты
.
Создание
диаграммы
компонентов
:
1
.
Дважды
щелкните
мышью
на
главной
диаграмме
компонентов
в
представлении
компонентов
.
2.
На
панели
инструментов
нажмите
кнопку
Package Specification.
3.
Поместите
спецификацию
пакета
на
диаграмму
.
4.
Введите
имя
спецификации
пакета
Student
и
укажите
в
окне
спецификации
язык
С
++.
5.
На
панели
инструментов
нажмите
кнопку
Package Body.
6.
Поместите
тело
пакета
на
диаграмму
.
7.
Введите
имя
тела
пакета
Student
и
укажите
в
окне
спецификации
язык
С
++.

1
05
8.
На
панели
инструментов
нажмите
кнопку
Dependency.
9.
Проведите
линию
зависимости
от
тела
пакета
к
спецификации
пакета
.
Рис
. 3.30.
Диаграмма
компонентов
Соотнесение
классов
с
компонентами
:
1
.
В
логическом
представлении
браузера
найдите
класс
Student.
2.
Перетащите
этот
класс
на
спецификацию
пакета
компонента
Student
в
представлении
компонентов
браузера
.
В
результате
класс
Student
будет
соотнесен
со
спецификацией
пакета
компонента
Student.
3.
Перетащите
класс
Student
на
тело
пакета
компонента
Student
в
представлении
компонентов
браузера
.
В
результате
класс
Student
будет
соотнесен
с
телом
пакета
компонента
Student.
3.7.2.
Генерация
кода
Процесс
генерации
кода
состоит
из
четырех
основных
шагов
:
1
.
Проверка
корректности
модели
.
2.
Установка
свойств
генерации
кода
.
3.
Выбор
класса
,
компонента
или
пакета
.
4.
Генерация
кода
.
Student
Student

1
06
Для
проверки
модели
:
1
.
Выберите
в
меню
Tools > Check Model.
2.
Проанализируйте
все
найденные
ошибки
в
окне
журнала
.
К
наиболее
распространенным
ошибкам
относятся
такие
,
например
,
как
сообщения
на
диаграмме
последовательности
или
кооперативной
диаграмме
,
не
соотнесённые
с
операцией
,
либо
объекты
этих
диаграмм
,
не
соотнесённые
с
классом
.
С
помощью
пункта
меню
Check Model
можно
выявить
большую
часть
неточностей
и
ошибок
в
модели
.
Пункт
меню
Access Violations
позволяет
обнаруживать
нарушения
правил
доступа
,
возникающие
тогда
,
когда
существует
связь
между
двумя
классами
разных
пакетов
,
но
связи
между
самими
пакетами
нет
.
Чтобы
обнаружить
нарушение
правил
доступа
:
1
.
Выберите
в
меню
Report > Show Access Violations.
2.
Проанализируйте
все
нарушения
правил
доступа
в
окне
.
Можно
установить
несколько
параметров
генерации
кода
для
классов
,
атрибутов
,
компонентов
и
других
элементов
модели
.
Этими
свойствами
определяется
способ
генерации
программ
.
Для
каждого
языка
в
Rose
предусмотрен
ряд
определенных
свойств
генерации
кода
.
Перед
генерацией
кода
рекомендуется
анализировать
эти
свойства
и
вносить
необходимые
изменения
.
Для
анализа
свойств
генерации
кода
выберите
Tools > Options,
а
затем
вкладку
соответствующего
языка
.
В
окне
списка
можно
выбрать
класс
,
атрибут
,
операцию
и
другие
элементы
модели
.
Для
каждого
языка
в
этом
списке
указаны
свои
собственные
элементы
модели
.
При
выборе
разных
значений
на
экране
появляются
разные
наборы
свойств
.
Любые
изменения
,
вносимые
в
набор
свойств
в
окне
Tools > Options,
воздействуют
на
все
элементы
модели
,
для
которых
используется
данный
набор
.
Иногда
нужно
изменить
свойства
генерации
кода
для
одного
класса
,
атрибута
,
одной
операции
и
т
.
д
.
Для
этого
отройте
окно
спецификации
элемента
модели
.
Выберите
вкладку
языка
(C++, Java, …)
и
измените
свойства
здесь
.
Все
изменения
,
вносимые
в
окне
спецификации
элемента
модели
,
оказывают
влияние
только
на
этот
элемент
.

1
07
При
генерации
кода
за
один
раз
можно
создать
класс
,
компонент
или
целый
пакет
.
Код
генерируется
с
помощью
диаграммы
или
браузера
.
При
генерации
кода
из
пакета
можно
выбрать
или
пакет
логического
представления
на
диаграмме
классов
,
или
пакет
представления
компонентов
на
диаграмме
компонентов
.
При
выборе
пакета
логического
представления
генерируются
все
классы
этого
пакета
.
При
выборе
пакета
представления
компонентов
генерируются
все
компоненты
этого
пакета
.
После
выбора
класса
или
компонента
на
диаграмме
выберите
в
меню
соответствующий
вариант
генерации
кода
.
Сообщения
об
ошибках
,
возникающих
в
процессе
генерации
кода
,
будут
появляться
в
окне
журнала
.
Во
время
генерации
кода
Rose
выбирает
информацию
из
логического
и
компонентного
представлений
модели
и
генерирует
большой
объем
«
скелетного
» (skeletal)
кода
:
–
Классы
.
Генерируются
все
классы
модели
.
–
Атрибуты
.
Код
включает
атрибуты
каждого
класса
,
в
том
числе
видимость
,
тип
данных
и
значение
по
умолчанию
.
–
Сигнатуры
операций
.
Код
содержит
определения
операций
со
всеми
параметрами
,
типами
данных
параметров
и
типом
возвращаемого
значения
операции
.
–
Связи
.
Некоторые
из
связей
модели
вызывают
создание
атрибутов
при
генерации
кода
.
–
Компоненты
.
Каждый
компонент
реализуется
в
виде
соответствующего
файла
с
исходным
кодом
.
Упражнение
16.
Генерация
кода
С
++
1
.
Откройте
диаграмму
компонентов
системы
.
2.
Выберите
все
объекты
на
диаграмме
компонентов
.
3.
Выберите
Tools > C++ > Code Generation
в
меню
.
4.
Выполните
генерацию
кода
.
5.
Просмотрите
результаты
генерации
(
меню
Tools > C++ > Browse
Header
и
Tools > C++ > Browse Body).