Отображение классов на компоненты
Каждый компонент исходного кода - это файл с исходным программным кодом для одного или нескольких классов. В C++ каждый класс отображается на два компонента с исходным кодом: файл заголовка и основной файл (тело). В PowerBuilder на один компонент отображается несколько классов. Компонентом с исходным программным кодом в PowerBuilder является файл библиотеки PowerBuilder (.pbl). В Java каждый компонент - это один файл .java. Компоненты также создаются для элементов управления ActiveX, апплетов, файлов DDL, исполняемых файлов, а также других исходных и скомпилированных файлов.
Третий этап процесса генерации программного кода - отображение каждого из классов на соответствующие компоненты. В PowerBuilder необходимо отобразить каждый класс на компонент перед генерацией программы, в то время как в C++, Java и VisualBasic этот шаг не является обязательным. StarUML может генерировать программный код самостоятельно. При генерации в StarUML программ Java и VisualBasic производится еще и генерация нужных компонентов и отображение классов. Однако для C++ компоненты не создаются автоматически, а кроме того, ни для одного из языков не генерируются зависимости. Поэтому рекомендуется выполнять этот шаг независимо от применяемого языка программирования. Для отображения класса на компонент:
1. Щелкните правой кнопкой мыши на компоненте, на диаграмме Компонентов или в браузере.
2. Выберите OpenSpecification в контекстном меню.
3. Выберите вкладку Realizes (Реализует).
|
|
4. Во вкладке Realizes щелкните правой кнопкой мыши на нужном классе (классах) и выберите Assign (Присвоить) в контекстном меню.
В браузере имя компонента будет показано в круглых скобках вслед за именем класса в Логическом представлении (Logicalview).
ИЛИ
1. Найдите класс в окне Logicalview браузера.
2. Перетащите класс на нужный компонент в окне Componentview.
3. В окне Logicalview имя компонента будет показано в круглых скобках за именем класса.
Установка свойств генерации программного кода
Для каждого языка в StarUML предусмотрен ряд определенных свойств генерации программного кода. Можно установить несколько параметров генерации программного кода для классов, атрибутов, компонентов и других элементов модели. Этими свойствами определяется способ генерации программ. В StarUML предлагаются общепринятые параметры по умолчанию.
Настройка свойств C++
Для того чтобы пользоваться возможностями C++, необходимо описать назначение этих свойств, список которых доступен во вкладке C++ окна Options (Tools-Option). (см. рис. 3)
Рисунок 3 – Окно свойств генерации кода на С++
Перед генерацией программного кода рекомендуется анализировать эти свойства и вносить необходимые изменения.
|
|
Назначение свойств:
1) CodeName - устанавливает имя класса в создаваемом коде. Данное свойство необходимо устанавливать только в том случае, если имя класса должно быть отлично от имени заданного в модели RationalRose. Данное свойство необходимо использовать для создания работоспособного кода C++, если для классов в модели используются русские имена.
2) ImplementationType - позволяет использовать простые типы вместо определения класса, устанавливаемого RationalRose по умолчанию. При задании этого параметра создается директива typedef.
3) ClassKey - используется для задания типа класса, такого как class, struct, или union. Если тип не указан, то создается класс.
4) GenerateEmptyRegion - свойство указывает, как будет создаваться пустой раздел protected: None - пустой раздел не будут создан; Preserved - пустой раздел будет создан, если будет установлено свойство «preserve=yes»; Unpreserved — пустой раздел будет создан, если будет установлено свойство «preserve=no»; All — всегда будет создаваться.
5) PutBodiesInSpec - если установлено как true, то в заголовочный файл попадет и описание тела класса. Используется для компиляторов, которым необходимо определение шаблона класса в каждом компилируемом файле.
6) GenerateDefaultConstructor - позволяет установить, необходимо ли создавать конструктор для класса по умолчанию. Может принимать следующие значения: DeclareAndDefine - создается определение для конструктора и скелет конструктора в теле класса; DeclareOnly - создается только определение; DoNotDeclare - не создается ни определения, ни скелета конструктора.
|
|
7) DefaultConstructorVisibility - устанавливает раздел, в котором будет определен конструктор по умолчанию: public, protected, private, implementation.
8) InlineDefaultConstructor - устанавливает, будет ли конструктор по умолчанию создаваться как inline подстановка. Если конструктора по умолчанию нет, то данное свойство не оказывает на код никакого эффекта.
9) ExplicitDefaultConstructor - устанавливает конструктор по умолчанию как explicit (явно заданный).
10) InlineRelationalOperations - определяет, будут ли функции операторов сравнения создаваться как inline подстановка.
11) GenerateStorageMgmtOperations - определяет, будут ли переопределяться операторы new и delete в классе.
12) StorageMgmtVisibility - определяет раздел, в который будут помещены операторы new и delete.
13) InlineStorageMgmtOperations - определяет, будут ли операторы new и delete определены как inline подстановка.
14) GenerateSubscriptOperation - определяет, будет ли переопределен оператор [].
15) SubscriptVisibilityопределяет - раздел, в который будет помещен оператор [].
16) SubscriptKind - определяет вид функций оператора []: Common - обычная, Virtual - виртуальная, Abstract - абстрактная.
|
|
17) SubscriptResultType - определяет тип возвращаемого выражения для
оператора [].
18) InlineSubscriptOperation - определяет, будет ли оператор [] определен как inline подстановка.
19) GenerateDereferenceOperation - определяет, будет ли переопределен оператор *.
20) DereferenceVisibility - определяет раздел, в который будет помещен оператор *.
21) DereferenceKind - определяет вид функций оператора *: Common - обычная, Virtual - виртуальная, Abstract - абстрактная.
22) DereferenceResultType - определяет тип возвращаемого выражения для оператора *.
23) InlineDereferenceOperation - определяет, будет ли оператор * определен, как inline подстановка.
24) GeneratelndirectionOperation - определяет, будет ли переопределен оператор ->.
25) IndirectionVisibility - определяет раздел, в который будет помещен оператор ->.
26) IndirectionKind - определяет вид функций оператора ->: Common - обычная, Virtual - виртуальная, Abstract - абстрактная.
27) IndirectionResultType - определяет тип возвращаемого выражения для оператора ->.
28) InlinelndirectionOperation - определяет, будет ли оператор -> определен как inline подстановка.
29) GenerateStreamOperations - определяет, будут ли переопределены операторы потоков (« и »).
Дата добавления: 2020-04-25; просмотров: 216; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!