Object-Oriented Analysis and Design

Object-Oriented Analysis and Design

Object-Oriented Analysis and Design MVC: MODEL-VIEW-CONTROLLER ARCHITECTURE 1 What it is The Model-View-Controller (MVC) is an architecture, not a design pattern Found to be very useful for web applications, windows applications, mobile apps, etc The general structure of the architecture provides reuse of components, which is high priority MVC can be used with just about any type of implementation language (Java, C+ +, C#, HTML/PHP, etc.

2 Why? For most applications today, data is being manipulated and the application contains some kind of user interface which generates commands to create this manipulation It has been recognized that the data is logically independent from how it is displayed to the user Displays can be customized, but you dont need to redesign the database tables each time This implies a natural layered model architecture that separates the actual logic from the view (display)

3 MVC Architecture Model This usually represents the data or the actual programming logic this is what the program actually does Contains classes and methods that modify data or states View Renders data for the user to see Accepts input from the user to initiate changes in the model When the model changes, View must be updated

Controller Translates user actions (button clicks, etc.) into operations on the Model 4 MVC Architecture input User action View output Controller

Change data Model Change display User 5 MVC in Java View is made up of Swing widgets, like Jframes and Jbuttons Controller is the ActionListeners

Model is composed of ordinary Java classes Sometimes, ActionListeners may be included in the View, and the Controller may be made up of Java classes that implement business logic In either case, the View and the Model are completely decoupled MVC is also very popular in C#, and MS Visual Studio provides a template for MVC applications 6 MVC Implementation General steps: Instantiate the Model Instantiate the View, may have reference to Controller (initially Null)

Instantiate the Controller, pass references to Model and View Controller may then register with the View, so view has non-Null reference to Controller How it works: View recognizes an event, say a mouse click View calls appropriate method on Controller, may pass information Controller accesses relevant classes/methods in the Model, possibly creating changes or receiving information in return If Model has changed (or information received), Controller updates View 7 MVC - Extended Sometimes you see implementations where the Model directly communicates

with the View, bypassing the Controller Breaks Model-View Separation, but is occasionally useful We will see more details on the pattern being displayed here later (called Observer) View is notified directly of changes in Model, so View observes Model Useful for asynchronous Model updates Model changes independent of user interaction Model may have multiple Views, but each View has only one Model In this case the Model must update all Views that are observing it 8 MVC Architecture (Extended) Give me data

input View I have changed User action output User Model Controller

9 MVC Extended Implementation General steps: Instantiate the Model has initial Null reference to View Instantiate the View with reference to Model. View then registers with Model Instantiate the Controller, pass references to Model and View. Controller then registers with View How it works: View recognizes an event, say a mouse click View calls appropriate method on Controller, may pass information Controller accesses relevant classes/methods in the Model, possibly creating changes or receiving

information in return If Model has changed, it notifies all relevant Views. View queries Model, gets any changes, displays 10 Observations Controller and View can be tightly coupled Controller occasionally produces own output, like a popup window Occasionally there is information that is shared between Controller and View that does not involve the Model User often control the Views themselves (scrollbars, etc.) Bottom line: input and output are often combined in the GUI Leads to new architecture: Delegate Model

Model same as before Delegate responsible for input/output, combination of View and Controller UI or Document View actual GUI objects 11 Delegate Model Implementation General steps: Instantiate the Model does not care about UI Instantiate Delegate with reference to the Model How it works: Delegate recognizes event (from UI) and executes appropriate handler Delegate accesses Model, possibly updates it

If Model has changed, UI is updated (through the Delegate) 12 MVC How to Know You Did it Right You can swap out a new UI easily Same Model can be used without modification with a new UI Your Model can be easily tested without the UI being completed, for example with JUnit Model changes are quick the GUI is frozen while the Model changes, and this should not take long 13

Example - Calculator http://www.codeproject.com/Articles/25057/Simple-Example-of-MVC-Model-View-Controller-Design 14 Example - Calculator Look at the Main() function here is the section where the individual parts get created and linked This is classic MVC the Model does not talk to the View at all Now look at CalcController Note that the Model and View references are passed in typed to interfaces This is much more robust, allows different Models or Views to be used

In the constructor, the Controller gets added to the View as a listener OnClick this method updates the View with information from the Model 15 Example - Calculator Look at the code for frmCalcView This will implement the ICalcView interface Adds the reference to Controller as a listener When a label button is clicked, the text is sent to the Controller The lblPlus_Click() method also interacts with the Controller; this changes the state of the Model

Look at the Model code Depending on the Model state, the Model either sets the current value to the input number or adds the input number to the current value 16 Example - Calculator Walk through the operation: A number key is pressed. lbl_Click() method is invoked on the View (this is a listener for the UI number buttons) The OnClick() method on the Controller is invoked, and the value of the button is passed The Controller invokes the SetInput method on the Model, passing the number

read from the button. The Model sets currentValue to the number and returns this value to the Controller, which displays it in the Views Total text box. 17 Example - Calculator The + button is pushed. lblPlus_Click() method is invoked on the View (this is a listener for the UI + button) The OnAdd() method on the Controller is invoked The Controller invokes the ChangeToAddState() method on the Model. The Model changes its state to Add 18

Example - Calculator Another number key is pressed. lbl_Click() method is invoked on the View (this is a listener for the UI number buttons) The OnClick() method on the Controller is invoked, and the value of the button is passed The Controller invokes the SetInput method on the Model, passing the number read from the button. Since the state of The Model is now Add, the Model adds the passed number to the currentValue and passes the sum to the Controller. The Controller sets the value of the Total text field to the sum of the two numbers 19

Recently Viewed Presentations

  • Diapositiva 1 - Descubra El Poder De Sus Datos

    Diapositiva 1 - Descubra El Poder De Sus Datos

    Es multi-app. Los . Connectores y Gateways. permiten utilizar toda clase de nuevos servicios (Azure…) y/o potenciar los actuals. ... Genera aplicaciones de negocio para moviles y tablets centradas en dar conectividad de tus datos. Generación de aplicaciones CRUD ......
  • Marketing Mix - PLACE

    Marketing Mix - PLACE

    Brand Preference Try to convince consumers that your brand has a better value equation than the competition, try to influence consumer's brand preference. Goals of advertising - cont'd Brand Reminder As new brands come onto the market, older, more established...
  • Introduction to Male Sexual Dysfunction

    Introduction to Male Sexual Dysfunction

    PE (lifelong and acquired) is a male sexual dysfunction characterised by the following: 1.Ejaculation that always or nearly always occurs prior to or . within about 1 minute. of vaginal penetration (lifelong PE) or a clinically significant and bothersome reduction...
  • Birds Kingdom Animalia Phylum Chordata Class Aves Characteristics

    Birds Kingdom Animalia Phylum Chordata Class Aves Characteristics

    roject from the beak of many insect-eating birds, including flycatchers, nightjars and even the American Robin. They are believed to provide protection for the bird's eyes as it consumes wriggly prey. The bristles may also provide tactile feedback, like the...
  • Chapter 3—Expressions

    Chapter 3—Expressions

    Ken Iverson and APL. In the early 1960s, a computer scientist named Ken Iverson invented the APL programming language, which uses arrays as its primary data type.
  • color Penny Dobson Gordon Central High School THE

    color Penny Dobson Gordon Central High School THE

    A wheel of color which shows how colors are related. THE COLOR WHEEL. HUE. COLOR. PRIMARY COLORS ARE RED, BLUE, AND YELLOW. ... Some fashion experts say that when women wear black they are showing submission to men. WHITE. symbolize...
  • WJEC CPD - PowerPoint template (England - English only)

    WJEC CPD - PowerPoint template (England - English only)

    The current specification does not use the terms LEDC or MEDC. This reflects the view that the LEDC / MEDC classification is simplistic and does not represent the complex continuum of development which is, of course, very dynamic. There is...
  • Air Force Personnel Accountability and Assessment System (AFPAAS)

    Air Force Personnel Accountability and Assessment System (AFPAAS)

    Air Force Personnel Accountability and Assessment System (AFPAAS) ... 3421 Scheme of Maneuver - SOM Something happens - Need accountability All IP's and Studs "old school" muster as normal All IP's and Studs "Geek" muster on AFPAAS Done! AFPAAS What...