Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6 сем / 3 / МиСПрИС_1374_3_Наволоцкий_Харитонов_Зырянов.docx
Скачиваний:
6
Добавлен:
29.03.2025
Размер:
2.61 Mб
Скачать
  1. Описание выполненной работы

1.1 Анализ исходных данных

Для разработки концептуального проекта будем использовать редактор StarUML.

В качестве исходных данных используется источник

Яндекс.Маркет - https://market.yandex.ru/

В общем случае характеристики различных классов объекта Мебель различны.

Пример 1:

Рис. 1. Чертеж стула

Пример 2:

Рис. 2. Чертеж стола

Фрагмент классификатора представлен ниже:

Изделия

столы

металл

Стол arizone

Стол garden story

дерево

Стол эстер

Стол кентуки

стулья

пластик

Стул RAMBO

Стул Keter

металл

Стул arizone

Стул складной

кресла

кресло кокон

кресло m-group

кресло гамак

двухместное кресло

кресло gemini promob

кресло парящая кровать

Диаграмма классов для фрагмента предметной области представлена на Рис. 3

Рис. 3. Диаграмма классов для фрагмента предметной области

Выводы по результатам анализа:

1. Количество классов изделий велико. Исходные данные предоставляют только небольшую часть классификатора.

2. Выделяемые подклассы обладают большим разнообразием технических характеристик. Исходные данные предоставляют только часть характеристик объектов.

3. Для преодоления указанных особенностей необходим конструктор классификатора и справочника, доступный специалистам на этапе исполнения.

1.2. Разработка функциональных требований к подсистеме

В директории UseCase Model создадим диаграмму вариантов использования с именем Работа с справочником изделий.

Все компоненты, разработанные в рамках Задания 2, доступны для

использования.

На рис. 2 приведена диаграмма ВИ Работа c Справочником.

Рис. 4. Диаграмма прецедентов для задачи Ведение справочника изделий

Отдельно выделены прецеденты по работе с классификатором объектов.

Прецедент Ведение параметров классов позволяет создавать, редактировать параметры и прикреплять их классам Изделий.

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

Прецедент Поиск данных в справочнике позволяет искать изделия в справочнике с заданными свойствами.

1.3. Разработка модели классов

Локальная модель классов для описания типов параметров представлена на Рис. 5.

Рис. 5. Модель классов для описания параметров с указанием классов

Метакласс Параметр введен для ведения справочника параметров.

Тип параметра задается ассоциацией с ролью Тип параметра.

В качестве типа может выступать любой класс из Классификатор объектов.

Модель классов для прецедента Ведение справочника параметров представлена на Рис. 6.

Рис. 6. Модель классов для описания параметров

Метакласс Параметр введен для ведения справочника параметров.

Для спецификации параметров каждого класса изделий введена ассоциативная сущность Параметры класса, ассоциации Состав параметров и Параметр в состав.

Для управления порядком параметров в списке введен атрибут Номер. Для указания ограничений на значения численных параметров введены атрибуты МинЗнач, МаксЗнач.

Для описания типов параметров используем Классификатор объектов.

Для задания значений параметров экземпляров изделий введена ассоциативная сущность Значения параметра.

Ассоциация Для параметра указывает на параметр, ассоциация Параметры изделия определяет список значений параметров конкретного изделия.

Ассоциация Значение параметра перечисления используется только для параметров типа Перечисление.

Для значений численных параметров введен атрибут Значение.

1.4. Разработка модели хранения

  1. Реализация

2.1. Создание таблиц

2.1.1. Код создания таблицы "unit"

def create_unit_table():

cursor.execute('''

CREATE TABLE IF NOT EXISTS unit (

id INTEGER PRIMARY KEY AUTOINCREMENT,

unit_name TEXT UNIQUE,

unit_name_short TEXT UNIQUE

)

''')

conn.commit()

2.1.2. Код создания таблицы "terminal_classifier"

def create_terminal_classifier_table():

cursor.execute('''

CREATE TABLE IF NOT EXISTS terminal_classifier (

id INTEGER PRIMARY KEY AUTOINCREMENT,

id_parent INTEGER CHECK (id_parent != id),

terminal_classifier_name TEXT NOT NULL,

terminal_classifier_short_name TEXT NOT NULL,

id_unit INTEGER,

priority INTEGER NOT NULL DEFAULT 0,

FOREIGN KEY (id_unit) REFERENCES unit(id),

FOREIGN KEY (id_parent) REFERENCES terminal_classifier(id)

)

''')

conn.commit()

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