Junior — Middle
შეგიძლიათ ახსნათ ობიექტზე ორიენტირებული პროგრამირების ღია და დახურული პრინციპის ძირითადი იდეა?
sobes.tech AI
პასუხი AI-სგან
ობიექტზე ორიენტირებული პროგრამირების სფეროში, ღია/დახურული პრინციპი გულისხმობს, რომ პროგრამული არსებები (კლასები, მოდულები, ფუნქციები) უნდა იყოს გაშლილი გაფართოებისთვის, მაგრამ დახურული ცვლილებისთვის.
ეს ნიშნავს, რომ სისტემის ქცევას შეიძლება გააფართოვოს არსებული კოდის შეცვლის გარეშე. ეს მიდგომა ეხმარება თავიდან აიცილოს შეცდომები, რომლებიც შეიძლება წარმოიშვას გამოცდილი კოდის შეცვლისას, და ამარტივებს პროგრამის შენარჩუნებას და განვითარებას.
მაგალითად, თუ საჭიროა ახალი ფუნქციონალის დამატება, უკეთესია შექმნათ ახალი კლასი, რომელიც გაფართოებს არსებულს, ვიდრე პირდაპირ შეცვალოთ თავდაპირველი კლასი.
სწრაფტში მაგალითი:
protocol Shape {
func area() -> Double
}
class Circle: Shape {
var radius: Double
init(radius: Double) { self.radius = radius }
func area() -> Double { return .pi * radius * radius }
}
class Rectangle: Shape {
var width: Double, height: Double
init(width: Double, height: Double) {
self.width = width
self.height = height
}
func area() -> Double { return width * height }
}
// ახალი ფიგურის დამატებისთვის, მაგალითად, სამკუთხედი, ჩვენ არ ვცვლით არსებულ კლასებს, არამედ ვქმნით ახალს:
class Triangle: Shape {
var base: Double, height: Double
init(base: Double, height: Double) {
self.base = base
self.height = height
}
func area() -> Double { return 0.5 * base * height }
}