In the object-oriented programming community, a very common design pattern is Model-View-Controller. In this design pattern, each class you write should fall into exactly one of the following groups:
Model: Model classes describe your data. For example, if you write banking systems, you would probably create a model class called
SavingsAccount that would have a list of transactions and a current balance. The best model classes include nothing about the user interface and can be used in several applications.
View: A view class is part of the GUI. For example,
NSSlider is a view class. The best view classes are general-purpose classes and can be used in several applications.
Controller: Application-specific controller classes ...