- •Р.А. Файзрахманов, А.В. Архипов
- •ПРОЕКТИРОВАНИЕ АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ НА ОСНОВЕ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА
- •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. Разработка приложения
- •ПРОЕКТИРОВАНИЕ АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ НА ОСНОВЕ ОБЪЕКТНО ОРИЕНТИРОВАННОГО ПОДХОДА
для пользователей. Для того чтобы сакцентировать внимание на этом факте, для этих классов был установлен стереотип «boundary».
В спецификации соответствующих прецедентов было указано, что большинство операций с заказами контролируются системой. Поэтому имеет смысл создать классы управления: «OrderControl» (контроль за каза) и «OrderPosControl» (контроль строки заказа) - и возложить на них обязанности по контролю за потоком событий. Оба класса выде лены стереотипом «control» и содержат некую операцию проверки/подтверждения корректности выполнения действий над заказами и их строками. Назовем данную операцию «submit()». Класс «OrderPos Control» содержит дополнительную операцию «getNet(productCode: char *): double», позволяющую определить остаток по продукту при создании новой строки заказа. Остаток в общем случае рассчитывается вычитанием из прихода товара его расхода и оплаченных, но неотгруженных заказов. Если остаток меньше затребованного количества, то соответствующая строка заказа создана не будет.
Диаграмма классов, объединяющая классы, относящиеся к оформ лению заказа, представлена на рис. П3.18.
5.5. Накладная на получение товара
Следующим важным документом, который необходимо рассмот реть, является товарно-транспортная накладная. Класс, соответствую щий накладной, назовем «Waybill». Товарно-транспортная накладная ассоциирована с получателем и отправителем груза (рис. П3.19).
Рис. П3.19. Ассоциация накладной с грузополучателем и грузоотправителем
Класс «Waybill» содержит следующие атрибуты:
-wbNumber (номер накладной);
-wbDate (дата накладной);
-amount (сумма);
-taxAmount (сумма с налогом);
-netWeight (вес нетто);
-totalWeight (вес брутто по накладной);
-priority (приоритет);
-status (статус накладной);
-factShipmentDate (дата фактической отгрузки);
-factShipmentTime (время фактической отгрузки);
-responsGive (ФИО материально ответственного лица, отпус тившего груз);
-cargoRecip (ФИО лица, принявшего груз);
-note (примечания, комментарии);
атакже операции:
-getNetWeight() (получить вес нетто по позициям/строкам на кладной);
-getTotalWeight() (получить вес брутто по позициям/строкам накладной).
Накладная, как и заказ, содержит строки, связанные с ней отно шением агрегирования (рис. ИЗ.20).
Рис. П3.20. Накладная на отпуск продукции
Класс «WaybillPosition» (строка накладной) содержит атрибуты:
-quantity (количество);
-measureUnit (единица измерения);
-tareWeight (вес упаковки);
-tareKind (вид упаковки);
-price (цена);
-taxPrice (цена с налогом);
-amount (сумма);
-taxAmount (сумма с налогом);
-note (примечания, комментарии).
При описании соответствующих прецедентов было сказано, что накладная, как и ее строки, связана с заказом. Точнее говоря, опла ченный заказ служит основанием для выписки накладной. Можно подумать, что накладная является потомком заказа. Но на самом деле нет, поскольку это два совершенно разных документа, играющие аб солютно разные роли в бизнес-процессах. Накладная связана с зака зом обыкновенной ассоциацией, также как ее строки связаны с соот ветствующими строками заказа. При этом мы не исключаем возмож ности, что с одного заказа будет выписано несколько накладных. Справедливости ради стоит отметить, что мы могли бы использовать и механизмы наследования, если бы создали некий общий класс - документ, содержащий атрибуты, характерные как для накладной, так и для заказа. В этом случае заказ и накладная были бы производ ными классами общего класса-документа.
На рис. П3.21 представлена диаграмма классов, на которой изо бражены связи накладной с заказом.
Рис. П3.21. Связь накладной с заказом
Позиция накладной, как и позиция заказа, ассоциирована с про дуктом (рис. П3.22).
W a y w b illP o s itio n |
----------------- |
P ro d u c t |
1 |
1 |
|
Для реализации работы пользователя с накладными вводятся гра ничные классы. При этом необходимо помнить, что работа с наклад ными осуществляется как в офисе, так и на складе. Набор опций, предоставляемый офисной формой (бухгалтерский модуль), отлича ется от набора опций складской формы (АРМ кладовщика), но ряд опций одинаков для обеих форм. Поэтому создадим базовый класс «WaybillForm» (форма работы с накладной), содержащий следующие общие операции для обеих форм:
-select () (выделить накладную);
-display() (отобразить атрибуты накладной);
-find() (найти накладную);
-changeStatus() (state: char *) (изменить статус накладной). Затем создадим производные классы от «WaybillForm»: «Waybill-
OfficeForm» и «WaybillWarehouseForm» (рис. П3.23).
Рис. П3.23. Отношение наследования для форм работы с накладными
Операции производных классов не нуждаются в комментариях (так как аналогичны тем операциям, которые использовались при описании заказа), за исключением операции «displayPositions», кото рая отображает на экране позиции выбранной накладной, и операции «changeDisplayList()», обеспечивающей переход накладной из одного списка в другой при изменении статуса накладной.
Бухгалтер, в отличие от кладовщика, имеет возможность моди фицировать накладную, включая ее строки. Поэтому необходимо создать еще один класс поддержки работы со строками (рис. П3.24).
Рис. П3.24. Опции формы бухгалтерского модуля
Рис. П3.25. Опции работы с накладными
По аналогии с заказами создаются классы управления: «WaybillWarehouseControl», «WaybillOfficeControl», «WaybillOfficePosControl». Полная диаграмма классов работы с накладными пред ставлена на рис. П3.25.
В разд. 4.2 содержится полное описание процедуры возврата то вара клиентом. При этом создается документ - акт возврата товара. Система, как и в ранее описанных случаях работы с документами, предоставляет стандартный набор опций: создание, удаление, печать акта и т.д. Из новых опций только одна - печать договорного согла шения. Данная операция называется «printAgreement» и заключается в создании твердой копии договорного соглашения с содержимым, приведенным в разд. 4.2.
Структура класса «RetumAct» (акт возврата) аналогична структу ре накладной и заказа. Акт содержит некоторую шапку, в которой указывается номер и дата акта, а также подробное описание причины возврата, т.е. выявленного дефекта, и товарные позиции/строки, ко торые содержат информацию о количестве возвращаемого товара.
Рис. П3.26. Диаграмма классов акта возврата товара
Структура и связи акта представлены на рис. П3.26.
Планирование поставок очередной партии товара для дальней шей реализации - одна из самых важных задач, решаемая аналитика ми, экономистами и логистами. От того, насколько оптимально будет выстроена цепочка поставок, зависит финансовый результат деятель ности предприятия.
Мы не будем заострять внимание на разработке интерфейса и форм обработки данных, а рассмотрим структуру самого плана закупок.
Каждый план составляется на определенный период планирования и утверждается руководителем предприятия. Пока этот период не ис тек, план является действующим. По истечении периода план закрыва ется. Поэтому класс «PurchasePlan» (план закупок) должен иметь ат рибуты, определяющие период действия плана и его статус, а также номер и дату составления плана для идентификации в системе:
-planNumber (номер плана);
-planDate (дата составления);
-startDate (дата начала действия плана);
-finishDate (дата окончания действия плана);
-status (статус плана).
Рис. П3.27. План закупок
План составляется для каждой номенклатурной позиции. Поэто му необходимо создать еще один класс, который бы детализировал