Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Проектирование автоматизированных информационных систем на основе объектно-ориентированного подхода

..pdf
Скачиваний:
0
Добавлен:
12.11.2023
Размер:
10.56 Mб
Скачать

лиотеке. На оба компьютера будет установлена клиентская часть программного обеспечения студента. И последний компьютер со­ держит клиентскую часть программного обеспечения преподавателя и будет расположен в преподавательской. Все перечисленные ком­ пьютеры соединяются 100-мегабитной сетью на основе витой пары.

Для того чтобы создать диаграмму, представленную на рис. 12.3, необходимо дважды щелкнуть на элементе «Deployment View» окна браузера. В результате этого откроется рабочая область диаграммы. Затем, воспользовавшись пиктограммой «Processor» или «Device» панели инструментов, необходимо последовательно перенести все компоненты на рабочую область диаграммы и соединить между со­ бой с помощью пиктограммы «Connection».

12.3. Подведение итогов

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

Построение диаграммы развертывания не требуется, если реали­ зуемая система достаточно проста и выполняется локально на одном компьютере.

12.4.Контрольные вопросы

1.Для чего служат диаграммы развертывания?

2.Что представляет собой узел диаграммы развертывания?

3.Допускается ли указывать характеристики аппаратных уст­ ройств на диаграмме развертывания?

4.Какие программные файлы не могут быть представленные на диаграмме развертывания?

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

Соседние файлы в папке книги