Writing software is an exercise in managing abstractions. The more you can reason abstractly about your software system, the better off you are. A key abstraction that's been around in the GUI world since the 1970s is the Model-View-Controller (MVC) paradigm. I'll discuss MVC briefly here, but there's a lot written about it on the web, so if it's new to you, you should definitely head over to your favorite search engine and look it up.
In MVC, you divide the code that concerns your user interface into three logical components:
- Model: This is responsible for storing the data to show to the user. It's a container of some kind and has no knowledge of your user interface, how things should be drawn, or which events or methods should be triggered by the user when they interact with your application.
- View: This is responsible...