Hallo allemaal,
Ik probeer voor mezelf wat duidelijker te krijgen wat precies een "valid state" van een object is. Regelmatig lees ik dat je via de constructor een object in een valid state moet brengen. Nu vraag ik me af hoe ik dat moet zien.
Een fictief voorbeeldje. Stel ik heb een class die een pannenkoek bakt :-)
Nu geef ik de ingrediënten voor de pannenkoek mee aan de constructor.
<?php
$pannenkoekenbakker = new Pannenkoekenbakker($ingredienten);
?>
Ik heb nu dus de ingrediënten aan de constructor doorgegeven en deze worden geset als class property. Is de class nu in een "valid state"?
Als ik de de pannenkoek uit de pannenkoekenbakker wil halen, ziet dat er zo uit:
<?php
$pannenkoekenbakker = new Pannenkoekenbakker($ingredienten);
$heerlijke_pannenkoek = $pannenkoekenbakker->getPannenkoek();
?>
De oplettende lezer zal het misschien zijn opgevallen dat ik een pannenkoek opvraag, maar dat er nog geen pannenkoek is gebakken!
Mijn vraag is nu, was de Pannenkoekenbakker class hierboven dan wel in een "valid state"? Had de constructor eerst een pannenkoek moeten bakken om een "valid state" te bereiken? Of is het voldoende om in de constructor uitsluitend de ingrediënten te setten om in een "valid state" te geraken, en moet ik vervolgens zelf handmatig de "bakken" method aanroepen voordat ik een pannenkoek kan opvragen? Zo dus:
<?php
$pannenkoekenbakker = new Pannenkoekenbakker($ingredienten);
$pannenkoekenbakker->bakken();
$heerlijke_pannenkoek = $pannenkoekenbakker->getPannenkoek();
?>
Wanneer is de "valid state" bereikt vraag ik me af? Als ik in dit laatste voorbeeld een pannenkoek opvraag, terwijl die nog niet is gebakken dan heb ik een probleem. Is het dan toch de taak van de constructor om de pannenkoek te bakken om zodoende een "valid state" te bereiken?
2.097 views