Sobes.tech
Назад к вопросам
Middle
4

Назови два принципа SOLID, приведи примеры их нарушения.

Компании, где спрашивали
OZONOZON

Ответ от нейросети

sobes.tech AI

Принцип единственной ответственности (Single Responsibility Principle, SRP)

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

Пример нарушения: класс UserManager, который одновременно отвечает и за управление пользователями, и за логирование действий. Изменение требований к логированию приведет к изменению класса, что нарушает SRP.

class UserManager {
    public void AddUser(User user) { /* добавление пользователя */ }
    public void Log(string message) { /* логирование */ }
}

Принцип подстановки Лисков (Liskov Substitution Principle, LSP)

Подклассы должны быть взаимозаменяемы с базовыми классами без нарушения корректности программы.

Пример нарушения: подкласс Square наследует Rectangle, но переопределяет методы так, что установка ширины и высоты ведет к некорректному поведению.

class Rectangle {
    public virtual int Width { get; set; }
    public virtual int Height { get; set; }
}

class Square : Rectangle {
    public override int Width {
        set { base.Width = base.Height = value; }
    }
    public override int Height {
        set { base.Width = base.Height = value; }
    }
}

Использование Square вместо Rectangle может привести к неожиданным результатам, нарушая LSP.