
- •Домашнее задание
- •1.2. Содержание работы
- •1.3. Исходные данные для задачи
- •1.4. Рекомендуемые инструменты
- •1.5. Рекомендуемые источники
- •Аннотация
- •Описание выполненной работы
- •1.1 Анализ исходных данных
- •1.2. Разработка функциональных требований к подсистеме
- •1.3. Разработка модели классов
- •2.1.3. Код создания таблицы "enum"
- •2.1.4. Код создания таблицы "product"
- •2.1.5. Код создания таблицы "param"
- •2.1.6. Код создания таблицы "class_param"
- •2.1.7. Код создания таблицы "prod_param"
- •2.2. Реализация основных функций
- •2.2.1. Функция создания параметра
- •2.2.2. Функция редактирования параметра
- •2.2.3. Функция удаления параметра
- •2.2.4. Функция создания класса параметра
- •2.2.5. Функция изменения класса параметра
- •2.2.6. Функция удаления класса параметра
- •2.2.7. Функция наследования класса параметра
- •2.2.8. Функция изменения приоритета вывода класса параметра
- •2.2.9. Функция создания привязки параметра к изделию
- •2.2.10. Функция изменения привязки параметра и изделия
- •2.2.11. Функция нахождения id параметров у изделия
- •2.2.12. Функция поиска изделий заданного класса параметра
- •2.2.13. Функция поиска изделия с заданным параметром в заданном интервале
Описание выполненной работы
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.
Разработка модели хранения
Реализация
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()