(aka MVC and Model-View-Control) A design pattern for user interfaces that has its origins in Smalltalk.

The basic idea is that the program is broken to three different parts:

  1. The Model, that has the data the program is processing,
  2. The View, that tells how the UI represents the data, and
  3. The Controller that controls how the view displays the model.

Basically, Controller and View correspond to Input and Output in traditional programs, and Model is the processing part.

The idea is that data and its processing is separate from the representation. This is to allow changing or adding different UIs easy, without need to mess with the classes that do the data operations.