I'm wondering about the following issue: How deep should one go when designing an application in decomposing the working entities into objects?
What I mean could be described better by the following example.
Lets consider that I'm designing an application that is used to manage books. For that the basic model would be the book. So at the bottom of my application I would create a Book class that would have a number of fields (string) for title, authors name, book category, printing date.
Considering this and that perhaps the printing date and category could be somewhat independent entities/concepts should I create a class for each one with all the bells and whistles or could I use lets say an enumeration (in the case of category) and a string (in the case of printing date).
One argument with what I could come up to argue for the creation of separate classes would be that this way I can modify and validate the data related to them more easily but in the same time it could generate performance issues.
Which one would be the best practices? What factor decides the depth of entity decomposition in such cases (when common sense or brain power gives up)? Any thoughts? Thank you!
P.S. The example is only for explanation purposes and I hope it describes clearly enough what I want to ask.