OO: een introductie (deel 1)
Wat is een object?
Uiteraard is het van belang om te begrijpen wat een object nu precies is voordat je begint met OO programmeren, ze zijn immers de basis van OO programmeren. De beste definitie van een object is: een representatie van een concept, inclusief kenmerken (staat) en gedrag, maar dit is natuurlijk wat lastig te volgen. Een stuk simpeler is om het zo te zien: kijk om je heen en alles wat je ziet is eigenlijk een object: een kat, een televisie, een koffiemok en zo verder.
Dat is natuurlijk lastig om te vergelijken met software, waar je omgaat met variabelen, lussen, functies en constanten. Het eerste wat je dus zal moeten doen als je begint met OO programmeren, is alles wat je weet over programmeren even naar de achtergrond toe laten zakken, syntax is in OO programmeren een stuk minder belangerijk dan de onderliggende concepten.
Goed, objecten dus. Kijk de ruimte waar je in zit nog eens een keer rond en probeer te denken in objecten. Bedenk dan vervolgens wat het mogelijke gedrag van een bepaald object kan zijn: je kunt een televisie aan zetten of uit zetten. Je kunt het volume omhoog schroeven, of juist omlaag en dat noemen we allemaal gedrag. Een televisie heeft ook staat (kenmerken): hij staat aan, of uit, het volume staat hard of zacht. Een object kan ook nog eens andere objecten bevatten: een televisie heeft een beeldbuis en knoppen die ingedrukt kunnen worden.
Software objecten zitten globaal gezien hetzelfde in elkaar als objecten in de echte wereld: ze bestaan net zo goed uit gedrag en kenmerken. Het grote verschil tussen “echte” objecten en objecten in de programmeerwereld is dat wij kenmerken in zogenaamde velden opslaan, en gedrag definiëren we door middel van zogenaamde methoden. Het is van belang om ten alle tijden te onthouden dat objecten een combinatie van gedrag en kenmerken zijn en dat deze in OO respectievelijk worden bepaald door methoden en velden. Methoden werken door de kenmerken van een object te veranderen: als je op de aanknop van een televisie drukt, dan gaat deze aan en dus is hij in de “aan” status.
Communicatie tussen objecten gaat dus ook altijd via de methoden van een object: je kunt een televisie niet uitzetten zonder op de aanknop van de televisie te drukken. Dat houdt dus in dat je de methode zetUit aan zou moeten roepen voordat hij uit gaat. Het verbergen van kenmerken (en dus de status of ook wel internal state) is een van de belangrijkste principes die er bestaat binnen object geörienteerd programmeren en staat beter bekend als het begrip “encapsulation”, daar kom ik later op terug. Hopelijk.