Inside Smalltalk MVC: Patterns for GUI Programming
|
|
- Austin Kennedy
- 5 years ago
- Views:
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 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 informationModel-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 informationWe 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 informationModel-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 informationAn 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 informationSoftware 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 informationGUI 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 informationProduced 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 informationGraphical 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 informationLecture 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 informationUI 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 informationLectures 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 informationDesign 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 informationSolution. 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 informationBuilding 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 informationWidget 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 informationOrganization 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 informationCSE 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 informationDesign 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 informationAdapter 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 informationLecture 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 informationDesign 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 informationPattern: 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 informationMore 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 informationAUTOMATIC 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 informationTheme 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 informationDESIGN 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 informationWidget. 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 informationDesign 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 informationObject 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 informationAn 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 informationModel-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 informationSoftware 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 informationA 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 informationSoftware 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 informationProduced 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 informationPractical 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 informationCSE 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 informationAll 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 informationApplication 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 informationModel-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 informationThe 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 informationAs 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 informationBCS 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 informationWidgets. 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 informationOODP 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 informationEducational 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 informationCS 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 informationModel-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 informationWeb 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 informationDesign 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 informationimplementation 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 informationIntroduction 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 informationSoftware 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 informationA 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 informationDesign 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 informationsecurity 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 informationDesign 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 information2. 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 informationDesign 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 informationPrototyping 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 informationCSC7203 : 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 informationData 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 informationWeb 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 informationCS 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 informationMobile 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 informationObject-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 informationPatterns 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 informationDesign 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 informationPatterns 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 informationWhat 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 informationHuman 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 informationWeb-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 informationThin 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 informationMV* 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 informationREVIEW 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 informationSwing. 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 informationstanford 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 informationMOBILE 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 informationMicrosoft 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 informationProgramming 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 informationFacade 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 informationTHE 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 informationResearch 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 informationCSCD01 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 informationSri 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 informationLecture 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 informationGraduating 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 informationIdioms 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 informationChapter. 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 informationChapter 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 informationProgramming 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 informationWindowBuilder 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 informationX-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 informationMVC / 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 informationReuse 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 informationbe 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 informationCreational. 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 informationObject-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 informationGUI 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