Inside Smalltalk MVC: Patterns for GUI Programming

Size: px
Start display at page:

Download "Inside Smalltalk MVC: Patterns for GUI Programming"

Transcription

1 Inside Smalltalk MVC: Patterns for GUI Programming Chien-Tsun Chen Department of Computer Science and Information Engineering National Taipei University of Technology, Taipei 106, Taiwan Dec

2 This talk introduces Smalltalk MVC and presents patterns for programming GUI applications MVC in Smalltalk: Something old, something new Four patterns for GUI programming Understanding the issues of pluggability and adaptors help us better applying MVC

3 References [KP88] G. E. Krasner and S. T. Pope, A Cookbook for Using the Model- View-Controller User Interface Paradigm in Smalltalk-80, JOOP, [Woolf94] B. Woolf, Understanding and Using ValueModels, [Lwsie95] S. Lewis, The Art and Science of Smalltalk, Prentice Hall, [VW95] VisualWorks Cookbook, Rev 2.0, ParcPlace-Digitalk, [GoF95] E. Gamma et. al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, [Ducasse00] S. Ducasse, Object-Oriented Design with Smalltalk a Pure Object Language and its Environment, [Fowlwe04] Martin Fowler, Organizing Presentation Logic, 2004,

4 MVC in Smalltalk

5 The basic concepts of MVC is separating the application logic from the user interface An application can have several user interfaces

6 The views and controllers work together to control the user interface to the models Input events are send to Controllers

7 Why Smalltalk separates views from controllers? To combine views and controllers in different ways to get different look & feel To allows views and controllers to inherit from different classes

8 The relationships between model, view and controller Controller does not dependent on Model

9 Another way to see the relationships between model, view and controller model access

10 MVC in action, phase 1: The window is opened and ButtonView send the message value to the ButtonModel 2 1

11 MVC in action, phase 2: The user clicks the mouse on the area of the screen and causes the reactions value: model value not

12 Remember the following import points of classic MVC architecture of Smalltalk [Lwsie95] 1. Neither the view nor the controller hold onto the model s state. 2. The controller doesn t know anything about the visual layout of the widget. When it needs that information, it asks the view. 3. When the controller changes the state of the model, it doesn t directly tell the view. 4. The model doesn t know about the view. When its state is changed by the controller, it s only because of the dependency mechanism that the view gets to know about the change. 5. When the model tells the view that it s changed, it doesn t tell the view the new state-it only tells it what aspect has changed.

13 What do you mean by MVC? View state Session state Record state Presentation Domain Data Source Model W. Model App. Model (P. Model) Domain Model Database View Widget Window Messaging System Transaction Management Controller Controller Presenter Other Packages Application So, what is the problem? External Systems

14 Data is copied between layers and applications have to coordinate and synchronize the data between layers Presentation Layer (screen state) Domain Layer (session state) Database External Systems (record state)

15 To use MVC well, we must realize the micro and macro perspectives of MVC View state Session state Record state Presentation Domain Data Source Model W. Model App. Model (P. Model) Domain Model Database View Widget Window Messaging System Transaction Management Controller Controller Presenter Other Packages call notify sync Application Three flows: call, notification, and (inter layer) synchronization External Systems

16 Smalltalk MVC (micro MVC) View state Session state Record state Presentation Domain Data Source Model W. Model M 3,u App. Model (P. Model) Domain Model Database View Controller V C Widget 2,w 4,r 1,r Controller Window Presenter Messaging System Transaction Management Other Packages 0,i Application External Systems

17 Smalltalk MVC (micro MVC) using ValueModel View state Session state Record state Model M1 VM 5,u Presentation 3,w App. Model (P. Model) Domain Domain Model 4,u M2 Data Source Database View Controller V C Widget 2,w 6,r 1,r Controller Window Presenter Messaging System Transaction Management Other Packages 0,i Application External Systems

18 Application Model (Presenter Model) in Smalltalk View state Session state Record state Presentation Domain Data Source Model View Controller 0,i W. Model V 7,r Widget 1,r 2,w Controller C 6,u M1 AM 5,r 3,w Window Presenter 4,u M2 Domain Model 3,w Database Messaging System Transaction Management Other Packages Application External Systems

19 Application Model (Presenter Model) in C# using data binding View state Session state Record state Model View Controller M1 W. Model 6,r Widget Controller Presentation 5,u V 1,d AM 4,r C M2 2,w Window Presenter Domain 3,u M3 Domain Model Data Source Database Messaging System Transaction Management Other Packages 0,i Application External Systems

20 Application Model (Presenter Model) in Java View state Session state Record state Model View Controller M1 W. Model Widget 1,r 11,r Controller Presentation 10,u 2,w 3,d V C M2 AM 9,w 8,r 7,u 6,r 4,w Window Presenter Domain 5,u M3 Domain Model Data Source Database Messaging System Transaction Management Other Packages 0,i 6,r Application External Systems

21 MVP (a): Macro MVC View state Session state Record state Model View Controller 0,i M1 W. Model 8,r 7,u Presentation Widget Controller 1,d V App. Model (P. Model) 6,w Window 2,r 5,r 3,w Presenter C Domain Domain Model 4,u M2 Data Source Database Messaging System Transaction Management Other Packages Application External Systems

22 MVP (b): Dumb View, Presenter connects View with Domain Model View state Session state Record state Model View Controller 0,i M1 W. Model 9,r 8,u Presentation Widget Controller 1,d V App. Model (P. Model) 7,w Window 2,r 6,w 5,r Presenter C 3,w Domain Domain Model 4,u M2 Data Source Database Messaging System Transaction Management Other Packages Application External Systems

