🗒 Задача¶
CRM (система управления взаимоотношениями с клиентами) обрабатывает заказы в интернет-магазине. Заказ содержит информацию: номер заказа и товары. Если товар один, он хранится в виде строки, если несколько – в виде списка строк.
Создай класс, который будет иметь свойство для хранения номера заказа. Реализуй метод, которые будут выводить информацию о заказе в зависимости от количества товаров:
-
Если заказан один товар: «Заказан товар: [название_товара]»
-
Если заказано несколько товаров: «Заказаны следующие товары: [название_товара], … [название_товара]»
Создай 2 объекта класса и вызови у них метод вывода информации. Реши задачу, используя полиморфизм с типом ad hoc для обработки одного или нескольких товаров.
❌ Ошибки¶
✏️ Комментарии¶
Реализация полиморфизма корректная, но напоминаю про нейминги. Согласно [конвенции стиля Kotlin](https://kotlinlang.org/docs/coding-conventions.html#function-names) методы должны именоваться в инфинитиве.
Здесь у тебя просто два разных метода. В ТЗ сказано, что задачу требуется решить полиморфизмом с типом ad hoc. Напомню, он реализуется с помощью перегрузки методов с одинаковой сигнатурой (и соответственно названием).
В ТЗ требуется реализовать задачу, используя полиморфизм с типом ad hoc. Ты ресерчил эту тему? Напомню, он реализуется с помощью перегрузки методов с одинаковой сигнатурой (и соответственно названием).
🧾 Решение¶
class Order(val orderNumber: Int) {
fun printOrder(product: String) {
println("Заказан товар: $product")
}
fun printOrder(products: List<String>) {
println("Заказаны следующие товары: ${products.joinToString(", ")}")
}
}
fun main() {
val order1 = Order(1)
order1.printOrder("Телевизор")
val order2 = Order(2)
order2.printOrder(listOf("Кофемашина", "Тостер", "Микроволновка"))
}