Ik ben een programmeur die begonnen is met C op school en de laatste jaren op werk vooral te maken heeft gehad met C++. De laatste tijd probeer ik met wat zelfstudie kennis te maken met Java(FX). Ik snap echter nog niet helemaal hoe het zit met encapsulatie.
Wat ik ervan begrepen heb is het een onderdeel van OO om de data en functies samen te voegen en daarnaast voorkomt het dat het niet mogelijk om de state van de members te wijzigen buiten het object (dat de members bevat) om.
In C++ hebben wij de vuistregel dat functies enkel const references naar een member mogen retourneren. In java zie ik echter regelmatig iets dergelijks gebeuren:
De functie getData() retourneert hier een referentie naar een intern object waarop vervolgens functies aangeroepen kunnen worden die de state van het interne object veranderen.
Gaat dat niet in tegen het principe van encapsulatie? Of hoe moet ik dat zien?
Wat ik ervan begrepen heb is het een onderdeel van OO om de data en functies samen te voegen en daarnaast voorkomt het dat het niet mogelijk om de state van de members te wijzigen buiten het object (dat de members bevat) om.
In C++ hebben wij de vuistregel dat functies enkel const references naar een member mogen retourneren. In java zie ik echter regelmatig iets dergelijks gebeuren:
code:
1
| something.getData().doSomethingThatChangesTheStateOfData() |
De functie getData() retourneert hier een referentie naar een intern object waarop vervolgens functies aangeroepen kunnen worden die de state van het interne object veranderen.
Gaat dat niet in tegen het principe van encapsulatie? Of hoe moet ik dat zien?
[ Voor 4% gewijzigd door Gehakt op 30-07-2012 21:42 ]