- •Р.А. Файзрахманов, А.В. Архипов
- •ПРОЕКТИРОВАНИЕ АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ НА ОСНОВЕ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА
- •4.3. Подведение итогов
- •4.4. Контрольные вопросы
- •4.5. Контрольные задачи и упражнения
- •5. ДИАГРАММА КЛАССОВ
- •5.1. Теоретическая часть
- •5.2. Реализация в Rational Rose
- •5.5. Контрольные задачи и упражнения
- •6.1. Теоретическая часть
- •6.2. Реализация в Rational Rose
- •6.3. Подведение итогов
- •6.4. Контрольные вопросы
- •6.5. Контрольная задача
- •7. ДИАГРАММА ПОСЛЕДОВАТЕЛЬНОСТЕЙ
- •7.1. Теоретическая часть
- •7.2. Реализация в Rational Rose
- •7.3. Подведение итогов
- •7.4. Контрольные вопросы
- •7.5. Контрольные задачи
- •8. ДИАГРАММА СОТРУДНИЧЕСТВА
- •8.1. Теоретическая часть
- •8.2. Реализация в Rational Rose
- •8.5. Контрольные задачи
- •9. ДИАГРАММА СОСТОЯНИЙ
- •9.1. Теоретическая часть
- •9.3. Подведение итогов
- •9.4. Контрольные вопросы
- •9.5. Контрольные задачи
- •10. ДИАГРАММА ДЕЯТЕЛЬНОСТЕЙ
- •10.1. Теоретическая часть
- •10.3. Подведение итогов
- •10.4. Контрольные вопросы
- •11. ДИАГРАММА КОМПОНЕНТОВ
- •11.1. Теоретическая часть
- •11.4. Контрольные вопросы
- •11.5. Контрольные задачи
- •12.3. Подведение итогов
- •12.4. Контрольные вопросы
- •12.5. Контрольная задача
- •13. ГЕНЕРАЦИЯ КОДА
- •13.1. Алгоритм получения исходного кода C++
- •13.2. Задания для самостоятельного выполнения
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
- •ИСПОЛЬЗОВАНИЕ МОДУЛЯ «RATIONAL ROSE C++ ANALYZER» ДЛЯ ОБРАТНОГО ВОССТАНОВЛЕНИЯ МОДЕЛИ ПО ИСХОДНОМУ КОДУ
- •РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ИСПОЛЬЗОВАНИЕМ UML
- •1. Разработка диаграммы прецедентов
- •2. Разработка диаграммы классов
- •3. Разработка диаграмм взаимодействия
- •4. Разработка диаграммы состояний
- •5. Разработка диаграммы деятельности
- •9. Разработка приложения
- •Контрольные вопросы
- •МОДЕЛЬ РАБОТЫ ПРЕДПРИЯТИЯ ОПТОВОЙ ТОРГОВЛИ. РАЗРАБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ
- •ОГЛАВЛЕНИЕ
- •1. Деятельность и структура предприятия
- •2.1. Реализация продукции со склада
- •2.2. Возврат товара клиентом
- •2.3. Закупка продукции
- •3.1. Общие требования и принципы построения системы
- •3.2. Обеспечение связи офис - склад
- •3.3. Требования к персоналу
- •4. Диаграмма прецедентов
- •4.1. Реализация продукции со склада
- •5. Диаграмма классов
- •5.2. Контрагенты предприятия оптовой торговли
- •5.3. Продукция предприятия оптовой торговли
- •5.4. Заказ продукции
- •5.5. Накладная на получение товара
- •6. Диаграмма взаимодействия
- •12. Разработка приложения
- •ПРОЕКТИРОВАНИЕ АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ НА ОСНОВЕ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА
/ / # # |
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 ; |
};