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

// ახლა შეგვიძლია დავამატოთ ახალი ფიგურები, შეცვლის გარეშე არსებული კოდის

ამ გზით, სისტემა ფართოვდება ახალი კლასების დამატებით, ძველი შეცვლის გარეშე.