23 MVP (c): Presenter as a ValueModel View state Session state Record state Model View Controller 0,i M1 W. Model 10,r 9,u Widget Controller Presentation 1,d V App. Model (P. Model) 8,w 2,r Window 5,u 6,r 7,r Presenter C M2 3,w Domain Domain Model 4,u M3 Data Source Database Messaging System Transaction Management Other Packages Application External Systems

24 Patterns for Organizing GUI Applications

25 We start from the widget level MVC (Micro MVC) V C V C V C V C V C M M or How to test a widget? (Consider the MVP pattern) M A widget Two widgets share the same model

26 Autonomous View: Put all presentation state and behavior for a window in a single class View has both state and behavior view state Autonomous View is difficult to test But it is easy to implement in small applications screen sync. (view state to record state) record state Database Database

27 A better Autonomous View: uses domain objects View has both state and behavior view state Autonomous View is difficult to test But it is easy to implement in small applications screen sync. (view state to session state) session state Domain Model (Data Source) record state Database Database

28 Presentation Model (Application Model) Type 1: the view synchronizes its state with PM frequently View has state but no behavior PM (AM) can be tested without UI, and supports multiple views view state field or key sync. Application Model (state & behavior) Application Model (state & behavior) session state screen sync. (view state to session state) Domain Model record state

29 Presentation Model (Application Model) Type 2: the view stores all its state in the Presentation Model View has no state and no behavior PM (AM) can be tested without UI, and supports multiple views view state auto sync. (if Aspect Adaptor or Pluggable Adaptor is available) Application Model (state & behavior) but usually Application Model (state & behavior) session state screen sync. (view state to session state) Domain Model record state

30 MVP: separates the behavior of a presentation from the view while allowing the view to receive user events (Macro MVC) Dumb view (has state but not behavior) hooks (by stubbing view, Presenter can be tested) V view state Presenter (no state, only behavior) doesn t have to sync. date (All events are delegated to Presenter) Presenter (no state, only behavior) C session state screen sync. (view state to session state) Domain Model M record state

31 Review the four patterns: MVC, AV, PM, and MVP V C M Micro MVC (Widget) Autonomous View Presenter Model (Application Model) MVP (Macro MVC)

32 Pluggability and Adaptors

33 The problem comes from the original idea of MVC: separating application logic (model) from UI View/ Controller Model a = 50% b = 30% c = 20% From the model s perspective, an application can have several user interface (reuse model)

34 If we look at MVC from the View s perspective View/ Controller Model C :Object From the view s perspective, a view may use different kind of models (reuse view) :String

35 Connecting a widget to a model by (Pluggable) Adapter pattern (to find a narrow interface for Adaptee) Database AST (Target) File System XML TreeView (Client) Model (Adaptee)

36 Adaptors connect UI objects (widgets) which speak only value/value: to model objects with their own protocol Specific and simple interface (protocol) UI Object (Client) value value: Adaptor (Target, Adapter) model protocol Model Object (Adaptee)

37 ValueModel solves the problem of change notification, sharing, and adaptation (abstract class) A portion of the class hierarchy showing subclasses of ValueModel

38 ValueHolder title title title: value (String) atexteditorview V & C value value: avalueholder DA avaluehlder onchangesend: refresh to: Album domain model A ValueHolder is an object that encapsulates a value and allows it to behave like a model, that is, notifies the dependents of the model automatically when it is changed. It is most useful for widgets that accept temporary pieces of information that the interface must hold onto until they can be further processed.

39 AspectAdaptor atexteditorview value value: subject anaspectadaptor title title: V & C aspect DA domain model Widgets are commonly used for presenting data that is held by some object in the application, such as a domain model. In such cases, the appropriate value model is an AspectAdaptor, which is conceptually a pointer to the remote data. AspectAdaptor also support unusual accessors.

40 PluggableAdaptor (custom adaptor) atexteditorview David Lee Mr. David Lee V & C value value: anpluggableadaptor getblock putblock updateblock DA domain model A PluggableAdaptor performs a block of actions each time its value is accessed or changed. It takes three blocks, which enable it to perform custom actions at three junctures in the flow of communication between the widget and the domain model.

41 VisualWorks extends MVC by splitting the model into application model and data model (domain model) browsers, dialogs, editors, etc. collection objects, strings, numbers, booleans, files, etc. Dual role of model objects: They act as a store for the application s data, and they act upon that data in application specific ways

42 An Application Model is a model that is responsible for creating and managing a runtime UI, usually consisting of a single window. It manages only application information, leaving the domain information to its aspect models

43 The fine-grained structure of an Application sync sync

44 Review of the Presentation Model Pattern (1/2) Represent the state and behavior of the presentation independently of the GUI controls used in the interface (domain model)

45 Review of the Presentation Model Pattern(2/2) GUIs consist of widgets that contain the state of the GUI screen. Leaving the state of the GUI in widgets makes it harder to get at this state, since that involves manipulating widget APIs, and also encourages putting presentation behavior in the view class. Presentation Model pulls the state and behavior of the view out into a model class that is part of the presentation. The Presentation Model coordinates with the domain layer and provides an interface to the view that minimizes decision making in the view. The view either stores all its state in the Presentation Model or synchronizes its state with Presentation Model frequently.

46 Conclusion: Remember the four pictures Question?

47 Combine views & controllers in different ways to get different Look & Feel Using different views to get a different look Using different controllers to get a different feel

