Principes OOP Flashcards
Object in OOP?
Samenhangend geheel van data & methodes om data te verwerken, eigen identiteit
voorbeeld: character in video game
* name, HP, …
* kan ander object bevatten: wapen met methode schiet
* eigen methode: move, attack (die wapen object oproept)
* Interface Character
Basis ideeën OOP
- modulariteit
- encapsulering (data hiding)
- overerving
- polymorfisme
Modulariteit?
Ontbinden van een probleem (programma) in modules om zo de totale complexiteit van het probleem te verminderen.
Object:
- logische eenheid
- uitwisselbaar
Encapsulering?
Data hiding
Een object verbergt zijn implementatie voor ‘onbevoegden’
Bundelen van gegevens, samen met de methoden die op die gegevens werken, in een enkele eenheid.
Overerving?
De functionaliteit van een object uitbreiden of specialiseren.
Polymorfisme?
Meerdere objecten kunnen een bepaalde taak uitvoeren.Welk object een taak uitvoert wordt pas op het moment zelf bepaald.
SOLID OO
Single purpose Open/closed Liskovsubstitution Interface segregation Dependency inversion
Single purpose principle
Klasse:
1 duidelijke verantwoordelijkheid
1 reden wijzigingen
Aanwijzingen principe:
- klasse beperkte omvang
- naam klasse omschrijft doel
- klasse gemakkelijk te ordenen
Open/closed principle
Open for extension: een object moet uitbreiding toelaten
Closed for modification: het gedrag van een object mag niet wijzigbaar zijn
Aanwijzingen principe:
- functionaliteit toegevoegd door nieuwe klassen
- overerving
- interfaces
Liskov substitution principle
Een object moet altijd vervangen kunnen worden door een meer gespecialiseerd object.
verzekerd bij overerving wanneer interface correct gebruikt
Interface segregation principle
Een object mag niet afhankelijk zijn van methodes die het niet gebruikt (heeft dus enkel methodes die het echt nodig heeft).
Aanwijzingen principe:
* veel kleine interfaces ipv enkele uitgebreide interfaces
Dependency inversion principle
High-level modules mogen niet van low-level modules
afhankelijk zijn, maar moeten afhankelijk zijn van abstracties.
Abstracties mogen niet van details afhankelijk zijn. Details
moeten afhankelijk zijn van abstracties.