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

🗒 Задача

В интернет-магазине товары делятся на несколько категорий: одежда, канцелярские товары и разное.

  • создай enum класс с категориями;

  • создай метод внутри enum, который вернет текстовое название категории для пользователя;

  • создай класс, описывающий товар (с полями название, id, категория), в классе должен быть метод, который выводит инфо о товаре. Вызови его для нескольких созданных товаров;

  • для вывода информации о товаре для категории используй метод определения категории.

❌ Ошибки

  • созданный метод распознавания названия категории не имеет параметров

✏️ Комментарии

Хорошо, а давай перенесем метод получения имени категории прямо в enum. Так код будет выглядеть логичнее и целостнее.
Метод должен возвращать строку, чтобы использовать ее там, где его вызывали. Это считай вспомогательный метод для определения человеческого названия. Печатать он ничего не должен

🧾 Решение

enum class Category {
    CLOTHING, STATIONERY, MISC;

    fun getCategoryName() = when(this) {
        CLOTHING -> "Одежда"
        STATIONERY -> "Канцелярские товары"
        MISC -> "Разное"
    }
}

class Product(val name: String, val id: Int, val category: Category) {
    fun printInfo() {
        val categoryName = category.getCategoryName()
        println("Товар: $name\nID: $id\nКатегория: $categoryName")
    }
}

fun main() {
    val shirt = Product("Рубашка", 101, Category.CLOTHING)
    val pen = Product("Ручка", 102, Category.STATIONERY)
    val candle = Product("Свеча", 103, Category.MISC)

    shirt.printInfo()
    pen.printInfo()
    candle.printInfo()
}