Take the 2-minute tour ×  I've seen it commonly repeated the
object oriented programming is based on modelling the real
world, but is it?  It seems to me that is not true of anything
outside of the business layer. My GUI classes/data access
classes aren't modelling anything in the real world. Even in my
business layer I've got classes like observers, managers,
factories, etc. which aren't real world objects. I try to design
my classes to take advantage of things like encapsulation but is
the real world encapsulated?  While some objects I create are
modelling real world objects, would not pre-OOP code do the
same? I doubt that OO was the first people to include concepts
like Customer in their code bases. But OO is really about how to
model things, and that method of modelling doesn't seem inspired
by the real world to me.  So: does object oriented programming
really model the real world?  EDIT: If your going to post yet
another answer telling me how awesome OO is, you haven't
understood the question. The quest