Код IT
← Каталог

Учебные примеры ООП — Корзина покупок

Взаимодействие Product, Cart и Order при оформлении заказа.

swift swiftencyclopediaoop-practice102 embed URL статья в энциклопедии
Plain text main.swift
struct Product {
    let name: String
    let price: Int
}

class Cart {
    var items: [Product] = []

    func add(_ product: Product) {
        items.append(product)
        print("В корзину добавлено: \(product.name) (\(product.price) ₽)")
    }

    func total() -> Int {
        items.reduce(0) { $0 + $1.price }
    }
}

class Order {
    let items: [Product]
    let total: Int

    init(cart: Cart) {
        self.items = cart.items
        self.total = cart.total()
    }

    func checkout() {
        print("Оформление заказа...")
        for item in items {
            print("  — \(item.name): \(item.price) ₽")
        }
        print("Итого: \(total) ₽")
        print("Заказ оформлен!")
    }
}

let cart = Cart()
cart.add(Product(name: "Книга", price: 500))
cart.add(Product(name: "Ручка", price: 50))
let order = Order(cart: cart)
order.checkout()
struct Product {
    let name: String
    let price: Int
}

class Cart {
    var items: [Product] = []

    func add(_ product: Product) {
        items.append(product)
        print("В корзину добавлено: \(product.name) (\(product.price) ₽)")
    }

    func total() -> Int {
        items.reduce(0) { $0 + $1.price }
    }
}

class Order {
    let items: [Product]
    let total: Int

    init(cart: Cart) {
        self.items = cart.items
        self.total = cart.total()
    }

    func checkout() {
        print("Оформление заказа...")
        for item in items {
            print("  — \(item.name): \(item.price) ₽")
        }
        print("Итого: \(total) ₽")
        print("Заказ оформлен!")
    }
}

let cart = Cart()
cart.add(Product(name: "Книга", price: 500))
cart.add(Product(name: "Ручка", price: 50))
let order = Order(cart: cart)
order.checkout()