Object oriented programming is not what some people think. There are the old books and code examples that talk about modelling "real world objects". In practice, this isn't a strong OO pattern and doesn't lead to well constructed programs. OO is best a code organization tool. I'm reading an old OOP book that *says* you should model real world objects, but the first example is "locks" where you create a protocol for interacting with locks, and you can implement different types of locks.
1/n