Similar Items: Head first object-oriented analysis and design