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

/ / # #

b e g i n Teacher%409D05C40162. 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

Teacher%409D05C40162.d e c l a r a t i o n s

/ / # #

b e g i n

module%409FC73F0246 . e p i l o g p r e s e r v e = y e s

/ / # #

e n d module%409FC73F0246. e p i l o g

Если внимательно посмотреть на полученные результаты, то можно увидеть, что помимо структуры класса при генерации кода были учтены и все существующие отношения класса «Teacher», на­ пример, отношение наследования (обобщения) от класса «SysUser» (файл «teacher.h»). Полученный файл «teacher» скорее напоминает шаблон для описания методов класса.

13.2.Задания для самостоятельного выполнения

1.Создайте в Rational Rose новый проект.

2.В рамках этого проекта постройте диаграмму классов, пред­ ставленную на рис. 13.5.

 

Office

1

1..*

Manager

 

 

 

 

name: String

 

 

 

Company

address: String

 

 

Employee

name: String

o -

 

 

TD: Integer

address: String

 

 

- \> 1FO: String

INN: String

 

 

 

getlnformationO

 

 

 

 

 

Warehouse

1

1..*

getPhotoQ

 

Storekeeper

 

 

 

 

 

 

 

num: Integer 1..* address: String

Рис. 13.5. Диаграмма классов, отображающая структуру предприятия

3.Создайте соответствующую диаграмму компонентов для реа­ лизации классов.

4.Выполните генерацию модели в программный код языка C++.

5.Проанализируйте полученные результаты.

ЗАКЛЮЧЕНИЕ

В заключении хотелось бы еще раз напомнить о том, что любой серьезный проект требует к себе серьезного отношения. Это означа­ ет, что мы должны понять, что хотим от разрабатываемой системы еще на стадии анализа и проектирования системы, а не на этапе гене­ рации кода или стадии опытной эксплуатации. Язык, а точнее нота­ ция UML, представляет собой инструмент, с помощью которого мы можем построить «чертеж» будущей системы, понятный не только всем тем, кто принимает участие в разработке, но и конечному поль­ зователю системы.

Данное учебное пособие не претендует на полное описание языка UML, но предоставляет читателю возможность взять «быстрый старт» в изучении основ объектно ориентрованного проектирования с использованием UML и закрепить свои знания путем реализации практических примеров в среде Rational Rose.

СПИСОК ЛИТЕРАТУРЫ

1.Буч Г., Рамбо Дж., Джекобсон А. Язык UML. Руководство пользователя. - М.: ДМК, 2000.

2.Леоненков А.В. Самоучитель UML. - СПб.: BHV, 2001.

3.Рамбо Дж. Объектно ориентированное моделирование и про­ ектирование.-Нью-Джерси: Prentice hall, 1991.

4.Кватрани Т. Визуальное моделирование с помощью Rational Rose 2002 и UML. - Киев: Вильямс, 2003.

5.Смит К. Практическое руководство по созданию гибкого и мас­ штабируемого программного обеспечения. - Киев: Вильямс, 2003.

6.Игумнов Е. Software Project Manager среднего проекта - кто он? - URL: http://manager.olc.ru/spm/index.htrnl.

Приложение 1

ИСПОЛЬЗОВАНИЕ МОДУЛЯ «RATIONAL ROSE C++ ANALYZER» ДЛЯ ОБРАТНОГО ВОССТАНОВЛЕНИЯ МОДЕЛИ ПО ИСХОДНОМУ КОДУ

Rational Rose предоставляет разработчику возможность восста­ новления модели по программному коду. За поддержку этой функции отвечает модуль «Rational Rose C++ Analyzer», который представляет собой отдельное приложение. Данный модуль может быть вызван либо из соответствующего пункта меню программ операционной системы Windows, либо непосредственно из приложения Rational Rose посредством выбора пункта «Tools» > «С++»> «Reverse Engi­ neering» главного меню.

Рассмотрим пример восстановления модели по программному коду. Для этого в любом текстовом редакторе создадим два файла: «Document.h» и «Document.cpp».

Файл «Document.h» будет содержать в себе объявления двух клас­ сов: «Document» (документ) и «Invoice» (счет-фактура), а файл «Document.cpp» - определения этих классов. При этом класс «Invoice» наследует структуру и методы класса «Document».

Ниже приведено содержимое файлов «Document.h» и «Docu­ ment.cpp».

Docum ent.h

/ / к л а с с д о к у м е н т а

 

 

c l a s s D o c u m e n t

 

 

{

 

 

p r i v a t e :

 

 

c h a r * d o c N u m ;

/ / н о м е р д о к у м е н т а

c h a r * d o c D a t e ; / / д а т а д о к у м е н т а

c h a r * a u t h o r ;

/ / а в т о р д о к у м е н т а

p u b l i c :

 

 

D o c u m e n t ( ) ;

/ / к о н с т р у к т о р

' D o c u m e n t () ;

/ / д е с т р у к т о р

c h a r v o i d c h a r v o i d c h a r v o i d

* g e t _ d o c N u m ( ) ;

s e t _ d o c N u m ( c h a r * v a l u e ) ;

* g e t _ d o c D a t e ( ) ;

 

s e t _ d o c D a t e ( c h a r

* v a l u e ) ;

* g e t _ a u t h o r ( ) ;

 

s e t a u t h o r ( c h a r

* v a l u e ) ;

};

/ / к л а с с с ч е т - ф а к т у р а , н а с л е д о в а н и е о т D o c u m e n t

c l a s s I n v o i c e

p u b l i c D o c u m e n t

{

 

 

p r i v a t e :

 

 

f l o a t a m o u n t ;

/ / с у м м а

f l o a t t a x ;

 

/ / н а л о г

f l o a t a m o u n t T a x ; / / с у м м а с н а л о г о м p u b l i c :

f l o a t g e t _ v a l u e ( i n t n ) ;

v o i d s e t _ _ v a l u e ( f l o a t a m o u n t , f l o a t t a x ) ; p r o t e c t e d :

Document.cpp

# i n c l u d e < d o c u m e n t . h > D o c u m e n t : : D o c u m e n t ()

U ;

D o c u m e n t : : ~ D o c u m e n t ()

{};

c h a r * D o c u m e n t : : g e t _ d o c N u m () { r e t u r n d o cN u m ;

}

c h a r * D o c u m e n t : : g e t _ d o c D a t e ()

{ r e t u r n d o c D a t e ;

}

c h a r * D o c u m e n t : : g e t _ a u t h o r () { r e t u r n a u t h o r ;

}

v o i d D o c u m e n t : : s e t _ d o c N u m ( c h a r * v a l u e )

{ d o cN u m = v a l u e ;

}

v o i d D o c u m e n t : : s e t _ d o c D a t e ( c h a r * v a l u e )

{ d o cN u m = v a l u e ;

}

v o i d D o c u m e n t : : s e t _ a u t h o r ( c h a r * v a l u e )

{ a u t h o r = v a l u e ;

}

f l o a t

I n v o i c e : : g e t _ v a l u e ( i n t n )

{ i f

(n == 1)

r e t u r n

a m o u n t ;

i f

(n = =

2 )

r e t u r n

t a x ;

i f

(n = =

3 ) r e t u r n a m o u n t T a x ;

};

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