Sobes.tech
Middle

Ачыктык/жабыктык принциби эмне (АЖП)?

sobes.tech AI

AIден жооп

Ачык/Жабык принципи (Open/Closed Principle, OCP) SOLID беш принциптин бири болуп саналат жана ал программалык объектилер (сыныптар, модулдар, функциялар) кеңейүүгө ачык, бирок өзгөртүүгө жабык болушу керектигин айтат.

Бул системанын жүрүм-турумун өзгөртүүсүз кеңейтүүгө болот дегенди билдирет, бул туруктуулукту жана тейлөө жеңилдигин жогорулатат.

Мисалы, эгер жаңы функциялду кошуу керек болсо, ал керек интерфейсти ишке ашыратган же негизги класстан мурас алган жаңы класс түзүү жакшыраак, азыркы иштеп жаткан кодду өзгөртүүнүн ордуна.

Swift мисалы:

protocol Shape {
    func area() -> Double
}

class Circle: Shape {
    var radius: Double
    init(radius: Double) {
        self.radius = radius
    }
    func area() -> Double {
        return Double.pi * radius * radius
    }
}

class Rectangle: Shape {
    var width: Double
    var 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
    var height: Double
    init(base: Double, height: Double) {
        self.base = base
        self.height = height
    }
    func area() -> Double {
        return 0.5 * base * height
    }
}

Ошентип, код жаңы фигуралар менен кеңейе алат (кеңейтүү), бирок бар класстарды өзгөртүүгө жабык бойдон калат.