48 Smalltalk dependency mechanism : I want to know whenever your values have been changed obja objb Static structure objb is dependent on obja changed message obja dependents update message objb Dynamic behavior

49 The changed message and the update message of the dependency mechanism size: anumber size := anumber. self changed: #size. obja changed: anaspect with: aparm (two parameters) obja changed: anaspect (one parameter) obja changed. (no parameters) dependent update: anaspect with: aparm from: anobj. (three parameters) dependent update: anaspect with: aparm. (two parameters) dependent update: anaspect. (one parameter) update: anaspect anaspect = #color iftrue: [self redraw]. anaspect = #size iftrue: [self redraw].

50 Comparing the Observer sequence diagram with the MVC pattern (1/3) Model View 1 View 2

51 Comparing the Observer sequence diagram with the MVC pattern (2/3) Model Controller View

52 Comparing the Observer sequence diagram with the MVC pattern (3/3) Model View 1 View 2 SetState()

53 The MVC uses the one parameter version of changed value: model value not value: aboolean value := aboolean. self changed: #value. obja changed: anaspect with: aparm (two parameters) obja changed: anaspect (one parameter) obja changed. (no parameters)

54 The MVC uses the one parameter version of update dependent update: anaspect with: aparm from: anobj. (three parameters) dependent update: anaspect with: aparm. (two parameters) dependent update: anaspect. (one parameter) update: anaspect anaspect = #value iftrue: [self redraw]. anaspect = #size iftrue: [self redraw].

55 Instance variables of an MVC Triad for a running CounterView M V C

56 Let s look at a Swing JButton example: each widget is a UI component AbstractButton setmodel() JComponent setui() AbstractButton Swing UI Component

57 AbstractButton, ButtonModel and ComponentUI ComponentUI ButtonModel AbstractButton

58 There are two ways of looking at MVC: macro and micro Presenter (Controller) MVC in the small (widget level) View MVC in the large (application level) Model

59 The fine-grained structure of an Application sync sync

60 An example of MPV pattern (class diagram) M P V Design for testability M P V copy & modify

61 Why split the model into two pieces? Splitting the model in this way removes application specific processing from the data model, making it much more reusable. It also provides something, of a justification for putting some user-interface functionality in the application model. After all, in some cases an application is nothing more than a particular set of operations with a particular userinterface. Consequently, it doesn t matter too much if the application model knows some things about the user-interface. In this case the application is the interface [1, p. 100].

62 Why split the model into two pieces?

63 ValueModel looks like a point to point in C View 1 Model 1 View 1 Model 1 View 2 An object is shared directly View 2 (replace) The object is longer shared Model 2 View 1 Value Model View 1 Value Model View 2 An object is shared by ValueModel Model 1 View 2 (replace) The object is still shared Model 2

Organizing Presentation Logic

Organizing Presentation Logic Organizing Presentation Logic Chien-Tsun Chen Department of Computer Science and Information Engineering National Taipei University of Technology, Taipei 106, Taiwan ctchen@ctchen.idv.tw Otc. 25 2004 1

More information

Model-View-Controller (MVC) Architecture

Model-View-Controller (MVC) Architecture JOHN DEACON Computer Systems Development, Consulting & Training Model-View-Controller (MVC) Architecture Author: John Deacon Synopsis: Although the MVC architecture (or pattern or idiom) has been around

More information

We will talk about Alt-Tab from the usability perspective. Think about: - Is it learnable? - Is it efficient? - What about errors and safety?

We will talk about Alt-Tab from the usability perspective. Think about: - Is it learnable? - Is it efficient? - What about errors and safety? 1 This lecture s candidate for the Hall of Fame & Shame is the Alt-Tab window switching interface in Microsoft Windows. This interface has been copied by a number of desktop systems, including KDE, Gnome,

More information

Model-View-Controller Architecture

Model-View-Controller Architecture --Controller Architecture --Controller Architecture Controller --Controller (MVC) is an architectural pattern, a standard design in the field of software architecture. Heavily used by Apple in writing

More information

An object oriented application for corporate networks design

An object oriented application for corporate networks design An object oriented application for corporate networks design Erik Chrisment France Telecom Cnet 06921 Sophia Antipolis Cedex - FRANCE chrismen@sophia.cnet.fr (+33) 92 94 53 10 1.0 Introduction For several

More information

Software System/Design & Architecture. Eng.Muhammad Fahad Khan Assistant Professor Department of Software Engineering

Software System/Design & Architecture. Eng.Muhammad Fahad Khan Assistant Professor Department of Software Engineering Software System/Design & Architecture Eng.Muhammad Fahad Khan Assistant Professor Department of Software Engineering Todays lecture Model View Controller (MVC) Copyright 2012 @ M.Fahad Khan 2 Model-View-Controller

More information

GUI Implementation Support

GUI Implementation Support GUI Implementation Support Learning Objectives: Why GUIs? What is a GUI? Why is implementation support needed? What kinds of implementation support are available? Basic concepts in OO GUI toolkit & app

More information

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar Design Patterns MSc in Communications Software Produced by Eamonn de Leastar (edeleastar@wit.ie) Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie

More information

Graphical User Interfaces (GUIs)

