This latter function sends the update message to all registered views with a reference to the changed model, and an additional reference parameter that can be an object of any type. When a view gets the update message, it can use the passed object to decide what to do. If so, it updates the display as appropriate. A view can also query the model as to whether it has changed by sending it the hasChanged message. If true is returned, the view can query for values and update itself as needed.
User control is achieved when the user manipulates one of the control components.
This causes ALL views to be updated, not just the one the user manipulates. Notice that several views can be kept synchronized with this mechanism. It is also relatively easy to add new views to an application, since the underlying model generally doesn't need to be modified to do so. It is also somewhat easier to update the model for new functionality, since the interface and the functionality are kept separate. Also note that the view and its controllers can be fairly tightly coupled.