Доводка полученного кода

В случае если взглянуть на полученный файл заголовка, то возможно заметить, что оказалось не совсем то, что необходимо. Я приведу полученный файл без некоей служебной информации, которую включает генератор в код класса. Вся служебная информация вставляется как комментарии и не воздействует на последующую генерацию исполняемого файла.

Замечание. Вы имеете возможность отличить созданные генератором строчка по знакам «##», вставляемым в комментарии.

# include Location.h

# include Temperature.h

// Датчик температуры, измеряет температуру в теплице в

// Цельсиях

class TemperatureSensor {

public:

//## Constructors (generated) TemperatureSensor();

TemperatureSensor(const TemperatureSensor right);

//## Constructors (specified)

TemperatureSensor (Location Location);

//## Destructor (generated)

~TemperatureSensor();

//## Other Operations (specified)

void calibrate(Temperature actualTemperature);

Temperature currentTemperature ();

}

Тут мы видим, что в код включились заголовочные файлы определения данных и комментарий (это было заполнено поле RClick=Open Specification=Documentation). Но конструкторов в классе целых три: два машинально созданных и один, что выяснили мы. И не достаточно служебного слова const в операции currentTemperature.

Исправим это несоответствие. Сперва удалим машинально создаваемые конструкторы класса: Wind: Class Diagram= TemperatureSensor= RClick =OpenSpecification=C++= Generate Default Constructor=DoNotDeclare и в том месте же Generate Copy Constructor == DoNotDeclare.

Поставим тип const: Wind:Browser + Logical View + TemperatureSensor=current-Temperature=C++=Operation Is Const=True.

Совет. Чтобы скоро выделить необходимый класс в окне Browser, пребывав в окне Class Diagram, сделайте RCIick=Select In Browser.

Удостоверьтесь в надежности полученный исходный код и убедитесь, что все сработало как необходимо.

Настройка особенностей C++

До тех пор пока мы проделали все эти действия без подробных объяснений, чтобы продемонстрировать возможности Rational Rose по созданию кода приложения на C++. Чтобы вы имели возможность пользоваться возможностями C++, потом обрисуем назначение этих особенностей, перечень которых дешёв во вкладке C++ спецификаций класса.

  • CodeName устанавливает имя класса в создаваемом коде. Данное свойство нужно устанавливать лишь в том случае, если имя класса должно быть превосходно от имени заданного в модели Rational Rose. Данное свойство нужно применять для работоспособного кода C++, в случае если для классов в модели употребляются русские имена.
  • ImplementationType разрешает применять простые типы вместо определения класса, устанавливаемого Rational Rose по умолчанию, При задании этого параметра создается директива typedef.
  • ClassKey употребляется для задания типа класса, для того чтобы как class, struct либо union. В случае если тип не указан, то создается класс.
  • GenerateEmptyRegion — свойство показывает, как будет создаваться безлюдный раздел protected: None — безлюдный раздел не будут создан; Preserved — безлюдный раздел будет создан, в случае если будет установлено свойство «preserve=yes»; Unpreserved — безлюдный раздел будет создан, в случае если будет установлено свойство «preserve=no»; All — постоянно будет создаваться.
  • PutBodiesInSpec в случае если установлено как True, то в заголовочный файл попадет и описание тела класса. Употребляется для компиляторов, которым нужно определение шаблона класса в каждом компилируемом файле.
  • GenerateDefaultConstructor разрешает установить, нужно ли создавать конструктор для класса по умолчанию. Может принимать следующие значения: DeclareAndDefine — создается определение для конструктора и скелет конструктора в теле класса; Declare Only — создается лишь определение; DoNotDeclare — не создается ни определения, ни скелета конструктора.
  • DefaultConstructorVisibility устанавливает раздел, в котором будет выяснен конструктор по умолчанию: public, protected, private, implementation.
  • InlineDefaultConstructor устанавливает, будет ли конструктор по умолчанию создаваться как inline подстановка.

