This is an Assignment that has been evaluated in completion of module Object-Oriented Design Patterns and Principles offered by Faculty of Engineering, University of Ruhuna. This project illustrates the proper use of Design Patterns and understanding of SOLID principles in software development.