Object-oriented programming, unlike competing programming models such as functional, logic and procedural programming, does not owe its origins to mathematics or the adaptation of mathematics to the computer. Instead, its origin is simulation [2]. The purpose of simulation usually is to model the real world or a plausible system that functions in the real world. Therefore it is not surprising that one object-oriented design heuristic often presented to beginners is "model the real world". [3,4 for example].