🗒 Задача¶
В интернет-магазине товары делятся на несколько категорий: одежда, канцелярские товары и разное.
-
создай 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()
}