Skip to content

Doczadrot/Shop_electro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект "Магазин электроники" 🛒

Данный проект представляет собой консольное приложение, реализующее базовую логику учета товаров и категорий в магазине электроники. Проект создан с применением принципов объектно-ориентированного программирования (ООП) для демонстрации построения гибкой и расширяемой архитектуры.

🚀 Стек

  • Язык: Python
  • Концепции: Объектно-ориентированное программирование (ООП), абстрактные классы, наследование, миксины, магические методы.
  • Тестирование: Pytest, pytest-cov (для отчета о покрытии кода).

✨ Возможности и Функционал

  • Учет товаров:
    • Создание карточек товаров с названием, описанием, ценой и количеством.
    • Автоматический подсчет общей стоимости товаров в категории (Category.product_count).
  • Категории товаров:
    • Группировка товаров по категориям (например, "Смартфоны" или "Телевизоры").
    • Автоматический подсчет общего количества категорий (Category.category_count) и товаров.
  • Логирование: Миксин CreateLogMixin для логирования создания объектов (выводит имя класса и переданные аргументы).
  • Валидация:
    • Возможность сложения только товаров одинаковых классов (при попытке сложения разных типов товаров выбрасывается TypeError).
    • Проверка типа добавляемого в категорию объекта (должен быть экземпляром Product или его наследником).
  • Строковое представление: Реализация метода __str__ для удобного строкового представления продукта.

🏗️ Архитектура и Ключевые концепции ООП

  • Абстрактный класс BaseProduct:
    • Базовый абстрактный класс для всех продуктов.
    • Определяет основные атрибуты продукта и содержит абстрактный метод calculate_total_value.
  • Миксин CreateLogMixin:
    • Добавляет функциональность логирования при создании объектов.
    • Используется в классе Product для вывода информации о создании.
  • Класс Product:
    • Наследуется от BaseProduct и использует CreateLogMixin.
    • Хранит данные о товаре, реализует валидацию входных данных.
    • Переопределяет магические методы __str__ и __add__.
  • Класс Category:
    • Управление коллекцией товаров и их группировка.
    • Автоматический подсчет статистики по категориям и товарам.
  • Наследники класса Product:
    • Smartphone: с дополнительными атрибутами: производительность, модель, объем памяти, цвет.
    • LawnGrass: с дополнительными атрибутами: страна-производитель, срок прорастания, цвет.

💡 Пример использования

# Создание товара
phone = Product("iPhone 15", "512GB, Space Gray", 100000.0, 5)

# Создание категории и добавление товара
smartphones = Category("Смартфоны", "Мобильные устройства", [])
smartphones.append_product(phone)

# Создание наследника продукта
iphone_15_pro = Smartphone("iPhone 15 Pro", "512GB, Titanium", 120000.0, 3, "Высокая", "Pro Max", "512GB", "Черный")
smartphones.append_product(iphone_15_pro)

# Примеры работы с магическими методами (раскомментируйте для использования)
# print(phone) # Выведет строковое представление продукта
# total_value = phone + iphone_15_pro # Суммирование цен

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages