A few of the people I know who are currently learning C# and object oriented programming and design have been sharing with me their problems in getting their heads around object oriented design. I have decided to try and help by working up an example which shows a program written 4 ways; Starting out with bad design and illustrating the problems with the design, each iteration will be a more advanced version until I feel I am happy with the overall design.