Загрузка данных


                

                    java

                    Копировать

                

                // Основной класс приложения для доставки пиццы

public class PizzaDeliveryApp {

    public static void main(String[] args) {

        // Создание объекта корзины

        ShoppingCart cart = new ShoppingCart();

        // Добавление пицц в корзину

        Pizza margherita = new Pizza("Маргарита", 350.00);

        margherita.addTopping("Оливки");

        margherita.addTopping("Грибы");

        cart.addItem(margherita);

        Pizza pepperoni = new Pizza("Пепперони", 420.00);

        pepperoni.addTopping("Колбаса пепперони");

        cart.addItem(pepperoni);

        // Отображение содержимого корзины

        System.out.println("--- Ваша корзина ---");

        for (CartItem item : cart.getItems()) {

            System.out.println(item);

        }

        System.out.println("--------------------");

        // Оформление заказа

        Order order = new Order(cart);

        System.out.println("--- Ваш заказ ---");

        System.out.println(order);

        System.out.println("-----------------");

        // Имитация процесса оплаты и доставки

        System.out.println("Заказ принят. Ожидайте доставку!");

    }

}

// Класс, представляющий пиццу

class Pizza {

    private String name;

    private double price;

    private java.util.List<String> toppings = new java.util.ArrayList<>();

    public Pizza(String name, double price) {

        this.name = name;

        this.price = price;

    }

    public void addTopping(String topping) {

        this.toppings.add(topping);

    }

    public String getName() {

        return name;

    }

    public double getPrice() {

        return price;

    }

    public java.util.List<String> getToppings() {

        return toppings;

    }

    @Override

    public String toString() {

        StringBuilder sb = new StringBuilder();

        sb.append(name).append(" - ").append(String.format("%.2f", price)).append(" руб.");

        if (!toppings.isEmpty()) {

            sb.append(" (Добавки: ").append(String.join(", ", toppings)).append(")");

        }

        return sb.toString();

    }

}

// Класс, представляющий элемент в корзине

class CartItem {

    private Pizza pizza;

    private int quantity;

    public CartItem(Pizza pizza, int quantity) {

        this.pizza = pizza;

        this.quantity = quantity;

    }

    public Pizza getPizza() {

        return pizza;

    }

    public int getQuantity() {

        return quantity;

    }

    public double getTotalPrice() {

        return pizza.getPrice() * quantity;

    }

    @Override

    public String toString() {

        return quantity + " x " + pizza.toString();

    }

}

// Класс, представляющий корзину покупок

class ShoppingCart {

    private java.util.List<CartItem> items = new java.util.ArrayList<>();

    public void addItem(Pizza pizza) {

        // Простая логика: если пицца уже есть, увеличиваем количество

        for (CartItem item : items) {

            if (item.getPizza().getName().equals(pizza.getName())) {

                item = new CartItem(pizza, item.getQuantity() + 1); // Обновляем элемент

                return;

            }

        }

        items.add(new CartItem(pizza, 1));

    }

    public java.util.List<CartItem> getItems() {

        return items;

    }

    public double getTotal() {

        double total = 0;

        for (CartItem item : items) {

            total += item.getTotalPrice();

        }

        return total;

    }

}

// Класс, представляющий заказ

class Order {

    private java.util.List<CartItem> items;

    private double totalAmount;

    public Order(ShoppingCart cart) {

        this.items = cart.getItems();

        this.totalAmount = cart.getTotal();

    }

    @Override

    public String toString() {

        StringBuilder sb = new StringBuilder();

        for (CartItem item : items) {

            sb.append("- ").append(item).append("\n");

        }

        sb.append("Итого: ").append(String.format("%.2f", totalAmount)).append(" руб.");

        return sb.toString();

    }

}