Graphical User Interfaces (GUIs) CMSC 132: Object-Oriented Programming II Graphical User Interfaces (GUIs) Department of Computer Science University of Maryland, College Park Model-View-Controller (MVC) Model for GUI programming (Xerox

More information

Lecture 4: UI Software Architecture. Fall UI Design and Implementation 1

Lecture 4: UI Software Architecture. Fall UI Design and Implementation 1 Lecture 4: UI Software Architecture Fall 2006 6.831 UI Design and Implementation 1 1 UI Hall of Fame or Shame? Source: Interface Hall of Shame Fall 2006 6.831 UI Design and Implementation 2 This message

More information

UI Software Organization

UI Software Organization UI Software Organization The user interface From previous class: Generally want to think of the UI as only one component of the system Deals with the user Separate from the functional core (AKA, the app

More information

Lectures 24 and 25 Introduction to Architectural Styles and Design Patterns

Lectures 24 and 25 Introduction to Architectural Styles and Design Patterns Lectures 24 and 25 Introduction to Architectural Styles and Design Patterns Software Engineering ITCS 3155 Fall 2008 Dr. Jamie Payton Department of Computer Science University of North Carolina at Charlotte

More information

Design Patterns IV Structural Design Patterns, 1

Design Patterns IV Structural Design Patterns, 1 Structural Design Patterns, 1 COMP2110/2510 Software Design Software Design for SE September 17, 2008 Class Object Department of Computer Science The Australian National University 18.1 1 2 Class Object

More information

Solution. Figure 1. You can change Mary's age by using either the text box or the slider control.

Solution. Figure 1. You can change Mary's age by using either the text box or the slider control. Model GUI Mediator Abstract A MGM object displays a portion of a software application s data to the user, and optionally allows that data to be altered by the user of the application. MGM is specifically

More information

Building Windows in VisualAge Smalltalk

Building Windows in VisualAge Smalltalk Building Windows in VisualAge Smalltalk The Presenters Ginny Ghezzo: Project Manager for IBM VisualAge Smalltalk and Level 3 support for the Application Builder John O Keefe: Technical Lead for IBM VisualAge

More information

Widget Toolkits CS MVC

Widget Toolkits CS MVC Widget Toolkits 1 CS349 -- MVC Widget toolkits Also called widget libraries or GUI toolkits or GUI APIs Software bundled with a window manager, operating system, development language, hardware platform

More information

Organization of User Interface Software

Organization of User Interface Software Organization of User Interface Software Administration Questions about assignments due and assignments assigned 2 What we will talk about Ways to organize UI code Different models of user interfaces as

More information

CSE 331 Software Design & Implementation

CSE 331 Software Design & Implementation CSE 331 Software Design & Implementation Kevin Zatloukal Summer 2017 Java Graphics and GUIs (Based on slides by Mike Ernst, Dan Grossman, David Notkin, Hal Perkins, Zach Tatlock) Review: how to create

More information

Design Patterns. it s about the Observer pattern, the Command pattern, MVC, and some GUI. some more

Design Patterns. it s about the Observer pattern, the Command pattern, MVC, and some GUI. some more Lecture: Software Engineering, Winter Semester 2011/2012 some more Design Patterns it s about the Observer pattern, the Command pattern, MVC, and some GUI Design Pattern *...+ describes a problem which

More information

Adapter pattern. Acknowledgement: Freeman & Freeman

Adapter pattern. Acknowledgement: Freeman & Freeman Adapter pattern Acknowledgement: Freeman & Freeman Example Scenario The European wall outlet exposes one interface for getting power The adapter converts one interface into another The US laptop expects

More information

Lecture 9: UI Software Architecture. Fall UI Design and Implementation 1

Lecture 9: UI Software Architecture. Fall UI Design and Implementation 1 Lecture 9: UI Software Architecture Fall 2003 6.893 UI Design and Implementation 1 UI Hall of Fame or Shame? Source: Interface Hall of Shame Fall 2003 6.893 UI Design and Implementation 2 Today s hall

More information

Design Patterns IV. Alexei Khorev. 1 Structural Patterns. Structural Patterns. 2 Adapter Design Patterns IV. Alexei Khorev. Structural Patterns

Design Patterns IV. Alexei Khorev. 1 Structural Patterns. Structural Patterns. 2 Adapter Design Patterns IV. Alexei Khorev. Structural Patterns Structural Design Patterns, 1 1 COMP2110/2510 Software Design Software Design for SE September 17, 2008 2 3 Department of Computer Science The Australian National University 4 18.1 18.2 GoF Structural

More information

Pattern: Model-View-Controller (MVC) Beat Generator Example. Model-View-Controller. Model-View-Controller

Pattern: Model-View-Controller (MVC) Beat Generator Example. Model-View-Controller. Model-View-Controller Pattern: Model-View-Controller (MVC) Beat Generator MVC is an architectural pattern it specifies code organization at a higher level than a design pattern. (But the idea is similar it tells you how to

More information

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson More on Design CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson Outline Additional Design-Related Topics Design Patterns Singleton Strategy Model View Controller Design by

More information

AUTOMATIC GRAPHIC USER INTERFACE GENERATION FOR VTK

AUTOMATIC GRAPHIC USER INTERFACE GENERATION FOR VTK AUTOMATIC GRAPHIC USER INTERFACE GENERATION FOR VTK Wilfrid Lefer LIUPPA - Université de Pau B.P. 1155, 64013 Pau, France e-mail: wilfrid.lefer@univ-pau.fr ABSTRACT VTK (The Visualization Toolkit) has

More information

Theme 2 Program Design. MVC and MVP

Theme 2 Program Design. MVC and MVP Theme 2 Program Design MVC and MVP 1 References Next to the books used for this course, this part is based on the following references: Interactive Application Architecture Patterns, http:// aspiringcraftsman.com/2007/08/25/interactiveapplication-architecture/

More information

DESIGN PATTERN - INTERVIEW QUESTIONS

DESIGN PATTERN - INTERVIEW QUESTIONS DESIGN PATTERN - INTERVIEW QUESTIONS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Design Pattern Interview Questions

More information

Widget. Widget is a generic name for parts of an interface that have their own behaviour. e.g., buttons, progress bars, sliders, drop-down

Widget. Widget is a generic name for parts of an interface that have their own behaviour. e.g., buttons, progress bars, sliders, drop-down Widgets Jeff Avery Widget Widget is a generic name for parts of an interface that have their own behaviour. e.g., buttons, progress bars, sliders, drop-down menus, spinners, file dialog boxes, etc are

More information

Design of Software Systems (Ontwerp van SoftwareSystemen) Design Patterns Reference. Roel Wuyts

Design of Software Systems (Ontwerp van SoftwareSystemen) Design Patterns Reference. Roel Wuyts Design of Software Systems (Ontwerp van SoftwareSystemen) Design Patterns Reference 2015-2016 Visitor See lecture on design patterns Design of Software Systems 2 Composite See lecture on design patterns

More information

Object Oriented. Analysis and Design

Object Oriented. Analysis and Design OODP- OOAD Session 5 Object Oriented Analysis and Design Oded Lachish Department of Computer Science and Information Systems Birkbeck College, University of London Email: oded@dcs.bbk.ac.uk Web Page: http://www.dcs.bbk.ac.uk/~oded

More information

An Introduction to Patterns

An Introduction to Patterns An Introduction to Patterns Robert B. France Colorado State University Robert B. France 1 What is a Pattern? - 1 Work on software development patterns stemmed from work on patterns from building architecture

More information

Model-view-controller View hierarchy Observer

Model-view-controller View hierarchy Observer -view-controller hierarchy Fall 2004 6831 UI Design and Implementation 1 Fall 2004 6831 UI Design and Implementation 2!"# Separation of responsibilities : application state Maintains application state

More information

Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software

Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software Chapter 9 Introduction to Design Patterns Copy Rights Virtual University of Pakistan 1 Design

More information

A Guide to CMS Functions

A Guide to CMS Functions 2017-02-13 Orckestra, Europe Nygårdsvej 16 DK-2100 Copenhagen Phone +45 3915 7600 www.orckestra.com Contents 1 INTRODUCTION... 3 1.1 Who Should Read This Guide 3 1.2 What You Will Learn 3 2 WHAT IS A CMS

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar Design Patterns MSc in Communications Software Produced by Eamonn de Leastar (edeleastar@wit.ie) Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie

More information

Practical Object-Oriented Design in Ruby

Practical Object-Oriented Design in Ruby Practical Object-Oriented Design in Ruby Anyone that has done a decent amount of programming in Ruby is bound hear about the book Practical Object-Oriented Design in Ruby [1] (http://www.poodr.com/) by

More information

CSE 70 Final Exam Fall 2009

CSE 70 Final Exam Fall 2009 Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15

More information

All the Swing components start with J. The hierarchy diagram is shown below. JComponent is the base class.

All the Swing components start with J. The hierarchy diagram is shown below. JComponent is the base class. Q1. If you add a component to the CENTER of a border layout, which directions will the component stretch? A1. The component will stretch both horizontally and vertically. It will occupy the whole space

More information

Application Frameworks an Experience Report

Application Frameworks an Experience Report Application Frameworks an Experience Report Arden Thomas, Cincom Systems World Headquarters Cincinnati, Ohio Cincom Smalltalk It makes hard things easy, and the impossible, possible 1 Welcome April 9,

More information

Model-view-controller. An architecture for UI

Model-view-controller. An architecture for UI Model-view-controller An architecture for UI 1 The flow of information (idealized) Flow of information 0 Event 1 Changes Controller 3 Pixels O S Application Model View 2 State 2003 T. S. Norvell Engineering

More information

The Null Object Pattern

The Null Object Pattern Knowledge Systems Corp. 4001 Weston Pkwy, Cary, NC 27513-2303 919-677-1119 x541, bwoolf@ksccary.com NULL OBJECT Object Structural Intent Provide a surrogate for another object that shares the same interface

More information

As a programmer, you know how easy it can be to get lost in the details

As a programmer, you know how easy it can be to get lost in the details Chapter 1 Congratulations, Your Problem Has Already Been Solved In This Chapter Introducing design patterns Knowing how design patterns can help Extending object-oriented programming Taking a look at some

More information

BCS Higher Education Qualifications. Diploma in IT. Object Oriented Programming Syllabus

BCS Higher Education Qualifications. Diploma in IT. Object Oriented Programming Syllabus BCS Higher Education Qualifications Diploma in IT Object Oriented Programming Syllabus Version 3.0 December 2016 This is a United Kingdom government regulated qualification which is administered and approved

More information

Widgets. Overview. Widget. Widgets Widget toolkits Lightweight vs. heavyweight widgets Swing Widget Demo

Widgets. Overview. Widget. Widgets Widget toolkits Lightweight vs. heavyweight widgets Swing Widget Demo Widgets Overview Widgets Widget toolkits Lightweight vs. heavyweight widgets Swing Widget Demo Widget Widget is a generic name for parts of an interface that have their own behavior: buttons, progress

More information

OODP Session 4. Web Page: Visiting Hours: Tuesday 17:00 to 19:00

OODP Session 4.   Web Page:   Visiting Hours: Tuesday 17:00 to 19:00 OODP Session 4 Session times PT group 1 Monday 18:00 21:00 room: Malet 403 PT group 2 Thursday 18:00 21:00 room: Malet 407 FT Tuesday 13:30 17:00 room: Malet 404 Email: oded@dcs.bbk.ac.uk Web Page: http://www.dcs.bbk.ac.uk/~oded

More information

Educational Fusion. Implementing a Production Quality User Interface With JFC

Educational Fusion. Implementing a Production Quality User Interface With JFC Educational Fusion Implementing a Production Quality User Interface With JFC Kevin Kennedy Prof. Seth Teller 6.199 May 1999 Abstract Educational Fusion is a online algorithmic teaching program implemented

More information

CS 349 / SE 382 Custom Components. Professor Michael Terry February 6, 2009

CS 349 / SE 382 Custom Components. Professor Michael Terry February 6, 2009 CS 349 / SE 382 Custom Components Professor Michael Terry February 6, 2009 Today s Agenda Midterm Notes A2 Scroll XOR demo A3 super special sneak preview Clarifications on Fitt s Law Undo Custom components

More information

Model-View-Controller

Model-View-Controller Model-View-Controller rationale implementation benefit Model-View-Controller 1 How can we design a power point application? Model-View-Controller 2 Possible Design: Data and UI in Same Object What if we

More information

Web Technologies VU ( ) Vedran Sabol. Nov 13, ISDS, TU Graz. Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, / 60

Web Technologies VU ( ) Vedran Sabol. Nov 13, ISDS, TU Graz. Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, / 60 Web Technologies VU (706.704) Vedran Sabol ISDS, TU Graz Nov 13, 2017 Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 13, 2017 1 / 60 Outline 1 Separation of Concerns Design Principle 2 Model-View-Controller

More information

Design Patterns and Frameworks Command

Design Patterns and Frameworks Command Design Patterns and Frameworks Command Oliver Haase Oliver Haase Emfra Command 1/13 Description Classification: Object-based behavioral pattern Purpose: Encapsulate a command as an object. Allows to dynamically

More information

implementation support

implementation support Implementation support chapter 8 implementation support programming tools levels of services for programmers windowing systems core support for separate and simultaneous usersystem activity programming

More information

Introduction to GUIs. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2014

Introduction to GUIs. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2014 Introduction to GUIs Principles of Software Construction: Objects, Design, and Concurrency Jonathan Aldrich and Charlie Garrod Fall 2014 Slides copyright 2014 by Jonathan Aldrich, Charlie Garrod, Christian

More information

Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns

Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns Today we are going to talk about an important aspect of design that is reusability of design. How much our old design

More information

A Journey Through the Land of Model-View-* Design Patterns

A Journey Through the Land of Model-View-* Design Patterns A Journey Through the Land of Model-View-* Design Patterns Artem Syromiatnikov Department of Computer Science Linnaeus University Växjö, Sweden artem.syromiatnikov@gmail.com Danny Weyns Department of Computer

More information

Design Patterns. Observations. Electrical Engineering Patterns. Mechanical Engineering Patterns

Design Patterns. Observations. Electrical Engineering Patterns. Mechanical Engineering Patterns Introduction o to Patterns and Design Patterns Dept. of Computer Science Baylor University Some slides adapted from slides by R. France and B. Tekinerdogan Observations Engineering=Problem Solving Many

More information

security model. The framework allowed for quickly creating applications that examine nancial data stored in a database. The applications that are gene

security model. The framework allowed for quickly creating applications that examine nancial data stored in a database. The applications that are gene Patterns For Developing Successful Object-Oriented Frameworks Joseph W. Yoder August 27, 1997 1 Overview The work described here extends last years OOPSLA framework workshop paper [Yoder 1996] describing

More information

Design Patterns Reid Holmes

Design Patterns Reid Holmes Material and some slide content from: - Head First Design Patterns Book - GoF Design Patterns Book Design Patterns Reid Holmes GoF design patterns $ %!!!! $ "! # & Pattern vocabulary Shared vocabulary

More information

2. Reasons for implementing clos-unit

2. Reasons for implementing clos-unit A CLOS Implementation of the JUnit Testing Framework Architecture: A Case Study Sandro Pedrazzini Canoo Engineering AG sandro.pedrazzini@canoo.com Abstract There are different reasons why you would like

More information

Design Patterns. GoF design patterns catalog

Design Patterns. GoF design patterns catalog Design Patterns GoF design patterns catalog OMT notations - classes OMT notation - relationships Inheritance - triangle Aggregation - diamond Acquaintance keeps a reference solid line with arrow Creates

More information

Prototyping a Swing Interface with the Netbeans IDE GUI Editor

Prototyping a Swing Interface with the Netbeans IDE GUI Editor Prototyping a Swing Interface with the Netbeans IDE GUI Editor Netbeans provides an environment for creating Java applications including a module for GUI design. Here we assume that we have some existing

More information

CSC7203 : Advanced Object Oriented Development. J Paul Gibson, D311. Design Patterns

CSC7203 : Advanced Object Oriented Development. J Paul Gibson, D311. Design Patterns CSC7203 : Advanced Object Oriented Development J Paul Gibson, D311 paul.gibson@telecom-sudparis.eu http://www-public.tem-tsp.eu/~gibson/teaching/csc7203/ Design Patterns /~gibson/teaching/csc7203/csc7203-advancedoo-l2.pdf

More information

Data Mappings in the Model-View-Controller Pattern 1

Data Mappings in the Model-View-Controller Pattern 1 Data Mappings in the Model-View-Controller Pattern 1 Martin Rammerstorfer and Hanspeter Mössenböck University of Linz, Institute of Practical Computer Science {rammerstorfer,moessenboeck@ssw.uni-linz.ac.at

More information

Web Applications: A Simple Pluggable Architecture for Business Rich Clients

Web Applications: A Simple Pluggable Architecture for Business Rich Clients Web Applications: A Simple Pluggable Architecture for Business Rich Clients Duncan Mac-Vicar and Jaime Navón Computer Science Department, Pontificia Universidad Católica de Chile {duncan,jnavon}@ing.puc.cl

More information

CS 160: Interactive Programming

CS 160: Interactive Programming CS 160: Interactive Programming Professor John Canny 3/8/2006 1 Outline Callbacks and Delegates Multi-threaded programming Model-view controller 3/8/2006 2 Callbacks Your code Myclass data method1 method2

More information

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09 Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09 Hello, today we will create another application called a math quiz. This

More information

Object-Oriented Concepts and Design Principles

Object-Oriented Concepts and Design Principles Object-Oriented Concepts and Design Principles Signature Specifying an object operation or method involves declaring its name, the objects it takes as parameters and its return value. Known as an operation

More information

Patterns Of Enterprise Application Architecture

Patterns Of Enterprise Application Architecture Patterns Of Enterprise Application Architecture Lecture 11-12 - Outlines Overview of patterns Web Presentation Patterns Base Patterns Putting It All Together References Domain Logic Patterns Domain Model

More information

Design Pattern and Software Architecture: IV. Design Pattern

Design Pattern and Software Architecture: IV. Design Pattern Design Pattern and Software Architecture: IV. Design Pattern AG Softwaretechnik Raum E 3.165 Tele.. 60-3321 hg@upb.de IV. Design Pattern IV.1 Introduction IV.2 Example: WYSIWYG Editor Lexi IV.3 Creational

More information

Patterns Architectural Styles Archetypes

Patterns Architectural Styles Archetypes Patterns Architectural Styles Archetypes Patterns The purpose of a pattern is to share a proven, widely applicable solution to a particular problem in a standard form that allows it to be easily reused.

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

Human Computer Interaction Lecture 08 [ Implementation Support ] Implementation support

Human Computer Interaction Lecture 08 [ Implementation Support ] Implementation support Human Computer Interaction Lecture 08 [ Implementation Support ] Imran Ihsan Assistant Professor www.imranihsan.com aucs.imranihsan.com HCI08 - Implementation Support 1 Implementation support programming

More information

Web-Based Object Inspection

Web-Based Object Inspection Web-Based Object Inspection Dick Cowan, Martin Griss Software Technology Laboratory HP Laboratories Palo Alto HPL-2001-297 December 10 th, 2001* E-mail: dick_cowan@hp.com, martin_griss@hp.com inspection,

More information

Thin Client for Web Using Swing

Thin Client for Web Using Swing Thin Client for Web Using Swing Raffaello Giulietti and Sandro Pedrazzini SUPSI, Dipartimento di Informatica ed Elettrotecnica, Galleria 2, CH-6928 Manno, Switzerland TINET SA CH-6928 Manno, Switzerland

More information

MV* Design Patterns. Alexander Nelson August 25, University of Arkansas - Department of Computer Science and Computer Engineering

MV* Design Patterns. Alexander Nelson August 25, University of Arkansas - Department of Computer Science and Computer Engineering MV* Design Patterns Alexander Nelson August 25, 2017 University of Arkansas - Department of Computer Science and Computer Engineering Reminders Course Mechanics Course Webpage: you.uark.edu/ahnelson/cmpe-4623-mobile-programming/

More information

REVIEW OF THE BASIC CHARACTERISTICS OF OBJECT ORIENTATION

REVIEW OF THE BASIC CHARACTERISTICS OF OBJECT ORIENTATION c08classandmethoddesign.indd Page 282 13/12/14 2:57 PM user 282 Chapter 8 Class and Method Design acceptance of UML as a standard object notation, standardized approaches based on work of many object methodologists

More information

Swing. By Iqtidar Ali

Swing. By Iqtidar Ali Swing By Iqtidar Ali Background of Swing We have been looking at AWT (Abstract Window ToolKit) components up till now. Programmers were not comfortable when doing programming with AWT. Bcoz AWT is limited

More information

stanford hci group / cs376 UI Software Tools Scott Klemmer 14 October research topics in human-computer interaction

stanford hci group / cs376 UI Software Tools Scott Klemmer 14 October research topics in human-computer interaction stanford hci group / cs376 UI Software Tools Scott Klemmer 14 October 2004 research topics in human-computer interaction http://cs376.stanford.edu cs547 tomorrow: Scott Snibbe Body, Space, and Cinema 2

More information

MOBILE COMPUTING 1/20/18. How many of you. CSE 40814/60814 Spring have implemented a command-line user interface?

MOBILE COMPUTING 1/20/18. How many of you. CSE 40814/60814 Spring have implemented a command-line user interface? MOBILE COMPUTING CSE 40814/60814 Spring 2018 How many of you have implemented a command-line user interface? How many of you have implemented a graphical user interface? HTML/CSS Java Swing.NET Framework

More information

Microsoft Office 365 OneNote and Notebooks

Microsoft Office 365 OneNote and Notebooks Microsoft Office 365 OneNote and Notebooks With OneNote Online, you can use your web browser to create, open, view, edit, format, and share the OneNote notebooks that you created on OneDrive. If your school

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 31 Static Members Welcome to Module 16 of Programming in C++.

More information

Facade and Adapter. Comp-303 : Programming Techniques Lecture 19. Alexandre Denault Computer Science McGill University Winter 2004

Facade and Adapter. Comp-303 : Programming Techniques Lecture 19. Alexandre Denault Computer Science McGill University Winter 2004 Facade and Adapter Comp-303 : Programming Techniques Lecture 19 Alexandre Denault Computer Science McGill University Winter 2004 March 23, 2004 Lecture 19 Comp 303 : Facade and Adapter Page 1 Last lecture...

More information

THE DUAL MODEL ARCHITECTURE

THE DUAL MODEL ARCHITECTURE Xalt DATA SHEET THE DUAL MODEL ARCHITECTURE 1. INTRODUCTION Xalt is a revolutionary technology platform for key business operations across all industries. It enables the convergence of the physical world

More information

Research Report. Developing Highly-Responsive User Interfaces with DHTML and Servlets. Katherine Betz, Avraham Leff, James T.

Research Report. Developing Highly-Responsive User Interfaces with DHTML and Servlets. Katherine Betz, Avraham Leff, James T. RC 21628 (97505) 20DEC1999 Computer Science/Mathematics Research Report Developing Highly-Responsive User Interfaces with DHTML and Servlets Katherine Betz, Avraham Leff, James T. Rayfield IBM Research

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

Sri Vidya College of Engineering & Technology

Sri Vidya College of Engineering & Technology UNIT-V TWO MARKS QUESTION & ANSWER 1. What is the difference between the Font and FontMetrics class? Font class is used to set or retrieve the screen fonts.the Font class maps the characters of the language

More information

Lecture 13: Design Patterns

Lecture 13: Design Patterns 1 Lecture 13: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2005 2 Pattern Resources Pattern Languages of Programming Technical conference on Patterns

More information

Graduating to GUI. PyGObject for Beginners. Presented by Paul W. Frields Red Hat, Inc. / Fedora Project

Graduating to GUI. PyGObject for Beginners. Presented by Paul W. Frields Red Hat, Inc. / Fedora Project Graduating to GUI PyGObject for Beginners Presented by Paul W. Frields Red Hat, Inc. / Fedora Project Copyright 2011 Paul W. Frields. This work is licensed under a Creative Commons Attribution 3.0 License.

More information

Idioms for Building Software Frameworks in AspectJ

Idioms for Building Software Frameworks in AspectJ Idioms for Building Software Frameworks in AspectJ Stefan Hanenberg 1 and Arno Schmidmeier 2 1 Institute for Computer Science University of Essen, 45117 Essen, Germany shanenbe@cs.uni-essen.de 2 AspectSoft,

More information

Chapter. An Introduction to Oracle JDeveloper and Oracle ADF

Chapter. An Introduction to Oracle JDeveloper and Oracle ADF / Blind folio: 9 Chapter 2 An Introduction to Oracle JDeveloper and Oracle ADF ch02.indd 9 7/30/10 2:05:20 PM 10 Quick Start Guide to Oracle Fusion Development A s outlined in the previous chapter, Oracle

More information

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design Chapter 6 Architectural Design Lecture 1 1 Topics covered ² Architectural design decisions ² Architectural views ² Architectural patterns ² Application architectures 2 Software architecture ² The design

More information

Programming ArchiTech

Programming ArchiTech Programming ArchiTech The intention of this document is to give a description of the way ArchiTech has been programmed, in order to make anyone who wants to take a look to the code easier to understand

More information

WindowBuilder Graduation & Release Review

WindowBuilder Graduation & Release Review WindowBuilder Graduation & 1.0.0 Release Review http://www.eclipse.org/windowbuilder Planned Review Date: June 2011 Communication Channel: WindowBuilder Forum Eric Clayberg (Project Lead) 1 History Smalltalk

More information

X-S Framework Leveraging XML on Servlet Technology

X-S Framework Leveraging XML on Servlet Technology X-S Framework Leveraging XML on Servlet Technology Rajesh Kumar R Abstract This paper talks about a XML based web application framework that is based on Java Servlet Technology. This framework leverages

More information

MVC / MVP Mei Nagappan

MVC / MVP Mei Nagappan Material and some slide content from: - Krzysztof Czarnecki - Ian Sommerville - Reid Holmes - Head First Design Patterns MVC / MVP Mei Nagappan [Image from: http://merroun.wordpress.com/2012/03/28/mvvm-mvp-and-mvc-software-patterns-againts-3-layered-architecture/

More information

Reuse at Design Level: Design Patterns

Reuse at Design Level: Design Patterns Reuse at Design Level: Design Patterns CS 617- Lecture 17 Mon. 17 March 2008 3:30-5:00 pm Rushikesh K. Joshi Department of Computer Sc. & Engg. Indian Institute of Technology, Bombay Mumbai - 400 076 Reuse

More information

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate UNIT 4 GRASP GRASP: Designing objects with responsibilities Creator Information expert Low Coupling Controller High Cohesion Designing for visibility - Applying GoF design patterns adapter, singleton,

More information

Creational. Structural

Creational. Structural Fitness for Future of Design Patterns & Architectural Styles Design patterns are difficult to teach, so we conducted a class collaboration where we all researched and reported on a variety of design patterns

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

GUI Programming. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies

GUI Programming. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies A Fresh Graduate s Guide to Software Development Tools and Technologies Chapter 12 GUI Programming CHAPTER AUTHORS Ang Ming You Ching Sieh Yuan Francis Tam Pua Xuan Zhan Software Development Tools and

More information