> What are your thoughts on this matter ? Am I doing procedural > programming in a OO language or is this an unavoidable consequence of > the addressbook problem I am trying to solve ? > > Corollary: It has also occurred to me that Contact#setName(aString) > where Contact checks if the name satisfies certain > conditions might not be the best setup since a 'name' is not > string; it is much narrower than that (in my > implementation). Maybe I'd better create a Name class that > represents a 'name' object and enforces it's integrity. > Doing that for all Contact's attributes would reduce it's > responsibilities to the point where it would barely differ > from a Hash, thus exacerbating the question above. > Is not a contact in a book merely a hash with a perhaps limited set of keys? It's always seemed to me that a contact is an extremely simple thing in concept, but it contains some datatypes with some very specific constraints. I think that you're on the right track with the 'Name' class... Ari