Файл: Моделирование предметной области «Учет товаров» с помощью UML (Объектно-ориентированное проектирование приложений).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.04.2023

Просмотров: 443

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Как видно из рисунка 2.1, при описании модели используются русскоязычные названия классов, атрибутов и ассоциаций. Это очень удобно использовать для наглядности модели. Чтобы при создании приложения в Delphi не возникало проблем, необходимы англоязычные названия классов, атрибутов и ассоциаций. Для этого необходимо настроить некоторые тег-параметры классов, атрибутов и ассоциаций:

  • DelphiName – отвечает за преобразование имени класса, атрибута или ассоциации UML-модели в идентификатор класса, поля или связи используемых в среде Delphi;
  • ExpressionName – отвечает за преобразование имени класса, атрибута или ассоциации модели в имя объекта, используемое для обозначения класса в выражениях на языке OCL;
  • TableName – отвечает за преобразование имени класса модели в имя таблицы СУБД, используемой для хранения информации об объектах данного класса (только для класса);
  • ColumnName – используется для обозначения столбца таблицы БД для атрибутов класса, а также этот тег параметр задействуется Borland MDA в случае единичной кратности роли для ассоциации.

Для настройки ассоциаций, в некоторых случаях необходимо указать у тег-параметра DeleteAction значение Cascade. Он отвечает за правила удаления подчиненных объектов при удалении главного.

Настройка тег-параметров привелена в таблице 2.2.

Табл. 2.2. Настройка тег-параметров классов, атрибутов и ассоциаций

Имя класса, атрибута, ассоциации

Настройка тег-параметров

Магазин

DelphiName: TShop; ExpressionName, TableName: Shop

Название

ColumnName, ExpressionName, DelphiName: Shname

Класс

ColumnName, ExpressionName, DelphiName: Shclass

Номер

ColumnName, ExpressionName, DelphiName: Shnumber

Юридический адрес

ColumnName, ExpressionName, DelphiName: Shaddress

ИНН

ColumnName, ExpressionName, DelphiName: ShINN

Телефон

ColumnName, ExpressionName, DelphiName: Shphone

Электронный адрес

ColumnName, ExpressionName, DelphiName: Shmail

Отдел

DelphiName: TOtdel; ExpressionName, TableName: Otdel

Название

ColumnName, ExpressionName, DelphiName: Oname

Группа товаров

DelphiName: TGroup; ExpressionName, TableName: Group

Название

ColumnName, ExpressionName, DelphiName: Gname

Товарная база

DelphiName: TBase; ExpressionName, TableName: Base

Название

ColumnName, ExpressionName, DelphiName: Bname

Адрес

ColumnName, ExpressionName, DelphiName: Baddress

Товар

DelphiName: TTovar; ExpressionName, TableName: Tovar

Наименование

ColumnName, ExpressionName, DelphiName: Tname

Цена закупки

ColumnName, ExpressionName, DelphiName: Tprice

Гарантийный срок

ColumnName, ExpressionName, DelphiName: Tgarant

Товар в магазине

DelphiName: TTtov_mag; ExpressionName, TableName: Ttov_mag

Количество

ColumnName, ExpressionName, DelphiName: Tmcount

Цена реализации

ColumnName, ExpressionName, DelphiName: Tmprice

Количество продажи

ColumnName, ExpressionName, DelphiName: Prodcount

Сумма

ColumnName, ExpressionName, DelphiName: Tmsumma; DerivationOCL: Tmprice*Tmcount

Товар на складе

DelphiName: TTtov_base; ExpressionName, TableName: Ttov_base

Количество

ColumnName, ExpressionName, DelphiName: Tbcount

Количество заказа

ColumnName, ExpressionName, DelphiName: Zakazcount

Администратор

DelphiName: TAdmin; ExpressionName, TableName: Admin

Фамилия

ColumnName, ExpressionName, DelphiName: Afam

Имя

ColumnName, ExpressionName, DelphiName: Aname

Отчество

ColumnName, ExpressionName, DelphiName: Asname

Дата рождения

ColumnName, ExpressionName, DelphiName: Adr


Продолжение табл. 2.2.

Продажа

DelphiName: TProdazha; ExpressionName, TableName: Prodazha

Номер

ColumnName, ExpressionName, DelphiName: Pnumber

Дата продажи

ColumnName, ExpressionName, DelphiName: Pdate

Наименование товара

ColumnName, ExpressionName, DelphiName: PZtov_name

Количество

ColumnName, ExpressionName, DelphiName: Pcount

Цена закупки

ColumnName, ExpressionName, DelphiName: Pprice

Цена реализации

ColumnName, ExpressionName, DelphiName: PRprice

Сумма

ColumnName, ExpressionName, DelphiName: Psumma; DerivationOCL: pRprice * pcount

Заказ

DelphiName: TZakaz; ExpressionName, TableName: Zakaz

Номер

ColumnName, ExpressionName, DelphiName: Znumber

Дата заказа

ColumnName, ExpressionName, DelphiName: Zdate

