Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.
In this vary simple solution in .NET using C# language, I try to breaking a software architecture in some Refactoring into more manageable and maintainable and also testable software modules.
The Car1 is the first design, and the refactor trying to change and improve molecularity stricture of the software.
This is just one solution. There may be a dozen other better and more appropriate solutions. So consider this example only as a guide Do not stop and implement your ideas