Skip to content

andylee234/mobile-hw1

 
 

Repository files navigation

📦 Mini Order System

🧠 Общая идея проекта

Проект моделирует простую систему заказов, похожую на интернет-магазин:

  • есть товары
  • из товаров формируется заказ
  • заказ может быть оплачен или отменён
  • можно посчитать сумму заказа
  • можно применить скидку
  • есть функция, которая анализирует состояние заказа и возвращает человеко-читаемый текст

🧩 Компоненты проекта (высокий уровень)

1️⃣ Product — модель товара

Отвечает за:

  • хранение информации о товаре

Особенности:

  • не содержит бизнес-логики
  • 📌 Immutable объект (не изменяется после создания)

2️⃣ OrderStatus — состояние заказа

Отвечает за:

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

Особенности:

  • 📌 реализован с помощью sealed class

3️⃣ PriceCalculator — контракт

Отвечает за:

  • описание способности считать стоимость

Особенности:

  • 📌 любой класс с ценой может реализовать этот интерфейс

4️⃣ Order — основной бизнес-объект

Отвечает за:

  • хранение списка товаров
  • управление статусом заказа
  • основную бизнес-логику:
    • добавление товаров
    • удаление товаров
    • оплата заказа
    • отмена заказа

Использует:

  • коллекции
  • nullable-типы
  • исключения
  • наследование (через интерфейс)
  • переопределение методов

5️⃣ Order processing — бизнес-логика обработки

Отвечает за:

  • анализ текущего состояния заказа
  • возврат человеко-читаемого текстового описания

Особенности:

  • 📌 реализуется с помощью when

6️⃣ Discount logic — расширение поведения

Отвечает за:

  • добавление логики скидок без изменения класса Order

Используется:

  • extension functions
  • scoped functions
  • lambda callbacks

🧱 Архитектура проекта

Словесная схема связей:

Product ─┐ ├──> Order ────> OrderStatus Product ─┘ │ └── implements PriceCalculator

Order ──> processOrder(order): String Order ──> applyDiscount(...)

✅ Как проверять домашнее задание

Для проверки задания используйте команду: ./gradlew verifyHomework

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Kotlin 100.0%