Junior — Middle
Объектке багытталган программалоодо ачыктык жана жабылуу принцибин негизги идеясы менен түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
Объектке багытталган программалоодо Ачык/жабык принциби, программалык объекттер (сыныптар, модулдар, функциялар) кенейтип чыгууга ачык, бирок өзгөртүүгө жабык болушу керектигин билдирет.
Бул, системанын жүрүм-турумун өзгөртүүсүз кеңейтип чыгууга мүмкүндүк берет. Бул ыкма, текшерилген кодду өзгөртүү менен пайда болушу мүмкүн болгон каталарды алдын алууга жардам берет жана программаны колдоо жана өнүктүрүүнү жеңилдетет.
Мисалы, эгер жаңы функция кошуу керек болсо, алгачкы сыныпты түздөн-түз өзгөртүүнүн ордуна, аны кеңейткен жаңы сынып түзүү жакшыраак.
Swiftте мисал:
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 }
}