Sobes.tech
Middle

Nennen Sie zwei SOLID-Prinzipien und geben Sie Beispiele für deren Verletzung.

sobes.tech KI

Antwort von 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.