Sobes.tech
Junior — Middle

Kunt u de kernidee van het principe van openheid en geslotenheid in objectgeoriënteerd programmeren uitleggen?

sobes.tech AI

Antwoord van AI

Het Open/Gesloten-principe in objectgeoriënteerd programmeren betekent dat software-entiteiten (klassen, modules, functies) open moeten staan voor uitbreiding, maar gesloten moeten zijn voor wijziging.

Dit betekent dat het gedrag van het systeem kan worden uitgebreid zonder de bestaande code te wijzigen. Deze aanpak helpt fouten te voorkomen die kunnen ontstaan bij het wijzigen van geteste code, en vergemakkelijkt het onderhoud en de ontwikkeling van het programma.

Bijvoorbeeld, als je nieuwe functionaliteit wilt toevoegen, is het beter om een nieuwe klasse te maken die de bestaande uitbreidt, in plaats van de oorspronkelijke klasse direct te wijzigen.

Voorbeeld in 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 }
}

// Om een nieuwe figuur toe te voegen, bijvoorbeeld Driehoek, wijzigen we de bestaande klassen niet, maar maken we een nieuwe:
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 }
}