Object georienteerd programmeren

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.

Detailuitleg SOLID

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