Наименование

ColumnName, ExpressionName, DelphiName: Zname

Количество

ColumnName, ExpressionName, DelphiName: Zcount

Цена закупки

ColumnName, ExpressionName, DelphiName: Zprice

Магазин-Отдел

LinkClassName: LinkSostoitPrinadlezhit; (A) ColumnName, ExpressionName, DelphiName: Sostoit; DelуteAction: Cascade; (В) ColumnName, ExpressionName, DelphiName: Prinadlezhit;

Отдел-Группа товаров

LinkClassName: LinkVluchaetPrinadlezhit; (A) ColumnName, ExpressionName, DelphiName: Vkluchaet; DeleteAction: Cascade; (В) ColumnName, ExpressionName, DelphiName: Prinadlezhit;

Отдел-Администратор

LinkClassName: LinkZaveduetUpravlyaetsya; (A) ColumnName, ExpressionName, DelphiName: Zaveduet; DeleteAction: Cascade; (В) ColumnName, ExpressionName, DelphiName: Upravlyaetsya; DeleteAction: Cascade;

Магазин-Товарная база

LinkClassName: LinkImeetImeetsya; (A) ColumnName, ExpressionName, DelphiName: Imeet; DeleteAction: Cascade; (В) ColumnName, ExpressionName, DelphiName: Imeetsya;

Группа товаров-Товар в магазине

LinkClassName: LinkSostoitPrinadlezhit; (A) ColumnName, ExpressionName, DelphiName: Soderzhit; DeleteAction: Cascade; (В) ColumnName, ExpressionName, DelphiName: Prinadlezhit;

Товарная база-Группа товаров

LinkClassName: LinkZakupaetsyaHranit; (A) ColumnName, ExpressionName, DelphiName: Zakupaetsya; (В) ColumnName, ExpressionName, DelphiName: Hranit;

Товарная база-Товар на складе

LinkClassName: LinkSoderzhitHranitsya; (A) ColumnName, ExpressionName, DelphiName: Soderzhit; DeleteAction: Cascade; (В) ColumnName, ExpressionName, DelphiName: Hranitsya;

Группа товаров-Товар на складе

LinkClassName: LinkBHranitBPrinadlezhit; (A) ColumnName, ExpressionName, DelphiName: BHranit; DeleteAction: Cascade; (В) ColumnName, ExpressionName, DelphiName: BPrinadlezhit;

Импорт модели в Borland MDA

После того, как настроены тег-параметры наша модель готова к импорту в Delphi.


Далее разработка приложения ведется в среде Delphi. Создаем новое приложение Delphi и создадим в нашем приложении специальный модуль данных DataShop: TDataShop. На этом модуле необходимо разместить компоненты Bold, которые будут реализовывать основу «объектного пространства» нашего приложения:

  • ShopModel: TBoldModel – обеспечивает хранение модели;
  • BoldSystemHandleShop: TBoldSystemHandle – основной компонент-дескриптор объектного пространства;
  • BoldSystemTypeInfoHandleShop: ТBoldSystemTypeInfoHandle – основной компонент-дескриптор типов моделей;
  • BoldUMLRoseLinkShop: ТBoldUMLRoseLink – предназначен для связи с моделью Rational Rose;
  • BoldPersistenceHandleFileXMLShop: ТBoldPersistenceHandleFileXML – обеспечивает хранение состояния объектного пространства в файле формата XML. Способ хранения данных в файле XML имеет свои преимущества: простота разработки, нет необходимости применять посторонние продукты (СУБД), настраивать подключение к БД и т.д.; простота использования – обеспечивается максимальная переносимость приложения, отсутствует необходимость инсталляции и настройки, возможен запуск приложения с любого носителя на любом компьютере.

Необходимо настроить свойства этих компонентов в соответствии с приведенной на рис. 2.2 диаграммой.

Рис. 2.2. Компоненты модуля данных

Теперь все готово для импорта модели Rational Rose в среду Borland MDA. Для этого необходимо дважды щелкнуть по компоненту ShopModel и в открывшемся встроенном UML-редакторе Bold запустить импорт нажатием на кнопку панели инструментов Import via link. После этого произойдет импорт модели. Перед созданием графической части приложения необходимо сгенерировать код модели. Для этого во встроенном UML-редакторе Bold вызвать в главном меню Tools -> Generate Cod. Появятся последовательно два окна с предложением выбрать имена генерируемых файлов интерфейса и файла программы. В результате проведенной операции на диске образуются два файла:

  • BusinessClasses_Interface.inc – файл описания внешних программных интерфейсов;
  • BusinessClasses.pas – файл, содержащий код классов UML-модели.

При этом в секцию Uses нашего проекта автоматически добавится сгенерированный модуль BusinessClasses. На этом этап импорта модели в Borland MDA закончен, теперь осталось разработать графический интерфейс программы.

Создание графического интерфейса

