Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование автоматизированных информационных систем на основе о..pdf
Скачиваний:
27
Добавлен:
15.11.2022
Размер:
10.45 Mб
Скачать

12.5. Контрольная задача

Найдите узел, который определен неверно.

/

7

б) /

 

7

:Рабочая станция

 

 

:Сецвер

 

{процессор не ниже

 

 

развертывает

 

РШ-500,

7

 

main.exe

7

ОП не менее 128 МБ}

 

 

dbadmin.exe

13. ГЕНЕРАЦИЯ КОДА

13.1. Алгоритм получения исходного кода C++

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

При генерации кода мы будем использовать язык программиро­ вания C++, поскольку он является полноценным объектно ориенти­ рованным языком и, как правило, изучается в качестве базового в технических вузах. Поэтому сразу установим язык проекта по умолчанию C++. Для этого в раскрывающемся списке «Default Lan­ guage» на вкладке «Notation» диалогового окна «Options» (вызывает­ ся из главного меню через пункты «Tools» > «Options») установим значение «C++» и подтвердим выбор кнопкой «Ок».

Rational Rose генерирует код, принимая во внимание номенкла­ туру созданных компонентов в совокупности с их стереотипами. Для каждого компонента без стереотипа система генерирует файл «.h», содержащий информацию, объявления и определения соответствую­ щего класса. Если же компонент имеет стереотип «Package Specifica­ tion», генерируется файл «.Ь» только с объявлением класса. Если же при этом существует надлежащий компонент со стереотипом «Pack­ age Body», генерируется и файл «.срр» с определением класса [4].

Создадим на основе диаграммы компонентов (см. рис 11.4) уточ­ ненную диаграмму компонентов. Превратим представленные на этой диаграмме компоненты в заголовки компонентов. Для этого необхо­ димо в окне спецификации каждого компонента на закладке «General» указать стереотип «Package Specification» (рис. 13.1).

Устанавливая стереотип «Package Specification», попутно убе­ димся, что у каждого компонента поле «Language» окна специфика­ ции установлено в «C++».

После того как все абстрактные компоненты преобразованы в за­ головки компонентов, переходим к созданию тел компонентов. Для этого каждому компоненту диаграммы, представленной на рис. 11.4, создаем парный компонент с таким же названием, но со стереотипом «Package Body». Разместим новые компоненты на рабочей области

В окне «Output Window» перечислены предупреждения о том, что для ряда операций не указан тип возвращаемого результата, и пока­ зано, что Rational Rose назначает для этих операций тип «void».

Судя по протоколу, представленному на рис. 13.3, ошибок при генерации кода не возникло и мы можем посмотреть сгенерирован­ ный код классов.

По умолчанию файлы «.Ь» и «.срр» создаются в каталоге \<Папка

ycT aH O B K H >\R ational\R ose\C ++\Source.

В качестве примера приведем содержимое полученных файлов

класса «Teacher».

Имя файла: Teacher.h

/ / # # b e g i n m o d u l e % l . 4 % .c o d e g e n _ v e r s i o n p r e s e r v e = y e s

 

/ /

R e a d

t h e d o c u m e n t a t i o n t o

l e a r n m o r e a b o u t C++

c o d e

g e n e r a t o r

 

 

 

 

/ /

v e r s i o n i n g .

 

 

 

/ / # # e n d m o d u l e % l . 4 % . c o d e g e n _ v e r s i o n

 

 

/ / # # b e g i n m o d u le % 4 0 9 F A 6 0 9 0 3 A A . cm p r e s e r v e = n o

 

/ /

%X% %Q% %Z% %W%

 

 

 

/ / # # e n d m o d u le % 4 0 9 F A 6 0 9 0 3 A A .c m

 

 

 

/ / # # b e g i n m o d u le % 4 0 9 F A 6 0 9 0 3 A A . c p p r e s e r v e = n o

 

/ / # # e n d m o d u l e % 4 0 9 F A 6 0 9 0 3 A A . c p

 

 

 

/ / # # M o d u l e : T e a c h e r % 4 0 9 F A 6 0 9 0 3 A A ; P a c k a g e s p e c i f i c a t i o n

