# H19: SOLID

De SOLID-principes zijn een set van vijf ontwerpprincipes in de softwareontwikkeling om code flexibeler, begrijpelijker en onderhoudbaarder te maken. Deze principes werden geïntroduceerd door Robert C. Martin en zijn een leidraad voor het schrijven van goed gestructureerde code.

Het gaat concreet om de volgende 5 principes:

**Single Responsibility Principle (SRP)** - Dit principe stelt dat een klasse slechts één reden zou moeten hebben om te veranderen. Met andere woorden, een klasse moet verantwoordelijk zijn voor slechts één specifieke taak of functionaliteit.

**Open/Closed Principle (OCP) -** Dit principe benadrukt dat klassen open moeten staan voor uitbreiding maar gesloten moeten blijven voor wijzigingen. Dit betekent dat nieuwe functionaliteit moet worden toegevoegd door bestaande code uit te breiden, in plaats van deze aan te passen.

**Liskov Substitution Principle (LSP)** - Volgens dit principe moet een object van een afgeleide klasse zich kunnen gedragen als een object van de basisklasse zonder ongewenst gedrag te introduceren. Met andere woorden, substitueerbaarheid van afgeleide klassen voor basisklassen moet behouden blijven.

**Interface Segregation Principle (ISP)** - Dit principe stelt dat gebruikers van een klasse of module niet gedwongen mogen worden om afhankelijk te zijn van interfaces die ze niet gebruiken. Het benadrukt het belang van het opsplitsen van interfaces in kleinere, specifieke delen.

**Dependency Inversion Principle (DIP)** - Dit principe draait om het omdraaien van de traditionele afhankelijkheden in software. Hogere niveaus van de applicatie zouden niet rechtstreeks afhankelijk moeten zijn van lagere niveaus. In plaats daarvan moeten beide afhankelijk zijn van abstracte concepten.
