&gt; In reality we are never designing classes for a bookstore, shapes, or a animals.<p>This 100x. Anyone who has tried to solve real world problems finds out a very small amount of code written fits the model where a class corresponds to a family of physical objects, and probably much less even fits the model of polymorphism.<p>95% of classes end up just being fairly random containers for data and behaviour and OO just does not offer anything of value.