37972

Генерация кода С++

Лабораторная работа

Информатика, кибернетика и программирование

Изучение фаз процесса генерации кода: создания наборов свойств определения спецификаций компонентов выбора языка С для компонентов отнесения классов к компонентам связывания наборов свойств с элементами модели генерации кода анализа ошибок. Создание наборов свойств. Связывание наборов свойств с элементами модели. Генерация кода Создание наборов свойств При генерации кода учитываются свойства проекта в целом а также свойства уровней классов ролей атрибутов и операций.

Русский

2013-09-25

3.1 MB

3 чел.

Лабораторная работа №8

Генерация кода С++

Цель работы. Изучение фаз процесса генерации кода: создания наборов свойств, определения спецификаций компонентов, выбора языка С++ для компонентов, отнесения классов к компонентам, связывания наборов свойств с элементами модели, генерации кода, анализа ошибок. Приобретение практических навыков генерации кода в среде Rational Rose.

Краткие теоретические сведения

Руководство по генерации кода на языке программирования С++ средствами Racional Rose.

Соответствующий генератор кода не включается по умолчанию, – следует выбрать элемент меню Add-Ins         Add In Manager, в одноименном диалоговом окне установить флажок Rose C++ и закрыть окно щелчком на кнопке ОК.

Ниже перечислены фазы процессов генерации кода .

  1.  Создание наборов свойств.
  2.  Определение спецификаций компонентов.
  3.  Выбор языка С++ для компонентов.
  4.  Отнесение классов к компонентам.
  5.  Связывание наборов свойств с элементами модели.
  6.  Генерация кода.
  7.  Анализ ошибок.

Генерация кода

  1.  Создание наборов свойств

При генерации кода учитываются свойства проекта в целом, а также свойства уровней классов, ролей, атрибутов и операций. К свойствам, регламентирующим характеристики проекта как такового, относятся имя файла проекта, названия контейнерных классов, используемых по умолчанию, и местоположение генерируемого кода. Свойства уровня класса обусловливают необходимость и способы создания конструкторов, деструкторов, конструкторов копии, операторов сравнения и методов get/set. Набор свойств роли определяет потребность в использовании методов get/set, признаки видимости методов и варианты применения того или иного контейнерного класса. Свойства операции позволяют отнести последнюю к одной из разновидностей (common – общая, virtual -  виртуальная, abstract – абстрактная, static – статическая, frient – «дружественная») и /или придать ей статус «постоянной» (constant). Ratinal Rose предоставляет возможность создания любого количества наборов свойств, отвечающих существу проекта, и их редактирования. Для каждого класса генерируются два файла – файл заголовка(.h) и файл спецификации (.cpp).

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

Как создать набор свойств

1. Выбрать элемент меню Tool          Options.

2. Перейти на вкладку С++ диалогового окна Options.

3. В раскрывающемся списке Type установить требуемый тип набора свойств.

4. Щелкнуть на кнопке Clone, чтобы открыть диалоговое окно Clone Property Set.

5. Ввести наименование нового набора свойств и закрыть окно щелчком на кнопке ОК.

6. В списке Model Properties выбрать свойство, подлежащее модификации, и щелкнуть в пределах столбца Value.

7. Ввести новое значение свойства, либо выбрать таковое с помощью раскрывающе-гося списка.

  1.  Повторить действия, перечисленные в п.п. 6, 7, для каждого свойства, которое должно быть изменено.
  2.  Щелкнуть на кнопке Apply, чтобы сохранить информацию.
  3.  Повторить действия, перечисленные в п.п. 3-9, с целью создания остальных наборов свойств.
  4.  Закрыть диалоговое окно Options щелчком на кнопке ОК.

Процесс создания набора свойств «виртуальный деструктор» проиллюстрирован на рис. А.1.

Рис. А.1. Создание набора свойств

  1.  Определение спецификаций компонентов

Rational Rose генерирует код, принимая во внимание номенклатуру созданных компонентов в совокупности с их стереотипами. Для каждого компонента без стереотипа система генерирует файл .h, содержащий информацию объявления и определения соответствующего класса. Если компонент снабжен стереотипом Package Specification, генерируется файл .h с объявлением класса. Если же при этом существует надлежащий компонент со стереотипом Package Body, генерируется и файл .cpp с определением класса.

Как определить или  создать  стереотип компонента

  1.  Двойным щелчком на элементе дерева в окне Browser, представляющем диаграмму компонентов, открыть окно диаграммы.
  2.  Расположить курсор мыши над элементом диаграммы, отвечающим требуемому компоненту, и щелкнуть правой кнопкой, чтобы активизировать контекстное меню.
  3.  Выбрать элемент меню Open Specification.
  4.  Перейти на вкладку General диалогового окна Component Specification.
  5.  В поле Stereotype ввести значение стереотипа, либо выбрать таковое с помощью раскрывающегося списка.
  6.  Закрыть диалоговое окно щелчком на кнопке ОК.

Диалоговое окно Component Specification изображено на рис. А.2.

Рис. А.2. Спецификация компонента

Как создать заголовок и тело компонента

  1.  Двойным щелчком на элементе дерева в окне Browser, представляющем диаграмму компонентов, открыть окно диаграммы.
  2.  Расположить курсор мыши над элементом диаграммы, отвечающим требуемому компоненту, и щелкнуть правой кнопкой, чтобы активизировать контекстное меню.
  3.  Выбрать элемент меню Open Specification.
  4.  Перейти на вкладку General диалогового окна Component Specification.
  5.  В раскрывающемся списке Stereotype выбрать значение стереотипа Package Specification для файла заголовка компонента, либо значение Package Body – для файла, содержащего тело кода компонента.
  6.  Закрыть диалоговое окно щелчком на кнопке ОК.

Пример диаграммы компонентов, элементы которой отвечают файлам .h и .cpp, приведен на рисунке А.3.

Рис. А.3. Уточненная диаграмма компонентов

  1.  Выбор языка С++ для компонентов

Как только компоненты, представляющие файлы .h и .cpp, созданы, им должен быть поставлен в соответствие язык программирования (С++). (Если языком, предлагаемым по умолчанию, является С++, - обратитесь к раскрывающемуся списку Default Language на вкладке Notation диалогового окна Options, активизируемого командой меню Tools      Options,  -  система автоматически выбирает опцию С++ для каждого компонента модели.)

Как выбрать язык программирования для компонента

  1.  Щелчком правой кнопки мыши указать компонент в дереве окна Browser либо на диаграмме компонентов и активизировать контекстное меню.
  2.  Выбрать элемент меню Open Specification.
  3.  Перейти на вкладку General диалогового окна Component Specification.
  4.  В раскрывающемся списке Language выбрать требуемую опцию (в данном случае – С++).
  5.  Закрыть диалоговое окно щелчком на кнопке ОК.

Окно спецификации компонента «курс» показано на рис. А.4.

Рис. А4. Выбор языка программирования  для компонента

4. Отнесение классов к компонентам

После создания компонентов, представляющих файлы .h, с ними следует сопоставить те или иные классы модели.

Как отнести класс к компоненту

  1.  Двойным щелчком на элементе дерева в окне Browser, представляющем диаграмму с компонентами файлов .h и .срр, открыть окно диаграммы.
  2.  Выбрать класс в дереве окна Browser, перетащить в окно диаграммы и опустить на компонент, соответствующий требуемому файлу .h.
  3.  Связывание наборов свойств с элементами модели

Каждый элемент модели (например, класс, атрибут или роль) анализируется системой с целью выявления свойств, которыми должен обладать генерируемый код. Если элемент должен обладать свойствами, отличными от тех, которые предусмотрены в наборе, предлагаемом по умолчанию, с элементом связывается тот или иной созданный набор свойств.

Как связать набор свойств с элементом модели

  1.  Щелчком правой кнопки мыши указать элемент модели в дереве окна Browser либо на диаграмме и активизировать контекстное меню.
  2.  Выбрать элемент меню Open Specification.
  3.  Перейти на вкладку С++ диалогового окна спецификации элемента.
  4.  В раскрывающемся списке Set выбрать требуемый набор свойств.
  5.  Закрыть диалоговое окно щелчком на кнопке ОК.

Окно спецификации класса «пользователь» изображено на рис. А.5.

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

Как переопределить свойство элемента модели

  1.  Щелчком правой кнопки мыши указать элемент модели в дереве окна Browser либо на диаграмме и активизировать контекстное меню.
  2.  Выбрать элемент меню Open Specification.
  3.  Перейти на вкладку С++ диалогового окна спецификации элемента.
  4.  В раскрывающемся списке Set  выбрать требуемый набор свойств.
  5.  В списке Model Properties указать свойство, подлежащее модификации, и щелкнуть в пределах столбца Value.
  6.  Ввести новое значение свойства либо выбрать таковое с помощью раскрывающегося списка.
  7.  Повторить действия, перечисленные в пп. 5, 6, для каждого свойства, которое должно быть изменено.
  8.  Щелкнуть на кнопке Override.
  9.  Закрыть диалоговое окно щелчком на кнопке ОК.
  10.  Генерация кода

Код может быть сгенерирован для пакета в целом, для отдельного компонента либо группы компонентов. В качестве имени файла, в который помещается код, выбирается наименование пакета или компонента. Файл располагается в структуре каталогов, соответствующей поддереву Component View дерева Browser.

Как сгенерировать код

  1.  Щелчком выбрать пакет, компонент или группу компонентов в дереве окна Browser либо на диаграмме.
  2.  Выбрать элемент меню Tools  C++  Code Generation.
  3.  Система осуществит генерацию кода и воспроизведет информацию о результатах в диалоговом окне Code Generation Status.

Окно Code Generation Status с данными об итогах генерации приведено на рис. А.6 (символы кириллицы в названиях элементов модели отображаются посредством восьмеричных кодов.).

Порядок выполнения работы.

  1.  Загрузить Rational Rose  и объектную модель (диаграммы) системы учета университетских курсов (см. лабораторные работы #1-7).
  2.  Создать набор свойств (стр. 156-157, рис.А.11).
  3.  Определить или создать стереотип компонента Курс (стр.157-158, рис.А.2).
  4.  Создать заголовок и тело компонентов (уточненную диаграмму компонентов) (стр. 158-159, рис. А.3).
  5.  Выбрать язык программирования для компонента Курс (стр. 158-159, рис.А.4).
  6.  Отнести классы к компонентам (стрю159-160).
  7.  Связать набор свойств с элементом модели (160-161, рис. А.5).
  8.  Сгенерировать код для пакета, для отдельного компонента либо группы компонентов (стр. 161). В качестве имени файла, в который помещается код, выбирается наименование пакета или компонента. Файл располагается в структуре каталогов, соответствующей поддереву Component View дерева Browser.

Список используемой литературы

1. Кватрани Е. Rational Rose 2000 и UML. Визуальное моделирование. 2001. 176с.

2. Г. Буч Объектно-ориентированный анализ и проектирование с примерами приложений на С++. 1998/2000, 560с.

3. Конспект лекций.


 

А также другие работы, которые могут Вас заинтересовать

9753. Бурение наклонно направленных скважин 276.96 KB
  Бурение наклонно направленных скважин Скважины бурятся для достижения нужной точки продуктивной зоны. При разработке морских месторождений (Рис. 1) А - проложение скважины. Бурение с морской платформы. Иногда нет возможности построить установку в ну...
9754. Осложнения аварий при бурении скважин 108.72 KB
  Осложнения аварий при бурении скважин. Под осложнением понимается, прерывание. Нормального процесса бурения при выполнении проектных условий, принятие неотложных мер. Поглощение промывочной жидкости. Нарушение устойчивости стенки скважин...
9755. Принципы разработки приложений в среде визуального программирования 3.35 MB
  Принципы разработки приложений в среде визуального программирования Разработка компьютерной программы - длительный и трудоемкий процесс. Чтобы окончательный вариант программы работал правильно и содержал как можно меньше ошибок, программисты придерж...
9756. Изучение принципов функционирования отладчика среды 6.08 MB
  Цель лекции: Изучить состав и структуру приложения. Изучить принципы функционирования отладчика среды. Учебные вопросы: 1. Состав и структура приложения. Файл проекта. Модуль формы. Разделы модуля формы. Связи между файлами проекта. 2. О...
9757. Биполярные транзисторы. Вольт-амперные характеристики транзистора 354.93 KB
  Биполярные транзисторы Биполярный транзистор представляет собой систему двух взаимодействующих p-n-переходов. В биполярном транзисторе физические процессы определяются носителями зарядов обоих знаков - основными и неосновными.
9758. Характеристики биполярного транзистора 50.62 KB
  Отчёт по лабораторной работе №2 Характеристики биполярного транзистора 1. Цель работы Экспериментальное определение вольт-амперных характеристик биполярного транзистора в схеме с общим эмиттером при нормальной и повышенной температурах, опре...
9759. Факторы среды жилого помещения, влияющие на здоровье человека 42.54 KB
  Оглавление. Введение. Основная часть. Глава. Факторы среды жилого помещения, влияющие на здоровье человека. Глава. Практическая часть...
9760. Характеристики и параметры полевых транзисторов с управляющим p-n-переходом 27.05 KB
  Дисциплина - Электроника Отчёт по лабораторной работе №3 Характеристики и параметры полевых транзисторов с управляющим p-n-переходом. Цель работы Исследование статических характеристик полевого транзистора с управляющим p-n-переходом и опред...
9761. Характеристики и параметры полевых транзисторов с управляющим P-N-переходом 96.37 KB
  Характеристики и параметры полевых транзисторов с управляющим P-N-переходом 1. Цель работы Исследование статических характеристик полевого транзистора с управляющим p-n-переходом и определение его основных параметров. 2. Схема проведения измер...