Найти в Дзене

Задачи с решениями на языке Kotlin по основам ООП

Оглавление

1. Классы

Задача:
Создай класс Car, который имеет свойства brand (марка) и speed (скорость). Напиши метод printInfo, который выводит информацию о машине. Создай объект класса Car с маркой "Toyota" и скоростью 120, и вызови метод printInfo.

Решение:

class Car(val brand: String, val speed: Int) {
fun printInfo() {
println("Машина марки $brand имеет скорость $speed км/ч.")
}
}

fun main() {
val myCar = Car("Toyota", 120)
myCar.printInfo()
}

2. Объекты

Задача:
Создай объект myHouse из класса House, у которого есть свойства color (цвет) и floors (этажи). Напиши метод describe, который выводит описание дома. Объяви объект с цветом "синий" и 2 этажами и вызови метод describe.

Решение:

class House(val color: String, val floors: Int) {
fun describe() {
println("Это $color дом с $floors этажами.")
}
}

fun main() {
val myHouse = House("синий", 2)
myHouse.describe()
}

3. Наследование

Задача:
Создай класс Animal с методом eat, который выводит "Животное ест". Создай класс Dog, который наследуется от Animal, и добавь метод bark, который выводит "Гав-гав!". Создай объект собаки и вызови оба метода.

Решение:

open class Animal {
fun eat() {
println("Животное ест.")
}
}

class Dog : Animal() {
fun bark() {
println("Гав-гав!")
}
}

fun main() {
val dog = Dog()
dog.eat()
dog.bark()
}

4. Интерфейсы

Задача:
Создай интерфейс Flyable с методом fly. Создай класс Bird, который реализует этот интерфейс, и класс Airplane, который тоже может летать. Реализуй метод fly для каждого класса.

Решение:

interface Flyable {
fun fly()
}

class Bird : Flyable {
override fun fly() {
println("Птица летит низко!")
}
}

class Airplane : Flyable {
override fun fly() {
println("Самолёт летит высоко!")
}
}

fun main() {
val bird = Bird()
bird.fly()

val airplane = Airplane()
airplane.fly()
}

5. Полиморфизм

Задача:
Создай класс Animal с методом makeSound, который выводит "Какой-то звук". Создай классы Dog и Cat, которые наследуются от Animal, и переопредели метод makeSound для каждого. Создай список из объектов Dog и Cat и вызови метод makeSound для каждого объекта.

Решение:

open class Animal {
open fun makeSound() {
println("Какой-то звук")
}
}

class Dog : Animal() {
override fun makeSound() {
println("Гав-гав!")
}
}

class Cat : Animal() {
override fun makeSound() {
println("Мяу!")
}
}

fun main() {
val animals = listOf(Dog(), Cat())
for (animal in animals) {
animal.makeSound()
}
}

6. Инкапсуляция

Задача:
Создай класс Phone, который будет хранить марку телефона и уровень заряда батареи. Убедитесь, что:

  • Уровень заряда не может быть меньше 0 и больше 100.
  • Вы можете узнать марку телефона и уровень заряда с помощью методов.

Решение:

class Phone(private var brand: String, private var batteryLevel: Int) {

// Геттер для марки
fun getBrand(): String {
return brand
}

// Геттер для уровня заряда
fun getBatteryLevel(): Int {
return batteryLevel
}

// Сеттер для уровня заряда
fun setBatteryLevel(level: Int) {
if (level in 0..100) {
batteryLevel = level
} else {
println("Ошибка: уровень заряда должен быть от 0 до 100.")
}
}
}

fun main() {
val myPhone = Phone("Samsung", 50)

println("Марка телефона: ${myPhone.getBrand()}")
println("Уровень заряда: ${myPhone.getBatteryLevel()}%")

myPhone.setBatteryLevel(80) // Меняем уровень заряда
println("Новый уровень заряда: ${myPhone.getBatteryLevel()}%")
}