В этой статье блога мы рассмотрим процесс создания корзины для покупок Donut с использованием Scala, объектно-ориентированного языка программирования. Мы начнем с создания признака, а затем расширим его в классе DonutShoppingCart. На протяжении всей статьи мы обсудим различные методы и приведем примеры кода, демонстрирующие их реализацию.
Шаг 1. Создание признака
Во-первых, давайте создадим признак под названием ShoppingTrait. Эта черта будет определять базовую структуру и методы, которые потребуются нашей корзине покупок пончиков. Вот пример фрагмента кода:
trait ShoppingTrait {
def addToCart(donut: Donut): Unit
def removeFromCart(donut: Donut): Unit
def emptyCart(): Unit
def totalCost(): Double
def printCartItems(): Unit
}
Шаг 2. Реализация класса DonutShoppingCart
Теперь давайте реализуем класс DonutShoppingCart, который расширяет ShoppingTrait и обеспечивает реализацию каждого из методов, определенных в признаке. Вот пример фрагмента кода:
class DonutShoppingCart extends ShoppingTrait {
private var cartItems: List[Donut] = List.empty
override def addToCart(donut: Donut): Unit = {
cartItems = donut :: cartItems
println(s"Added ${donut.name} to the cart.")
}
override def removeFromCart(donut: Donut): Unit = {
cartItems = cartItems.filterNot(_ == donut)
println(s"Removed ${donut.name} from the cart.")
}
override def emptyCart(): Unit = {
cartItems = List.empty
println("Cart is now empty.")
}
override def totalCost(): Double = {
val cost = cartItems.foldLeft(0.0)(_ + _.price)
println(s"Total cost of items in the cart: $$${cost}")
cost
}
override def printCartItems(): Unit = {
println("Items in the cart:")
cartItems.foreach(donut => println(donut.name))
}
}
Другие возможные методы.
Помимо методов, определенных в ShoppingTrait, вы можете еще больше расширить функциональность класса DonutShoppingCart, добавив дополнительные методы. Вот несколько примеров:
-
getCartSize(): Int: возвращает количество товаров в корзине. -
applyDiscount(discount: Double): Unit: применяет скидку к общей стоимости товаров в корзине. -
checkout(): Unit: инициирует процесс оформления заказа, который может включать дополнительные этапы, например обработку платежа. -
saveCartToFile(fileName: String): Unit: сохраняет содержимое корзины в файл с указанным именем.
В этой статье мы узнали, как создать корзину для покупок Donut в Scala. Мы начали с создания типажа, который определял необходимые методы, а затем реализовали эти методы в классе DonutShoppingCart. Мы также рассмотрели некоторые дополнительные методы, которые можно добавить для расширения функциональности корзины покупок. Следуя приведенным примерам кода, вы можете легко создать собственную корзину для покупок Donut в Scala.
Не забывайте сохранять свой код организованным и модульным, чтобы его можно было легко расширять и поддерживать. Приятного кодирования!