About this Book
This book is for programmers with at least some basic knowledge of an object-oriented programming language. You should understand the language’s possibilities regarding class design. That is, I expect you to know what it means to define a class, instantiate it, extend it, mark it as abstract, define a method, call it, define parameters and parameter types, define return types, define properties and their types, etc.
I also expect you to have some actual experience with all of this, even if it’s not much. I think you should be able to read this book if you’ve just finished a basic programming course, but also if you’ve been working with classes for years.
Writing a book means taking a huge amount of material and shaping it into something relatively small and manageable. This is why creativity, without any constraints, is expected to produce chaos. If you mix in some constraints, the chances of success are much larger. Setting a number of constraints for yourself will help you make most of the micro-decisions along the way, preventing you from getting stuck.
Here are the constraints I introduced for this book: