Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Генерация программного кода




Создание компонентной диаграммы

 

Допустим, что наступил момент, когда нужно генерировать коды для классов модели. Для определения компонентов исходного кода используют компонентное представление (Component View) (рис. 15.13). Среда Rational Rose автоматически создает главную компонентную диаграмму.

1. В окне браузера щелкнем по значку + слева от пакета Component View.

2. Для открытия главной компонентной диаграммы выполним двойной щелчок по значку Main.

В общем случае каждому классу должны соответствовать два компонента — компонент спецификации и компонент реализации. В будущем каждому компоненту будет соответствовать свой файл. Например, в языке C++ классу соответствуют два файла-компонента: h-файл (файл спецификации) и срр-файл (файл реализации).

В нашей модели мы создадим один компонент для представления файла спецификации по классу CourseOffering и один компонент для представления файла реализации по классу CourseOffering (рис. 15.14).

Эти файлы будут иметь расширения.ads и.adb соответственно. Файл.ads имеет стереотип Package Specification. Файл.adb имеет стереотип Package Body.

1. На панели инструментов щелкните по значку спецификации пакета Package Specification.

2. Для добавления компонента в диаграмму щелкните в нужном месте диаграммы.

3. Пока новый компонент остается выделенным, введите его имя — CourseOffering.

4. Повторите предыдущие шаги с использованием значка тела пакета Package Body.

5. На панели инструментов щелкните по значку отношения зависимости.

6. Щелкните по компоненту, представляющему.adb-файл (тело пакета), и перетащите стрелку на компонент, представляющий.ads-файл (спецификация пакета).

 

Рис. 15.13. Компонентное представление — Component View

 

Рис. 15.14. Компонентное представление

 

После создания компонентов им должны быть назначены классы модели (рис. 15.15).

1. Выполним двукратный щелчок по значку компонента CourseOffering, представляющего.ads-файл (спецификацию пакета), в окне браузера или компонентной диаграмме. В результате станет видимым окно спецификации компонента.

2. Выберите страницу (вкладку) Realizes. Вы увидете список классов модели.

3. Щелкните правой кнопкой по классу CourseOffering. В результате станет видимым контекстное меню.

4. Выберите команду Assign.

5. Закройте окно спецификации, нажав кнопку ОК.

6. Выполните аналогичные действия для тела пакета, представляющего.adb-файл.

 

Рис. 15.15. Назначение классов компоненту

 

 

Команды для генерации кода содержит пункт Toots главного меню (рис. 15.16).

1. На компонентной диаграмме выделите оба компонента CourseOffering.

2. Выберите команду Tools: Code Generation из главного меню.

Итоги генерации кода отображаются в окне Code Generation Status (рис. 15.17).

Все ошибки заносятся в log-окно.

3. Для завершения процесса генерации кода нажмите кнопку Close.

 

Рис. 15.16. Меню Tools: генерация кода

 

Рис. 15.17. Статус генерации кода

 

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

Просмотрим код, сгенерированный средой Rational Rose.

Фрагмент содержания.ads-файла, отражающего спецификацию класса CourseOffering, представлен на рис. 15.18. Отметим, что в программный текст добавлено то описание, которое было внесено в модель через окно документации. Более того, система Rational Rose подготавливает код к многократной итеративной модификации, защите выполняемых изменений. Стандартный раздел программного кода имеет вид

--##begin module.privateDeclarations preserve=yes

--##end module.privateDeclarations

 

Рис. 15.18. Код спецификации класса, сгенерированный средой Rational Rose

 

Запись module.privateDeclarations обозначает имя раздела. Элемент preserve=(yes/no) говорит системе, можно ли при повторной генерации кода этот раздел изменять или нельзя. После генерации кода программный текст добавляется между операторами ##begin и ##end.

Соответственно, фрагмент содержания.adb-файла, отображающего тело класса CourseOffering, представлен на рис. 15.19.

 

Рис. 15.19. Код тела класса, сгенерированный Rational Rose

 




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


Дата добавления: 2014-12-25; Просмотров: 1092; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.