Sobes.tech
Middle

Նշեք երկու SOLID սկզբունքներ և տվեք դրանց խախտման օրինակներ։

sobes.tech AI

Պատասխան 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.