Junior — Middle
Môžete vysvetliť princíp otvorenosti/zatvorenosti v kontexte objektovo orientovaného programovania?
sobes.tech AI
Odpoveď od AI
Princíp otvorenosti/zatvorenosti v objektovo orientovanom programovaní znamená, že softvérové entity (triedy, moduly, funkcie) by mali byť otvorené na rozšírenie, ale zatvorené na zmenu.
To znamená, že správanie systému môže byť rozšírené bez zmeny existujúceho kódu, čo znižuje riziko chýb a zjednodušuje údržbu.
V C# sa to často dosahuje pomocou abstrakcií, rozhraní a dedičnosti. Napríklad, pridávaním novej funkcionality vytvoríme novú triedu, ktorá implementuje rozhranie, namiesto zmeny existujúcej.
Príklad:
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 môžeme pridávať nové tvary bez zmeny existujúceho kódu
Týmto spôsobom sa systém rozširuje pridaním nových tried, nie zmenou starých.