Jeff Atwood rants about OOP for OOP’s sake here. If you don’t feel like reading it, the main theme is for developers to focus on Programming For Others rather than simply on Object Oriented Programming. In other words: don’t write objects for objects’ sake.
One of my recent contracts required me to do some cleanup and debugging work on an enterprise-level product life cycle management site. There wasn’t a class in the entire suite of applications that didn’t extend and implement at least an abstract base class and an interface. Many implemented 4 or 5 interfaces, in fact. I’m sure it was elegant to the developers who designed it but it was a nightmare to comprehend.