I would recommend the third option (something else completely). It isn't object-oriented to pull the values out of an object like that and prevents it being data driven. It also means that immediately you are not using a method to do whatever you are trying to do, which rather defeats the purpose of having it as an object in the first place. If you say more exactly what you are trying to achieve, maybe we can advise more exactly how to do it in an OO way.