In this chapter, we will improve our TodoIt application by making use of classes and interfaces, which will improve the code quality and make the application easily extendable and more maintainable.
By going from an almost purely imperative programming approach to a more object-oriented one, our code will convey more meaning, and we will be able to isolate specific concerns better.
First of all, we will briefly review the major object-oriented programming principles, including what classes and interfaces are and why they're beneficial when building applications, from the smallest to the largest ones.
We will go on to define the domain model of the TodoIt application using UML (short for Unified Modeling Language, for more information, see https://www.uml.org).
Then, we'll implement the code of our domain model, when you will...