При создании графического интерфейса я буду использовать следующие компоненты:

  • BoldListHanle – не визуальный компонент-дескриптор, используется в основном для таких визуальных компонентов, как BoldGrid, BoldSortingGrid, BoldListBox, BoldLabel, BoldEdit. В свойстве Expression необходимо ввести требуемые OCL выражения. Например, чтобы получить список всех отделов магазина, необходимо в свойстве Expression дескриптора ListOtdels: TBoldListHanle ввести OCL выражение: 'Otdel.allInstances';
  • BoldSortingGrid – визуальный компонент, в котором отображается информация об экземплярах класса, данный компонент подключается к дескриптору. Например, если его подключить к дескриптору ListOtdels, то в таблице отобразятся все отделы магазина;
  • BoldListBox, BoldLabel, BoldEdit – будут отображать различную информацию об объектном пространстве приложения. Также подключаются к дескрипторам;
  • Также будут использоваться стандартные VCL-компоненты, такие как: MainMenu, GroupBox, PageControl, SpeedButton, Edit и другие компоненты.

Все компоненты-дескрипторы, используемые в приложении, представлены на рис. 2.3, а их описание в табл. 2.3.

Рис. 2.3. Дескрипторы приложения

Табл. 2.3. Описание дескрипторов приложения

Дескриптор

Предназначение

ListGroups

Возвращает список всех товарных групп магазина

ListShopName

Возвращает название магазина

ListAdmin

Возвращает список всех администраторов магазина

ListOtdels

Возвращает список всех отделов магазина

ListOtdelsGroups

Возвращает список товарных групп, принадлежащих текущему отделу

ListBases

Возвращает список всех товарных баз магазина

ListOtdelsGroupTovar

Возвращает список товаров, принадлежащих текущей товарной группе, которая в свою очередь принадлежит текущему отделу

ListGroupTovar

Возвращает список товаров, принадлежащий текущей товарной группе

ListShop

Возвращает все данные о магазине

ListShopOtdel

Возвращает список отделов магазина

Продолжение табл. 2.3.

ListBaseGroupTovar

Возвращает список товаров, принадлежащих текущей товарной группе, которая в свою очередь принадлежит текущей товарной базе

ListBaseGroup

Возвращает список товарных групп текущей товарной базы

ListTovar

Возвращает список всех товаров магазина

ListShopBase

Возвращает список всех товарных баз магазина

ListZakupka

Возвращает список всех закупок магазина

ListBaseTovar

Возвращает список всех товаров хранящихся на всех товарных базах

ListProdazha

Возвращает список всех продаж магазина

ListProdazhaOtchet

Возвращает список всех продаж магазина (для экспорта)

ListZakupkaOtchet

Возвращает список всех закупок магазина (для экспорта)

Программная система будет включать восемь форм (рис. 2.4):

  • Mainform – основная форма, на которой будут расположены все основные компоненты;
  • Main_sc – заставка программной системы;
  • Registr – форма регистрации (ввод пароля директора перед запуском основной формы);
  • ChangePass – форма смены пароля директора;
  • AddBase – форма добавления новой товарной базы;
  • EditTovBase – форма редактирования сведений о товарной базе;
  • My – форма отображения информации о программе и разработчике;
  • ZakazForm – форма указания количество единиц заказываемого товара.

Граф диалога форм приложения представлен на рисунке 2.5.

Листинг описанных выше модулей представлен в приложении 1. Почти все описанные формы являются вспомогательными, довольно простые и не содержат большого количества компонентов, кроме главной формы. Поэтому есть смысл поподробнее остановиться на описании главной формы приложения. Почти вся функциональность производится в главном окне программы. Оно состоит из: главного меню, панели инструментов, информационной части, основной рабочей области, для отображения всей необходимой информации, строки статуса (рис. 2.4).

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

Рис. 2.4. Формы приложения

Рис. 2.5. Граф диалога форм приложения

Main_sc

Registr

Mainform

ВЫХОД

ChangePass

AddBase

ZakazForm

EditTovBase

My

В программе присутствуют следующие вкладки:

  • Товары магазина – в данной вкладке осуществляется просмотр товара, редактирование цены, продажа товара;
  • Сведения о магазине – в данной вкладке отображается информация о магазине, можно отредактировать эту информацию, а также управлять отделами магазина;
  • Отделы магазина – здесь добавляются новые отделы, и производится управление группами отдела;
  • Быстрые остатки – в данной вкладке отображается весь товар магазина;
  • Закупочные базы – в данной вкладке осуществляется управление закупочными базами;
  • Добавление нового товара – в данной вкладке осуществляется добавление нового товара в товарные базы;
  • Заказ товара – осуществляется заказ товара в магазин из различных закупочных баз;
  • Статистические данные – в данной вкладке отображается вся статистическая информация о магазине;
  • Журнал продаж – отображается информация обо всех продажах магазина;
  • Журнал закупок – отображается информация обо всех закупках магазина;
  • Администраторы магазина – производится управление администраторами магазина.

2.2. Руководство пользователя

Установка и запуск

В данном разделе описаны основные инструкции по установке программы «Магазин бытовой техники»: системные требования и установка на одно рабочее место.