Отображение классов на компоненты



Каждый компонент исходного кода - это файл с исходным программным кодом для одного или нескольких классов. В 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!