Wat is een onveranderlijk object?
In objectgeoriënteerd programmeren is een onveranderlijk object een object waarvan de eigenschappen niet kunnen worden gewijzigd nadat het is gemaakt. De meeste objecten zijn daarentegen veranderlijke objecten, wat betekent dat sommige of alle eigenschappen vrij kunnen worden gewijzigd na het maken. Verschillende computertalen kunnen onveranderlijke objecten maken, waaronder Java, C ++, erlang, Tcl en scala.
Een onveranderlijk object kan op twee manieren worden gemaakt: door een klasse te maken die per definitie onveranderlijk is of door een anderszins veranderlijk object expliciet onveranderlijk te verklaren. De methode voor het maken van een onveranderlijke klasse varieert afhankelijk van de gebruikte computertaal. Ongeacht de taal, een onveranderlijke klasse mag geen methoden hebben die de interne gegevens kunnen wijzigen en geen manier om methoden te wijzigen - dat wil zeggen overschreven of overbelast - op een manier die de interne gegevens zou veranderen. Dit is het meest gecompliceerde van de twee benaderingen. Om een onveranderlijk object te maken van een anderszins veranderlijk object, kan men daarentegen vaak een trefwoord toepassen om het object als onveranderlijk aan te duiden.
Als voorbeeld, het maken van onveranderlijke objecten in Java is sterk afhankelijk van het "laatste" trefwoord. Een snelle manier om een klasse onveranderlijk te maken in Java, is de klasse, evenals alle methoden en gegevensleden, definitief te verklaren. Een vergelijkbare strategie kan ook worden gebruikt in C ++ met het trefwoord "const". Afhankelijk van de inhoud van de klas zijn deze benaderingen misschien niet de beste. Over het algemeen kunnen objecten meestal onveranderlijk worden gemaakt door zorgvuldig hun interne gegevens te onderhouden.
Een onveranderlijk object maken met behulp van een trefwoord, zoals in het bovenstaande voorbeeld, is vaak veel eenvoudiger dan een hele klasse schrijven als onveranderlijk. Het gebruik van deze aanpak heeft echter zijn gevaren. Bij het expliciet op deze manier aanwijzen van een onveranderlijk object, is het belangrijk dat de programmeur er zeker van is dat eerst alle juiste eigenschappen en gegevens in het object zijn opgenomen. Vertrouwen op een onvolledig object kan gevaarlijk zijn, vooral als het essentiële informatie mist.
Als een object kan worden gewijzigd, maar vereist dat onveranderlijke gegevens correct worden gemaakt, moeten de onveranderlijke gegevens worden geïnitialiseerd voordat het veranderlijke object kan worden gemaakt. Onveranderlijke objecten zijn altijd onveranderlijk, of het nu gegevenswaarden of grote objecten zijn en moeten altijd als zodanig worden behandeld. Over het algemeen kan een onveranderlijk object niet worden gewijzigd nadat het is gemaakt, hoewel ze soms kunnen worden gekopieerd als veranderlijke objecten. Meestal kan worden aangenomen dat een onveranderlijk object en alle kopieën ervan ook onveranderlijk zijn, wat problemen met gegevens of geheugen kan voorkomen.