“You have your `isa' hierarchy all thought out - let's say you have a “mammals” class and a “reptiles” class and so on - and you start to implement it, and along comes a platypus, a fur-bearing, egg-laying, duck-billed creature, which doesn't appear to fit in any of the classifications you've created. So what you often end up having to do is rethink your entire hierarchy, refactoring into a different set of basic categories, or maintaining several categorizations along different axes. A lot of your thinking ends up getting thrown out, as well as any implementation you've done up to that point.”
Via RobotWisdom, [1] Encapsulation, Inheritance and the Platypus effect. [2]
[1] http://www.robotwisdom.com/