Modeling data
The uToDoTypes
unit is where we can add data types that are shared between the UI and the data access module. To achieve a proper level of separation between the UI and the data access logic, we should define the interface for communication between the two tiers of the application. The data module will implement it and the main form of the application should use this interface as the only way to communicate with the data module. In this way, we have true plugin architecture. The UI can be developed independently, and we can provide different implementations of data access logic without affecting the rest of the application. Our data-driven app could be using different types of embedded databases and different data access frameworks, or maybe later we would want to switch to storing our data in a plain file or cloud storage.
The ToDoList
app will be dealing with todo items, so it makes perfect sense to declare in the common types unit a type that will represent a single...