Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб. по методам прогр1 / Лабораторная работа 6.doc
Скачиваний:
20
Добавлен:
10.05.2014
Размер:
128.51 Кб
Скачать

4. Использование модуля Model Assistant

Модуль Model Assistant позволяет обновлять и конкретизировать классы в мо­дели, используя дополнительные ключевые слова C++ для необходимой генерации кода. Для работы с этим модулем надо выполнить команду "Tools – Visual C++ – Model Assistant…”. При этом открывается специальное окно " Visual C++ Model Assistant [имя класса]”, которое позволяет создавать атрибуты и операции и изменять их свойства значительно проще и нагляднее, чем это происходит для C++. Те свойства, которые нельзя изменить выделяются в указанном окне серым цветом.

В окне " Visual C++ Model Assistant [имя класса]” поля реализуют следующие функции :

  • предварительный просмотр (Preview) – отображает описание класса так, как оно определено в текущий момент;

  • имя программы (Code Name) – содержит имя программного файла для данного класса;

  • флаг создания исходного текста (Generate) –определяет, необходимо ли создавать для данного класса исходный текст на языке VC++. Если флаг снят, то генерация кода не будет производиться, и этот класс не будет показываться в списке классов для обновления кода в окне обновления исходного текста (Code Update);

  • тип класса (Class Type) – позволяет установить один из вариантов типа класса: class, struct или union;

  • документация (Documentation) – позволяет задать произвольный комментарий. Если это поле заполнено, то при генерации исходного кода текст из этого поля будет включен в программу как комментарий. Это чрезвычайно удобно при просмотре программистом кода, созданного при помощи генератора Rational Rose. Данная возможность позволяет создавать документацию к программе непосредственно в момент создания класса, пока еще не забыты те цели и ограничения, с учётом которых создается класс или метод.

Значительные возможности предоставляет Rational Rose по интерактивному определению свойств методов класса. Так если в окне " Visual C++ Model Assistant [имя класса]” выбрать строку в папке Class Operators, то откроется окно, которое позволяет устанавливать и изменять атрибуты для операции, а также перегружать определенные в классе операции

В этом диалоговом окне поля имеют следующее назначение:

  • предварительный просмотр (Preview) – отображает описание операции таким образом, как оно было определено в текущий момент;

  • имя кода (Code Name) – содержит имя кода операции (может быть скрыто, если такое имя не задано);

  • тип возвращаемого значения (Return Type) обеспечивает выбор из списка тип, данного возвращаемого операцией;

  • присоединение (Linkage) – позволяет установить тип операции, который может быть Friend или Static. При этом Static обозначает, что к данной операции можно обращаться еще до создания объекта класса, а Friend определяет, что данная функция хоть и не является членом класса, но имеет доступ к его защищенным и собственным компонентам. Таким образом, дружественная функция описывается вне класса;

• включение (Inline) – определяет, что операция будет создана как inline-подстановка. В этом случае компилятор при создании объектного кода будет стараться подставить в текст программы код операторов ее тела. Таким образом, при многократных вызовах подставляемой функции размеры программы могут увеличиваться, однако исключатся затраты на передачу управления вызываемой функции и возвраты из нее. Как отмечает проект стандарта C++, кроме экономии времени при выполнении программы, подстановка функции позволяет проводить оптимизацию ее кода в контексте, окружающем вызов, что в ином случае невозможно. Наиболее удобны для подстанов­ки функции, состоящие всего из нескольких строк;

  • константа (Const) – определяет тип операции как Const;

  • уровень доступа (Access Level) – указывает доступ к операции и может быть Public, Protected или Private;

• тип операции (Operation Kind) – может принимать значения: виртуальная (Virtual), абстрактная (Abstract), или невиртуальная (Non Virtual). Механизм виртуальных функций используется в тех случаях, когда необходимо в базовый класс поместить функцию, которая должна по-разному выполняться в производных классах. Например, базовый класс может описывать фигуру на экране без конкретизации ее вида, а производные классы уже описывать реализацию конкретных треугольников, эллипсов, квадратов и т.д. При этом класс, который содержит хотя бы одну виртуальную функцию, называется абстрактным. В данном случае нет разницы между установкой пункта Virtual или Abstract. И в том, и в другом случае будет создана функция с ключевым словом virtual, которая потребует переопределения в производных классах.

Для того чтобы добавить атрибут или операцию, не выходя из Model Assistant достаточно воспользоваться командой new соответствующего контекстного меню. Например, при выполнении команды New Attribute создаётся новый атрибут и открывается диалоговое окно для редактирования свойств этого атрибутов. Таким образом можно определить основные атрибуты класса, не выходя из Model Assistant.

Рис. 45. Диалоговое окно для редактирования свойств атрибутов

В этом диалоговом окне имеются следующие поля:

  • предварительный просмотр (Preview) – показывает описание атрибута таким образом, как оно было определено в текущий момент;

  • тип (Туре) – позволяет выбрать из списка тип атрибута;

  • начальное значение (Initial Value) – позволяет устанавливать значение для инициализации атрибута;

  • уровень доступа (Access Level) – определяет уровень доступа к атрибуту и секцию, в которой будет создан атрибут: Public, Protected или Private;

  • статичный (Static) – обозначает, что значение атрибута является общим для всех объектов данного класса;

  • производный (Derived) – обозначает, что значение данного атрибута вычисляется;

  • документация (Documentation) – позволяет редактировать описание атрибута.

В окне " Visual C++ Model Assistant [имя класса]”, есть вкладка MFC, которая предназначена для классов, производных от базовых классов библиотеки MFC. Эта библиотека используется при создании Windows-приложений.

Окно " Visual C++ Model Assistant [имя класса]” является основным окном редактирования свойств класса и создания необходимого кода, поэтому к нему есть доступ непосредственно из контекстного меню класса.