Steps in Scala: An Introduction to Object-Functional Programming