Junior — Middle
Можете ли да обясните принципа на отвореност/затвореност в контекста на обектно-ориентираното програмиране?
sobes.tech AI
Отговор от AI
Принципът на отвореност/затвореност в обектно-ориентираното програмиране означава, че софтуерните същности (класове, модули, функции) трябва да бъдат отворени за разширяване, но затворени за модификация.
Това означава, че поведението на системата може да бъде разширено без да се променя съществуващият код, което намалява риска от грешки и улеснява поддръжката.
В C# това често се постига чрез използване на абстракции, интерфейси и наследяване. Например, при добавяне на нова функционалност, създаваме нов клас, който реализира интерфейс, вместо да променяме съществуващия.
Пример:
public interface IShape
{
double Area();
}
public class Circle : IShape
{
public double Radius { get; set; }
public double Area() => Math.PI * Radius * Radius;
}
public class Square : IShape
{
public double Side { get; set; }
public double Area() => Side * Side;
}
// Сега можем да добавяме нови фигури, без да променяме съществуващия код
По този начин системата се разширява чрез добавяне на нови класове, а не чрез промяна на старите.