The reader
should have a good background in the concepts of Object Oriented Programming
and any one of the object oriented languages (C++, Java, C#, etc) for
understanding the concepts covered in this article. A prior knowledge of
Unified Modeling Language (UML) is an added advantage though it is not
mandatory.