Junior — Middle
Можете ли објаснити принцип отворености/затворености у контексту објектно оријентисаног програмирања?
sobes.tech АИ
Одговор од АИ
Princip otvorenosti/zatvorenosti u objektno-orijentisanom programiranju znači da entiteti softvera (klase, moduli, funkcije) treba da budu otvoreni za proširenje, ali zatvoreni za modifikaciju.
To znači da se ponašanje sistema može proširiti bez promene postojećeg koda, što smanjuje rizik od grešaka i olakšava održavanje.
U C#-u se to često postiže korišćenjem apstrakcija, interfejsa i nasleđivanja. Na primer, dodavanjem nove funkcionalnosti, kreiramo novu klasu koja implementira interfejs, umesto da menjamo postojeću.
Primer:
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;
}
// Sada možemo dodavati nove oblike bez promene postojeće kôde
Na ovaj način, sistem se proširuje dodavanjem novih klasa, a ne menjanjem starih.