> 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