Designing with objects : object-oriented design patterns explained with stories from Harry Potter - Kak, Avinash C. (John Wiley & Sons, Inc., 2015)