Nimeta kaks SOLID põhimõtet ja anna näiteid nende rikkumisest.
sobes.tech AI
Vastus AI-lt
Принцип единственной ответственности (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.