Lecture9
Lecture9
Applications Programming
LECTURE 9
MVC Framework
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
MVC Framework
Learning Objectives
At the end of the lecture, you should be able to:
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
Model - Data
! This allows:
– The GUI to be separate from the data
– The control mechanism to be separate from the GUI
– Multiple views to be updated separately
– Low coupling & high cohesion
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
1
MVC continued
Model View Controller
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
Basic Communication
The user clicks a button on a window
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
MVC Communication
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
2
Model Code Schema
class Model
{
private List<View> views;
private void update()
{ for each view
view.update();
}
}
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
! The Controller can access View to get newly entered values or change the
View eg hide a window
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
class View
{
private Model model;
public void update()
{ // get model data
// update view
}
}
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
3
Quick Quiz
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
! The process is
– Create the Model layer
– Create the first View and pass the Model layer to it
– For each View object
• Create a Controller and pass the Model object
• Set the Controller to receive the event(s)
• Add it to the Model
• Create the next View object
– Each Controller object stores the Model object
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
MVC Diagram
Model
view view
Controller
model model
View
model model model
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
4
MVC Summary
Implement the Model; implement the View; Create the
Controller; Assign the Controller to the View
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
Quick Quiz
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
5
Problems with MVC
The goal of the MVC pattern is to separate the Model and View
by using a Controller
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
Observer Pattern
Controller
<Interface>
Model Observer
View
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
6
Observer Pattern Schema
! Here is the Model:
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
Quick Quiz
! What is the problem with the MVC pattern ?
! How does the Observer pattern solve the problem with MVC ?
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
7
MVC Dice Application
Scalable solution – can be used with multiple windows
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
Implementing Observer
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F
Key Concepts
Summary
! MVC – Model View Controller
! MVC separates the View from the Model
! Building the system: MMMVCVCVC
! MVC has a structural problem: View and
Model have a 2 way relationship
! Observer pattern: Model knows about
Observer not View
! 4 steps:
Models inherit from Updater
Model procedures call updateViews()
All panels inherit from MyObserver
All panels attach() to model(s)
INSEARCH CRICOS provider code: 00859D I UTS CRICOS provider code: 00099F