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