OOP: Object Oriented Programming (object geöriënteerd programmeren)
Ik houd verder in het artikel de afkorting OOP aan, want is “ogp” en wat een lelijke vertaling – misschien beter “pmo”; “programmeren met objecten”?)
Basisprincipes van OOP:
- encapsulation: insluiting
- inheritance: overerving
- polymorphism : polymorfie
Encapsulation (insluiting)
Een stukprogramma vormt een module die niet helemaal afgesloten is van de buitenwereld, maar wel enkel op een beperkte en voorgedefinieerde manier met de buitenwereld communiceert, via een “interface”. De binnenkant is de “implementation”, en die bepaalt hoe het stukje code intern zijn werk doet. Door de definitie van de interface kan de binnenkant aangepast binnen de grenzen van de interface (zonder de interface te veranderen), waardoor het stukje code gewoon blijft werken in de programma’s die het gebruiken. Het veranderen van de interface heeft grote gevolgen, dat moet dus vermeden worden: dit vereist goed nadenken over de interface.
Inheritance
Overerving kan dienen voor:
- hergebruiken implementatie: code automatisch beschikbaar maar kies kritisch!
- specialisatie: uitbreiding enkel het verschil bijprogrammeren, bv extra dimensie z-coördinaat, of herdefiniëren
- typevervanging
Belangrijke voorwaarde: als je overerving gebruikt, test altijd of de betekenis klopt met child is een parent (bv kind is een mens, auto is een voertuig enz).
De klasse-hiërarchie moet relatief ondiep en dus overzichtelijk blijven!
Algemene dingen moeten naar abstracte basisklassen (Abstract Data Type of ADT)
Tijdens het opbouwen van de klassenhiërarchie zullen klassen regelmatig herschreven moeten worden, dat is een goed moment om herhalen van code te vermijden.
Polymorphism
(…)
OOP woordenlijst:
Abstraction
Accessor
Child (child class)
Class
Constructor
Definition
Encapsulation
Generalisation (itt specialisation)
Implementation
Inheritance
Initialisation
Initiation
Interface
Method
Object
Overriding (vervanging methode)
Parent (parent class)
Polymorphism
Private
Protected
Public
Refactoring (herschrijven van klassen)
Responsability (in het object door afsluiten implementatie)
Root (root class)
Specialisation
Subclass