Sobes.tech
Junior — Middle

Wat wordt bedoeld met het principe van openheid/sluitbaarheid in objectgeoriënteerd programmeren?

sobes.tech AI

Antwoord van AI

Het Open/Closed-principe in objectgeoriënteerd programmeren betekent dat software-entiteiten (klassen, modules, functies) open moeten staan voor uitbreiding, maar gesloten voor wijziging. Dit betekent dat het gedrag van het systeem kan worden uitgebreid zonder de bestaande code te wijzigen, wat het risico op fouten vermindert en het onderhoud vereenvoudigt.

Bijvoorbeeld, als je een nieuwe functionaliteit moet toevoegen, is het beter om een nieuwe klasse te maken die de bestaande uitbreidt in plaats van de oorspronkelijke klasse direct te wijzigen. In C++ wordt dit vaak bereikt door erfelijkheid en polymorfisme:

class Shape {
public:
    virtual double area() const = 0; // abstracte methode
};

class Rectangle : public Shape {
    double width, height;
public:
    Rectangle(double w, double h) : width(w), height(h) {}
    double area() const override { return width * height; }
};

class Circle : public Shape {
    double radius;
public:
    Circle(double r) : radius(r) {}
    double area() const override { return 3.14159 * radius * radius; }
};

Als je een nieuwe figuur wilt toevoegen, bijvoorbeeld een driehoek, maak je gewoon een nieuwe klasse Triangle zonder de bestaande klassen te wijzigen.