🗒 Задача¶
На сайте музыкального магазина есть товары двух категорий: инструменты и комплектующие к ним. Все товары имеют название и количество единиц на складе.
Для инструментов есть возможность поиска соответствующих комплектующих.
Опиши классы для категорий товаров. Создай общий класс для хранения общих свойств всех товаров. Имитируй процесс поиска текстовым сообщением «Выполняется поиск». Для выноса логики поиска используй интерфейс.
❌ Ошибки¶
✏️ Комментарии¶
Для более корректной иерархии нужен еще некий базовый класс для товара с общими для всех категорий полями.
В базовом абстрактном классе предлагаю и поля сделать абстрактными, тогда не придется прописывать значения по умолчанию.
🧾 Решение¶
interface Searchable {
fun searchForAccessories()
}
open class Product(val name: String, val stock: Int)
class Instrument(name: String, stock: Int) : Product(name, stock), Searchable {
override fun searchForAccessories() {
println("Выполняется поиск комплектующих для инструмента $name")
}
}
class Accessory(name: String, stock: Int) : Product(name, stock)
fun main() {
val guitar = Instrument("Гитара", 10)
guitar.searchForAccessories()
}