Hands-On Object-Oriented Programming with Kotlin : Build robust software with reusable code using OOP principles and design patterns in Kotlin /: Build robust software with reusable code using OOP principles and design patterns in Kotlin. (2018)