This is slightly off-topic, as your post is about strong encapsulation. Nonetheless, do take a look at Class::MethodMaker to help reduce the drudgery of
setting up the setters & getters. Perhaps you could subclass C:MM somehow if you really really need to lock up all the doors tight (rather than just latching the doors, as suggested by most of the previous respondents to your post).
water water everywhere