/ / # # S u b s y s t e m : < T o p L e v e l >

 

 

 

/ / # #

 

S o u r c e

f i l e :

C : \ P r o g r a m

F i l e s \ R a t i o n a l \ R o s e \ C + + \ s o u r c e \ T e a c h e r . h

 

 

# i f n d e f T e a c h e r _ h

 

 

 

# d e f i n e T e a c h e r _ h 1

 

 

 

/ / # #

b e g i n

m o d u le % 4 0 9 F A 6 0 9 0 3 A A . a d d i t i o n a l l n c l u d e s

p r e ­

s e r v e r ©

 

 

 

 

 

/ / # # e n d m o d u l e % 4 0 9 F A 6 0 9 0 3 A A . a d d i t i o n a l l n c l u d e s

 

/ / # #

b e g i n

module%409FA60903AA. i n c l u d e s

p r e s e r v e = y e s

 

/ /ttft

e n d m o d u le % 409FA60903AA. i n c l u d e s

 

 

/ / S y s U s e r

#i n c l u d e " S y s U s e r . h " / / T e a c h e r

#i n c l u d e " T e a c h e r . c p p "

/ / D i s c i p l i n e O f f e r

# i n c l u d e " D i s c i p l i n e O f f e r . h "

/ / # #

b e g i n m o d u l e % 4 0 9 F A 6 0 9 0 3 A A . d e c l a r a t i o n s p r e s e r v e = n o

/ / # #

e n d m o d u l e % 4 0 9 F A 6 0 9 0 3 A A . d e c l a r a t i o n s

/ / # # b e g i n m o d u l e % 4 0 9 F A 6 0 9 0 3 A A . a d d i t i o n a l D e c l a r a t i o n s

p r e s e r v e = y e s

/ / # #

e n d

m o d u l e % 4 0 9 F A 6 0 9 0 3 A A . a d d i t i o n a l D e c l a r a t i o n s

/ / # #

b e g i n T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p r e f a c e p r e s e r v e = y e s

/ / # #

e n d

T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p r e f a c e

/ / # # C l a s s : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2

 

 

 

/ / П р е п о д а в а т е л ь

 

 

 

 

 

/ / # # C a t e g o r y : P e r s o n a l D a t a % 4 0 9 E 7 C E 9 0 0 0 C

 

 

/ / # # S u b s y s t e m : < T o p L e v e l >

 

 

 

 

/ / # #

P e r s i s t e n c e :

T r a n s i e n t

 

 

 

 

/ / # #

C a r d i n a l i t y / M u l t i p l i c i t y : n

 

 

 

c l a s s

T e a c h e r

p u b l i c S y s U s e r

/ / # #

I n h e r i t s :

< u n -

named>%409DEC6F0190

 

 

 

 

 

