SOLID - O

O - Принцип открытости/закрытости (Open/Closed Principle):

Этот принцип утверждает, что классы должны быть открыты для расширения, но закрыты для модификации. Это означает, что изменение поведения класса должно происходить через добавление нового кода, а не изменение существующего.

// Плохой пример: класс, который нарушает принцип открытости/закрытости
class Shape {
    fun area(): Double {
        return 0.0
    }
}

// Хороший пример: использование наследования для расширения функциональности
open class Shape {
    open fun area(): Double {
        return 0.0
    }
}

class Rectangle : Shape() {
    override fun area(): Double {
        // Площадь прямоугольника
    }
}

class Circle : Shape() {
    override fun area(): Double {
        // Площадь круга
    }
}