SOLID principes
SOLID als practisch uitgangspunt voor het schrijven van OO. Dit zijn de vijf belangrijkste OO-principes (bedacht door Robert C. Martin).
| Toelichting | |
|---|---|
| S | Single responsibility (SR) een klasse zou maar één reden mogen hebben om te veranderen. |
| O | Open for extension, closed for modification (OC) “software-entiteiten … moeten open zijn voor uitbreiding, maar gesloten voor wijziging.” |
| L | Liskov substitution (LS) “objecten in een programma zouden vervangbaar moeten zijn door instanties van hun subtypes zonder dat de juiste werking van het programma beïnvloed wordt.” |
| I | Interface segregation (IS) “veel client-specifieke interfaces zijn beter dan één algemene interface.” |
| D | Dependency Inversion (DI) "men zou afhankelijk moeten zijn van abstracties, niet van concrete implementaties"[8]Dependency injection is een manier om dit principe toe te passen. |
De vier concepten van OO als theoretische basis
http://codebetter.com/raymondlewallen/2005/07/19/4-major-principles-of-object-oriented-programming/
Naast SOLID worden vier concepten van OO uitgelegd. Deze worden hieronder gekoppeld aan de SOLID-principces.
Regels
Jaar 1
- Elke klasse heeft één verantwoordelijkheid (ABSTRACTIE/OVERERVING)
- Klassen modelleren naar gedrag, niet naar data (ENCAPSULATIE)
- geen instance variabelen public maken
>class Main {
static int main() {
// Wrong
Car.setSpeed(30);
// Right
Car.accelerate();
}
}
- Polymorfisme en delegatie worden gebruikt (POLYMORFISME)
- Constructors zijn alleen om objecten klaar te zetten.
- Instance variabelen alleen in de constructor instantieren
- geen getters gebruiken om variabelen naar hoger level te halen (ingewanden opvragen)
- leidt tot nare A.get().get().get() constructies, die zijn niet helder
Jaar 2
- Type switching is verboden (oa Liskov Substution)
- Polymorfisme en delegatie worden gebruikt waar mogelijk
Jaar 3
- TODO