{

 

 

 

 

 

 

 

/ / # #

b e g i n

T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . i n i t i a l D e c l a r a t i o n s

p r e s e r v e = y e s

 

 

 

 

 

 

/ / # # e n d T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . i n i t i a l D e c l a r a t i o n s

p u b l i c :

 

 

 

 

 

 

/ / # #

C o n s t r u c t o r s ( g e n e r a t e d )

 

 

 

 

T e a c h e r ( ) ;

 

 

 

 

 

 

T e a c h e r ( c o n s t T e a c h e r & r i g h t ) ;

 

 

/ / # #

D e s t r u c t o r ( g e n e r a t e d )

 

 

 

 

^ T e a c h e r ( ) ;

 

 

 

 

 

/ / # # A s s i g n m e n t O p e r a t i o n

( g e n e r a t e d )

 

 

 

T e a c h e r & o p e r a t o r = ( c o n s t T e a c h e r & r i g h t ) ;

 

/ / # #

E q u a l i t y O p e r a t i o n s

( g e n e r a t e d )

 

 

 

i n t o p e r a t o r = = ( c o n s t T e a c h e r & r i g h t )

c o n s t ;

 

 

i n t o p e r a t o r ! = ( c o n s t T e a c h e r & r i g h t )

c o n s t ;

 

/ / # #

G e t a n d S e t O p e r a t i o n s

f o r A s s o c i a t i o n s

( g e n e r ­

a t e d )

 

 

 

 

 

 

 

/ / # #

A s s o c i a t i o n :

<unnamed>%409E41320105

 

//##

 

 

 

 

 

 

R o l e :

T e a c h e r : : < t h e _ D i s c i p l i n e O f f e r > % 4 0 9 E 4 1 3 2 0 3 7 2

 

c o n s t

B o u n d e d S e t B y R e f e r e n c e < D i s c i p l i n e O f f e r , 4>

g e t _ _ t h e D i s c i p l i n e O f f e r

() c o n s t ;

 

 

 

v o i d

s e t _ t h e _ _ D i s c i p l i n e O f f e r

 

( B o u n d e d S e t B y R e f e r -

e n c e < D i s c i p l i n e O f f e r , 4 > v a l u e ) ;

 

 

 

/ / A d d i t i o n a l P u b l i c D e c l a r a t i o n s

 

 

/ / # #

b e g i n

T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p u b l i c

p r e -

s e r v e = y e s

 

Teacher%409D05C40162.p u b l i c

 

/ / # #

e n d

 

p r o t e c t e d :

 

 

 

 

 

 

/ / A d d i t i o n a l P r o t e c t e d D e c l a r a t i o n s

 

/ / # #

b e g i n

T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p r o t e c t e d

p r e -

s e r v e = y e s

 

 

 

 

 

 

 

/ / # # e n d T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p r o t e c t e d

 

p r i v a t e :

 

 

 

 

 

 

/ / # #

G e t

a n d S e t

O p e r a t i o n s

f o r

C l a s s A t t r i b u t e s

( g e n e r a t e d )

 

 

 

 

 

 

 

/ / # # A t t r i b u t e : s c i e n c e D e g r e e % 4 0 9 D F 9 F 6 0 2 4 3

 

/ / Н а у ч н а я с т е п е н ь

 

 

 

 

c o n s t S t r i n g g e t _ s c i e n c e D e g r e e

() c o n s t ;

 

v o i d s e t _ s c i e n c e D e g r e e ( S t r i n g v a l u e ) ;

 

/ / A d d i t i o n a l P r i v a t e D e c l a r a t i o n s

 

 

/ / # #

b e g i n

T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p r i v a t e

 

s e r v e = y e s

 

 

 

 

 

 

 

/ / # # e n d T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p r i v a t e

 

p r i v a t e :

/ / # #

i m p l e m e n t a t i o n

 

 

 

/ / D a t a M e m b e r s f o r C l a s s A t t r i b u t e s

 

/ / # #

 

 

 

 

 

 

b e g i n

T e a c h e r : : s c i e n c e D e g r e e % 4 0 9 D F 9 F 6 0 2 4 3 . a t t r

p r e s e r v e = n o

p r i ­

v a t e : S t r i n g

{U}

 

 

 

 

 

 

S t r i n g s c i e n c e D e g r e e ;

/ / # # e n d T e a c h e r : : s c i e n c e D e g r e e % 4 0 9 D F 9 F 6 0 2 4 3 . a t t r

/ / D a t a M e m b e r s f o r A s s o c i a t i o n s

/ / # #

A s s o c i a t i o n : < u n n a m e d > % 4 0 9 E 4 1 3 2 0 1 0 5

/ / # #

 

T e a c h e r : : < t h e _ D i s c i p l i n e O f f e r > % 4 0 9 E 4 1 3 2 0 3 7 2 . r o l e s e r v e = n o p u b l i c : D i s c i p l i n e O f f e r { 1 - > 0 . . 4 R H N }

b e g i n p r e -

B o u n d e d S e t B y R e f e r e n c e < D i s c i p l i n e O f f e r , 4 >

the_DisciplineOffer;

//##

e n d

T e a c h e r : : < t h e _ D i s c i p l i n e O f f e r > % 4 0 9 E 4 1 3 2 0 3 7 2 . r o l e

/ / A d d i t i o n a l I m p l e m e n t a t i o n D e c l a r a t i o n s

/ / # # b e g i n T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . i m p l e m e n t a t i o n

preserve=yes

 

/ / # # e n d T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . i m p l e m e n t a t i o n

/ / # #

b e g i n T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p o s t s c r i p t p r e s e r v e = y e s

/ / # #

e n d T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 . p o s t s c r i p t

/ / C l a s s

/ / # #

G e t

( i n l i n e )

 

T e a c h e r

 

 

 

 

 

a n d

S e t

O p e r a t i o n s

f o r

C l a s s

A t t r i b u t e s

i n l i n e c o n s t S t r i n g T e a c h e r : : g e t _ s c i e n c e D e g r e e () c o n s t

{

/ / # #

b e g i n

T e a c h e r : : g e t _ s c i e n c e D e g r e e % 4 0 9 D F 9 F 6 0 2 4 3 . g e t

p r e s e r v e = n o

 

 

 

r e t u r n s c i e n c e D e g r e e ;

 

/ / # # e n d T e a c h e r : : g e t _ s c i e n c e D e g r e e % 4 0 9 D F 9 F 6 0 2 4 3 . g e t

)

 

 

 

i n l i n e v o i d T e a c h e r : : s e t _ s c i e n c e D e g r e e ( S t r i n g v a l u e )

{

 

 

 

/ / # #

b e g i n

T e a c h e r : : s e t _ s c i e n c e D e g r e e % 4 0 9 D F 9 F 6 0 2 4 3 . s e t

p r e s e r v e = n o

 

 

 

s c i e n c e D e g r e e = v a l u e ;

 

/ / # # e n d T e a c h e r : : s e t _ s c i e n c e D e g r e e % 4 0 9 D F 9 F 6 0 2 4 3 . s e t

}

 

 

 

/ / # # G e t a n d S e t O p e r a t i o n s f o r A s s o c i a t i o n s

( i n l i n e )

i n l i n e

c o n s t B o u n d e d S e t B y R e f e r e n c e < D i s c i p l i n e O f f e r , 4 >

T e a c h e r : : g e t _ t h e _ D i s c i p l i n e O f f e r () c o n s t

 

{

 

 

 

/ / # #

 

 

b e g i n

T e a c h e r : : g e t _ t h e _ D i s c i p l i n e O f f e r % 4 0 9 E 4 1 3 2 0 3 7 2 . g e t

p r e -

s e r v e = n o

 

 

 

r e t u r n t h e _ D i s c i p l i n e O f f e r ;

 

/ / # #

 

 

e n d

T e a c h e r : : g e t _ t h e _ D i s c i p l i n e O f f e r % 4 0 9 E 4 1 3 2 0 3 7 2 . g e t

 

}

i n l i n e v o i d T e a c h e r : : s e t _ t h e _ D i s c i p l i n e O f f e r ( B o u n d e d -

S e t B y R e f e r e n c e < D i s c i p l i n e O f f e r , 4 > v a l u e )

{

//##

T e a c h e r : : s e t _ t h e _ D i s c i p l i n e O f f e r % 4 0 9 E 4 1 3 2 0 3 7 2 . s e t s e r v e = n o

t h e _ D i s c i p l i n e O f f e r = v a l u e ;

b e g i n p r e ­

//##

e n d

T e a c h e r : : s e t _ t h e _ D i s c i p l i n e O f f e r % 4 0 9 E 4 1 3 2 0 3 7 2 . s e t

 

}

 

/ / # # b e g i n m o d u l e % 4 0 9 F A 6 0 9 0 3 A A . e p i l o g p r e s e r v e = y e s / / # # e n d m o d u l e % 4 0 9 F A 6 0 9 0 3 A A . e p i l o g

# e n d i f

Имя файла: Teacher.cpp

/ / # # M o d u l e : T e a c h e r % 4 0 9 F C 7 3 F 0 2 4 6 ; P a c k a g e b o d y / / # # S u b s y s t e m : < T o p L e v e l >

/ / # # S o u r c e f i l e : C : \ P r o g r a m

F i l e s \ R a t i o n a l \ R o s e \ C + + \ s o u r c e \ T e a c h e r . c p p

/ / # # b e g i n m o d u le % 4 0 9 F C 7 3 F 0 2 4 6 . a d d i t i o n a l l n c l u d e s p r e - s e r v e = n o

/ / # # e n d m o d u le % 4 0 9 F C 7 3 F 0 2 4 6 . a d d i t i o n a l l n c l u d e s

/ / # # b e g i n m o d u l e % 4 0 9 F C 7 3 F 0 2 4 6 . i n c l u d e s p r e s e r v e = y e s / / # # e n d m o d u l e % 4 0 9 F C 7 3 F 0 2 4 6 . i n c l u d e s

/ / T e a c h e r

# i n c l u d e " T e a c h e r . h"

/ / # # b e g i n m o d u l e % 4 0 9 F C 7 3 F 0 2 4 6 . d e c l a r a t i o n s p r e s e r v e = n o / / # # e n d m o d u l e % 4 0 9 F C 7 3 F 0 2 4 6 . d e c l a r a t i o n s

/ / # # b e g i n m o d u le % 4 0 9 F C 7 3 F 0 2 4 6 . a d d i t i o n a l D e c l a r a t i o n s p r e - s e r v e = y e s

/ / # # e n d m o d u l e % 4 0 9 F C 7 3 F 0 2 4 6 . a d d i t i o n a l D e c l a r a t i o n s

/ / C l a s s T e a c h e r

T e a c h e r : : T e a c h e r ()

/ / # # b e g i n T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o n s t . h a s i n i t p r e s e r v e = n o

/ / # # e n d T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o n s t . h a s i n i t / / # # b e g i n

T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o n s t . i n i t i a l i z a t i o n p r e - s e r v e = y e s

/ / # # e n d

T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o n s t . i n i t i a l i z a t i o n

{

/ / # # b e g i n T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o n s t . b o d y p r e -

s e r v e = y e s

/ / # # e n d T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o n s t . b o d y

}

T e a c h e r : : T e a c h e r ( c o n s t T e a c h e r b r i g h t )

/ / # # b e g i n T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o p y . h a s i n i t

p r e s e r v e = n o

/ / # # e n d T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o p y . h a s i n i t

/ / # # b e g i n

T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o p y . i n i t i a l i z a t i o n p r e - s e r v e = y e s

/ / # # e n d

T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o p y . i n i t i a l i z a t i o n

{

/ / # # b e g i n T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o p y . b o d y p r e - s e r v e = y e s

/ / # # e n d T e a c h e r : : T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ c o p y . b o d y

}

T e a c h e r : : - T e a c h e r ()

{

/ / # # b e g i n T e a c h e r : : - T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ d e s t . b o d y p r e -

s e r v e = y e s

/ / # # e n d T e a c h e r : : - T e a c h e r % 4 0 9 D 0 5 C 4 0 1 6 2 _ d e s t . b o d y

}

T e a c h e r & T e a c h e r : : o p e r a t o r = ( c o n s t T e a c h e r & r i g h t )

{

/ / # # b e g i n T e a c h e r : : o p e r a t o r = % 4 0 9 D 0 5 C 4 0 1 6 2 _ a s s i g n . b o d y

p r e s e r v e = y e s

/ / # # e n d T e a c h e r : : o p e r a t o r = % 4 0 9 D 0 5 C 4 0 1 6 2 _ a s s i g n . b o d y

}

i n t T e a c h e r : : o p e r a t o r = = ( c o n s t T e a c h e r & r i g h t ) c o n s t

{

/ / # # b e g i n T e a c h e r : : o p e r a t o r = = % 4 0 9 D 0 5 C 4 0 1 6 2 _ e q . b o d y p r e - s e r v e = y e s

/ / # # e n d T e a c h e r : : o p e r a t o r = = % 4 0 9 D 0 5 C 4 0 1 6 2 _ e q . b o d y

}

i n t T e a c h e r : : o p e r a t o r ! = ( c o n s t T e a c h e r & r i g h t ) c o n s t

{

/ / # # b e g i n T e a c h e r : : o p e r a t o r ! = % 4 0 9 D 0 5 C 4 0 1 6 2 _ n e q . b o d y p r e - s e r v e = y e s

/ / # # e n d T e a c h e r : : o p e r a t o r ! = % 4 0 9 D 0 5 C 4 0 1 6 2 _ n e q . b o d y

}

/ / A d d i t i o n a l D e c l a r a t i o n s

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]