Sobes.tech
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.