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