Перейти к содержанию

🗒 Задача

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("Кофемашина", "Тостер", "Микроволновка"))
}