Junior — Middle
Czy możesz wyjaśnić zasadę otwartości/zamknięcia w kontekście programowania obiektowego?
sobes.tech AI
Odpowiedź od AI
Zasada otwartości/zamknięcia w programowaniu obiektowym oznacza, że istoty programowe (klasy, moduły, funkcje) powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje.
Oznacza to, że zachowanie systemu można rozszerzać bez zmiany istniejącego kodu, co zmniejsza ryzyko popełnienia błędów i upraszcza utrzymanie.
W C# często osiąga się to poprzez użycie abstrakcji, interfejsów i dziedziczenia. Na przykład, dodając nową funkcjonalność, tworzymy nową klasę implementującą interfejs, zamiast modyfikować istniejącą.
Przykład:
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;
}
// Teraz można dodawać nowe figury bez zmiany istniejącego kodu
W ten sposób system jest rozszerzany przez dodanie nowych klas, a nie modyfikację starych.