Замечание. В случае если конструктора по умолчанию нет, то данное свойство не оказывает на код никакого результата.

  • ExplicitDefaultConstructor устанавливает конструктор по умолчанию как explicit (очевидно заданный).
  • GenerateCopyConstructor устанавливает, будет ли создана копия конструктора.
  • CopyConstructorVisibility устанавливает раздел, в котором будет создана копия конструктора.
  • InlineCopyConstructor устанавливает, будет ли копия конструктора создаваться как inline подстановка. .
  • ExplicitCopyConstructor устанавливает, что копия конструктора будет создана explicit (очевидно задана).
  • GenerateDestructor устанавливает, будет ли создаваться деструктор для класса.
  • Destructor Visibility устанавливает раздел, где будет создаваться деструктор.
  • DestructorKind устанавливает вид создаваемого деструктора: Common — простой, Virtual — виртуальный, Abstract — слишком общий.
  • InlineDestructor устанавливает, будет ли деструктор создаваться как inline подстановка.
  • GenerateAssignmentOperation устанавливает, будет ли создаваться функция переопределения оператора присваивания (=).
  • AssignmentVisibility определяет раздел, где будет создаваться функция оператора присваивания.
  • The AssignmentKind определяет вид функции оператора присваивания: Common — простая, Virtual — виртуальная, Abstract — абстрактная, Friend — дружественная.
  • InlineAssignmentOperation определяет, будет ли оператор присваивания создаваться как inline.
  • GenerateEqualityOperations определяет, будут ли переопределяться операторы сравнения на равенство (= = и !=).
  • Equality Visibility определяет раздел, в который будут помещены операторы сравнения на равенство.
  • EqualityKind определяет вид функций операторов сравнения на равенство: Common — простая, Virtual — виртуальная, Abstract — абстрактная, Friend — дружественная.
  • InlineEqualityOperations определяют, будут ли функции операторов сравнения на равенство создаваться как inline.
  • GenerateRelationalOperations определяет, будут ли переопределяться операторы сравнения (=).
  • RelationalVisibility определяет раздел, в который будут помещены операторы сравнения.
  • RelationalKind определяет вид функций операторов сравнения: Common — — простая, Virtual — виртуальная, Abstract — — абстрактная, Friend — дружественная.
  • InlineRelationalOperations определяет, будут ли функции операторов сравнения создаваться как inline подстановка.
  • GenerateStorageMgmtOperations определяет, будут ли переопределяться операторы new и deшlete в классе.
  • StorageMgmtVisibility определяет раздел, в который будут помещены операторы new и delete.
  • InlineStorageMgmtOperations определяет, будут ли операторы new delete выяснены как inline подстановка.
  • GenerateSubscriptOperation определяет, будет ли переопределен оператор [].
  • Subscript Visibility определяет раздел, в который будет помещен оператор [].
  • SubscriptKind определяет вид функций оператора []: Common — простая, Virtual — виртуальная, Abstract — абстрактная.
  • SubscriptResultType определяет тип возвращаемого выражения для оператора [].
  • InlineSubscriptOperation определяет, будет ли оператор [] выяснен как inline подстановка.
  • GenerateDereferenceOperation определяет, будет ли переопределен оператор *.
  • DereferenceVisibility определяет раздел, в который будет помещен оператор *.
  • DereferenceKind определяет вид функций оператора *: Common — простая, Virtual — виртуальная, Abstract — абстрактная.
  • DereferenceResultType определяет тип возвращаемого выражения для оператора *.
  • InlineDereferenceOperation определяет, будет ли оператор * выяснен как inline подстановка.
  • GeneratelndiшrectionOperation определяет, будет ли переопределен оператор -.
  • Indirection Visibility определяет раздел, в который будет помещен оператор -.
  • IndirectionKind определяет вид функций оператора -: Common -простая, Virtual — виртуальная, Abstract — абстрактная.
  • IndirectionResultType определяет тип возвращаемого выражения для оператора -.
  • InlinelndirectionOperation определяет, будет ли оператор — выяснен как inline подстановка.
  • GenerateStreamOperations определяет, будут ли переопределены операторы потоков (« и »).
  • Stream Visibility определяет раздел, в который будут помещены операторы потоков.
  • InlineStreamOperations определяет, будут ли операторы потоков выяснены как inline подстановка.

Примерные вопросы для защиты и самопроверки

1. Обрисуйте возможности ассоциации класса с языком C++.

2. Возможности установки типа объекта.

3. Обрисуйте порядок добавления операций.

4. Как устанавливаются зависимости классов?

5. Как просмотреть приобретаемый код, не выходя из Rational Rose.

6. Обрисуйте настройки особенностей C++.

Литература

1. Трофимов С.А. Case-технологии: практическая работа в Rational Rose — М.: ЗАО «Издательство ДВУЧЛЕН», 2001 г. — 272 с.: ил.

Тюнинг вариатора JF011E. Доработка конусов X-Trail, Outlander, Qashqai, Lancer, Teana, Dodge, Jeep,


Также читать:

Понравилась статья? Поделиться с друзьями: