Object-Orientation, Abstraction, and Data Structures Using Scala 2nd Edition