Особенности генерации типов данных, свойства типов данных и их редактирование, пример сгенерированного кода
Type
, стереотип, вводящий новый тип. При генерации кода на целевом языке объявляется этот тип. Типы не могут связываться никакими ассоциациями, но могут наследоваться.
Пример:
Note: Если классы находятся в разных пакетах, то будет сгенерировано 2 отдельные сборки, которые будут ссылаться друг на друга. Код успешно сгенерируется, но не будет компилироваться.
Описание типа
Что генерируется | Генерация в SQL DDL | Генерация в .Net-язык | |
---|---|---|---|
Любая часть любого UML-класса (атрибут, параметр метода и т.д.), объявленная этим типом | Как есть или указывается преобразование в карте типов для генератора | Как есть. Атрибут, параметр метода и т.п. объявляются этим типом | |
UML-класс | .Net-класс | ||
Атрибут UML-класса | Публичное виртуальное свойство с тем же именем и соответствующим модификатором (# - protected , + - public , - - private ) и приватный член класса для этого свойства. Тип свойства и приватного члена - тип атрибута. |
||
Метод UML-класса | Публичный виртуальный метод с соответствующими параметрами. Тело метода пустое со скобкой программиста для внесения кода метода. |
Дополнительно редактируемые свойства и что как генерируется
Окно редактирования свойств типа данных выглядит следующим образом:
1.Закладка редактирования свойств UML-класса:
Свойство | Описание | Генерация в .Net-язык |
---|---|---|
Stored |
||
Name |
Имя UML-класса, оно же имя типа | Имя .Net-класса |
Description |
Рекоторое развёрнутое описание, при необходимости, для пояснительных целей | Как DocComment к классу в код на .Net-языке |
PrimaryKeyStorage |
||
Storage |
||
AutoAltered |
||
LoadingOrder |
||
Trim |
||
Packet, NamespacePostfix |
Позволяют настроить сборку и пространство имен, в которое должен генерироваться тип | см. Расположение сборок после генерации кода |
PBCustomAttributes |
Если галочка указана - генерируется скобка программиста для “ручного” внесения атрибутов перед классом. | |
PBMembers |
Позволяет указать, необходима ли скобка программиста внутри класса для “ручного” внесения членов класса | Если галочка указана - генерируется скобка программиста для “ручного” внесения членов класса |
PBClass |
||
PublishToEBSD |
Если галочка указана - перед классом генерируется указание атрибута PublishToEBSDAttribute , который указывает доступность данного класса для использования в редакторе диаграмм сценариев |
2.Закладка редактирования свойств атрибутов UML-класса:
Свойство | Описание | Генерация в .Net-язык |
---|---|---|
AccessModifier |
модификатор доступа к соответствующему свойству .Net -класса |
Модификаторы:+ - public - - private # - protected |
Stored |
||
Name |
то же самое имя атрибута, что на диаграмме | Имя свойства в .Net -классе, а также некоторое производное имя приватного члена (в зависимости от формата приватного члена, который указывается в настройках генератора). |
Description |
описание для пояснительных целей | Как DocComment к свойству |
Type |
тип данных свойства | Как тип свойства и тип приватного члена |
DefaultValue |
значение по умолчанию | Как инициализатор приватного члена |
NotNull |
||
DataServiceExpression |
||
Storage |
||
Hint |
||
Order |
||
PBCustomAttributes |
Если галочка указана - перед определением свойства генерируется скобка программиста для “ручного” внесения .Net-атрибутов. | |
PBGetStart |
Если галочка указана - генерируется скобка программиста в аксессоре get свойства непосредственно после начала кода аксессора. | |
PBGetEnd |
Если галочка указана - генерируется скобка программиста в аксессоре get свойства непосредственно перед концом кода аксессора. | |
PBSetStart |
Если галочка указана - генерируется скобка программиста в аксессоре set свойства непосредственно после начала кода аксессора. | |
PBSetEnd |
Если галочка указана - генерируется скобка программиста в аксессоре set свойства непосредственно перед концом кода аксессора. | |
Autoincrement |
3.Закладка редактирования свойств методов UML-класса:
В верхней части - методы, в нижней - параметры выбранного в верхней части метода.
Для методов:
Свойство | Описание | Генерация в .Net-язык |
---|---|---|
AccessModifier |
модификатор доступа к соответствующему методу .Net-класса | Модификаторы: + - public - - private # - protected |
Name |
то же самое имя метода, что на диаграмме | Имя метода в .Net -классе |
Description |
описание для пояснительных целей | Как DocComment к методу. Если IsEvent указан, описание генерируется перед событием и перед методом, взводящим событие. |
Type |
тип данных метода | Как тип метода. Если не заполнено - void . |
IsEvent |
указывает, что это не метод, а событие | Если IsEvent указан, то метод должен иметь ровно один параметр с типом, объявленным как UML-класс со стереотипом EventArg. Рядом с описанием EventArg, - генерируется соответствующий делегат. Внутри класса-типа - событие. Внутри класса-типа - метод, взводящий событие (навроде OnXXXXXXX) |
PBCustomAttributes |
Если галочка указана - генерируется скобка программиста непосредственно перед методом для “ручного” внесения .Net-атрибутов.] Если IsEvent указан, скобка программиста генерируется перед методом взведения события OnXXXXXXX |
Для параметров методов:
Свойство | Описание | Генерация в .Net-язык |
---|---|---|
Name |
то же самое имя параметра, что на диаграмме | Имя параметра метода в .Net -классе |
Description |
описание для пояснительных целей | Как описание параметра в DocComment к методу, чей это параметр. |
Type |
тип данных параметра | Тип данных параметра |
Modifier |
Модификатор передачи параметра: byref - ref; byval - ничего; out - out; in - in. |
Пример сгенерированного кода на C# по примеру
/// <summary>
/// Представление интервалов времени
/// </summary>
// *** Start programmer edit section *** (МинСек CustomAttributes)
// *** End programmer edit section *** (МинСек CustomAttributes)
public class МинСек
{
private int fМин;
private int fСек;
public virtual int Мин
{
get
{
return this.fМин;
}
set
{
this.fМин = value;
}
}
public virtual int Сек
{
get
{
return this.fСек;
}
set
{
this.fСек = value;
}
}
}