Model View. View Controller. Model View Controller. Observer. GrIP-vt2010-GUI-programmering Cristian Bogdan

Relevanta dokument
Fönstersystem. Objektorientering och händelsebaserad programmering. Applikation. Interaktionstoolkit. Händelsehanterare och grafiktoolkit

Frameworks. GUI till tusen. GUI till tusen. Sampling architectures. Inmatningstyper

GUI-programmering. Gustav Taxén Martin Berglund DH2640 Grafik och Interaktionsprogrammering VT 2008

Objektorientering i allmänhet

Objektorientering och händelsebaserad programmering. Gustav Taxén

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016

Observer Pa*ern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2018

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

Design. Vad lärde jag mig förra lekfonen? Hur bidrog jag Fll lärandet? Kravhantering sammanfa0ning 13/04/14

Lösningar till tentamen i EDAF25

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

GUI /ll tusen. GUI /ll tusen. Java/Swing. Top Level Containers. General Purpose Containers. GrIP-vt2010-GUI-programmering Cristian Bogdan

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

GUI-programmering. Gustav Taxén

Föreläsning 8. Designmönster

Designmönster/Design patterns

Isolda Purchase - EDI

Recitation 4. 2-D arrays. Exceptions

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Lösningar till tentamen i EDAF25

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Mönster. Ulf Cederling Växjö University Slide 1


SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Tentamen i Objektorienterad modellering och diskreta strukturer

" «Observable» DataGenerator" betyder att klassen DataGenerator ärver från den abstrakta klassen Observable.

12.6 Heat equation, Wave equation

Isometries of the plane

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Properties. Användbara metoder som kan anropas i propertychanged:

Writing with context. Att skriva med sammanhang

Preschool Kindergarten

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2016

Materialplanering och styrning på grundnivå. 7,5 högskolepoäng

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Objektorientering (OO)

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Module 6: Integrals and applications

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Tentamen i Objektorienterad modellering och design

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Tentamen Programmering fortsättningskurs DIT950

LULEÅ TEKNISKA UNIVERSITET

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Förskola i Bromma- Examensarbete. Henrik Westling. Supervisor. Examiner

SOA. Länkar +ll sidor om SOA h3p:// h3p://dsv.su.se/soa/

Design för användbarhet Designexempel, hur tänkte man vid designen?

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

Support Manual HoistLocatel Electronic Locks

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

Efterhand fick vi ett system som vi tyckte var väl anpassat. Vi renskrev kladden (nedan) och började programmera menyerna.

Observationshotellet. The observation hotel. Fanny Vallo !!! Ersätt bilden med en egen bild. Emma Karlsson Martin Hedenström Ljung.

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Styrteknik: Binära tal, talsystem och koder D3:1

När? Varför? För vem? Resultat? (Artefakter?)

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Health café. Self help groups. Learning café. Focus on support to people with chronic diseases and their families

Webbregistrering pa kurs och termin

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg

MVC-mönstret. model-view-control i Swing

The Municipality of Ystad

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2018

CHANGE WITH THE BRAIN IN MIND. Frukostseminarium 11 oktober 2018

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Designmönster för sociala användningssituationer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen i Objektorienterad modellering och diskreta strukturer

Konstruktion av klasser med klasser

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

Syns du, finns du? Examensarbete 15 hp kandidatnivå Medie- och kommunikationsvetenskap

Kvalitetsarbete I Landstinget i Kalmar län. 24 oktober 2007 Eva Arvidsson

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

Projekt 2 XL. Observer-mönstret

Design Patterns Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Laboration 3 GUI-programmering

Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design Alex Gerdes, 2018

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

A metadata registry for Japanese construction field

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

RUP är en omfattande process, ett processramverk. RUP bör införas stegvis. RUP måste anpassas. till organisationen till projektet

Urban Runoff in Denser Environments. Tom Richman, ASLA, AICP

Nya möjligheter med M3 Technology. Björn Svensson, Björn Torold

Webbtillgänglighet. Tillgänglighet på webben. Hörselskadades behov. Synskadades behov. Kognitivt funktionshindrades behov. Rörelsehindrades behov

Webbreg öppen: 26/ /

Transkript:

Model View Model: data and its changing rules ( applica8on logic ) A data model can have a number of views and can a@ach them dynamically Views are not necessarily graphical The model is unaware of the views details, it just no8fies them of changes, and allows the views to read the data View Controller A controller defines a pa@ern of interac8on between a view and its model In the graphical case, the controller listens to events (or gets other forms of no8fica8on) from the view components and changes the model according to the event s seman8cs The view needs not know details about the controllers a@ached to it Alterna8ve controllers of the same view define interac8on strategies Model View Controller When the controller changes the model, the model no8fies all its views to update Instead of changing the model, the controller can ignore or compensate for user interac8on that is not consistent with the model assump8ons (possibly warn user) in an editor, you can t move past the end of the text S E P A R A T I O N data descrip8on: MODEL data illustra8on: VIEWs interac8on: CONTROLLERs Observer För a@ implementera MVC används owa designmönstret Observer Tillåter a@ e@ objekt meddelas om det gjorts en förändring i e@ annat objekt, utan a@ objekten görs starkt knutna 8ll varandra Event listeners (delega8on) are an alterna8ve to Observer Observer Observer

package java.util; Observer i Java public interface Observer { void update(observable o, Object arg); public class Observable { private Observer[] arr; public void addobserver(observer o) { arr.addelement(o); public void notify(object arg) { for (int i = 0; i < arr.size; i++) { arr[i].update(this, arg); Det här är inte hela sanningen, men principen är densamma i den riktiga javaimplementationen! Issues with MVC There are different interpreta8ons of the MVC architecture Strictly speaking, in Swing the controller is the event dispatcher OWen a view will have only one controller, hard or not useful to separate But model and view separa8on is owen easily possible and profitable MVC is implemented owen in mul8ple layers Video prototype example, we iden8fy the model and views Project Implement the produc8on planner Model: tasks, task planning dates/lines, task rules: Tasks can t collide on a line / date interval When a task is planned on a certain date, others need may need to be moved to earliest possible dates Views: task planning chart, task table Project: model Basic Model: tasks, task planning dates/lines, task rules: Tasks can t collide on a line / date interval Move tasks automa8cally to earliest possible dates Views: task planning chart, controller: drag and drop task table, controllers: edi8ng, crea8on Project: hierarchical model Higher level model: Current Task Does not affect the core applica8on logic But helps the two views coordinate Even higher level model: the table model Cell data: from the Basic Model Cell selec8on: from Current Task model See Swing JTable Swing Separable Model Architecture Varje komponent hanterar view/control. Själva utritningen är delegerad 8ll e@ s.k. UI object (för a@ man ska kunna ändra look andfeel, t.ex.). Varje komponent har en modell kopplad 8ll sig. Hierarchical MVC Aka: Presenta8on abstrac8on control (PAC)

Separable Model Architecture De flesta komponenters modell har enbart a@ göra med själva gränssni@et (t.ex. om en checkbu@on är nedtryckt eller ej). Vissa komponenters innehåll kan dock bara definieras av applika8onen (t.ex. innehållet i en lista eller tabell). Några faller mi@ emellan (t.ex. sliders). Man ersä@er en modell genom a@ subklassa defaultmodellen och sedan anropa setmodel() på komponenten. Your own components All Swing components are lightweight (drawn in Java), and you can make your own. h@p://java.sun.com/products/jfc/tsc/ar8cles/pain8ng Old approach: subclassing Canvas Implement the paint (Graphics g) method you get a rectangular shape covering the others new JComponent(){ public void paint(graphics g){ ; achieves the same, and more paint() is called automa8cally by Swing when the container becomes visible The Graphics object contains foreground and background color, as well as a clipping rectangle, in case not the whole component needs be drawn. Your own components for non rectangular, or transparent components, you need to extend Component, Container or JComponent directly implement the needed processxxx and addxxxlistener contains() for non rectangular shapes Implement isopaque() or call setopaque() to tell whether your component is transparent as usual, paint() to draw your own component shape If the component is opaque, paint() will need to cover all the area for which contains() is true Fönstersystem Applikation Interaktionstoolkit Händelsehanterare och grafiktoolkit Operativsystem Hårdvara Erfarenheten visar a@ det kan vara knepigt a@ hantera toolkits. Om allt är "8llåtet" är det lä@ a@ applika8oner blir inkonsekventa eller ser "fula" ut. E@ framework är en uppsä@ning klasser (abstrakta och vanliga) som "påtvingar" e@ visst sä@ a@ arbeta. Javas framework för fönsterhantering heter Swing. Swing vs IBM/Eclipse SWT MicrosoWs motsvarighet heter MFC (som nu är på väg a@ ersä@as av.net). MFC vs Borland OWL Koda med klassbibliotek Min kod Kod i klassbibliotek Koda med framework Framework Min kod, brukar kallas för callbacks. Inversion of control (see Spring framework) Hollywood principle (we ll call you) Template method design pattern

Ett vanligt sätt att arbeta med frameworks är att man subklassar någon form av basklass med grundfunktionalitet. Sedan överlagrar man de metoder som man intresserar sig för. It is often suitable that the subclass is anonymous import java.awt.*; import javax.swing.*; public class MyFrame extends JFrame { public void paint(graphics g) { g.drawstring("hello", 10, 50); public static void main(string[] args) { MyFrame f = new MyFrame(); Koda med klassbibliotek Min kod Kod i klassbibliotek Koda med framework Framework Min kod, brukar kallas för callbacks. What are the most important types of Swing callbacks? - event listener methods like windowclosing() - paint() method Other callbacks in Java? yes, finalize(), Observer s notify() Fundament: we implement the callbacks, but never call them. We wait for the framework to call them. GUI byggare OWa integrerade med en IDE, Integrated Development Environment GUI:er består owast av widgets, samt kod som skickar meddelanden mellan dessa GUI byggare: "rita" gränssni@et, kod som skapar widgets och deras layout genereras automa8skt! Sedan lägger man 8ll händelselyssnare etc. själv, owa via någon form av property inspector. Några GUI byggare: Visual Studio.NET Forms Designer, www.microsow.com Borland C++ Builder, www.borland.com QT Designer, www.trolltech.com NetBeans, www.netbeans.org Olika plug ins för Eclipse, www.eclipse.org Men det finns många, många fler! NetBeans 6.0 UML Både en mjukvarudesignprocess och en serie diagramtyper. Utvecklades av företaget Ra8onal i mi@en av 90 talet. Är idag standardiserat och används överallt i industrin. Ger dock mycket begränsad info om hur användargränssni@et ska se ut!

UML: Use case diagrams UML: Klassdiagram En abstrak8on av en eller flera processer, d.v.s. e@ scenario. Visar aktörer och use cases, d.v.s. vad aktörerna gör. One or more scenarios may be generated from a use case UML: Interak8onsdiagram Visar hur meddelanden skickas mellan klassinstanser i systemet. Ger en översikt över processer i systemet. UML: Tillståndsdiagram Visar hur systemet går mellan olika 8llstånd. UML: Ak8vitetsdiagram Liknar 8llståndsdiagrammet men fokuserar på ak8vitet istället. En ak8vitet behöver inte vara detsamma som e@ 8llstånd. Kan motsvara funk8oner som användaren ak8verar. Används för a@ visa rela8onen mellan hårdoch mjukvara i systemet. Kan också användas för a@ visa hur systemet är distribuerat över olika maskiner, t.ex. i e@ nätverk. UML: Fysikdiagram

Designmönster (design pa@erns) Utgår från arkitekten Christopher Alexanders arbete på 70 talet Alexander försökte se mönster i hur man löst återkommande problem inom arkitektur och skrev en bok där han beskriver lösningarna Alexander, C. (1977). A PaHern Language. Oxford University Press Idén togs upp på allvar inom systemdesign i mi@en av 90 talet Den mest kända boken är Gamma et al. (1995). Design PaHerns: Elements of Reusable Object Oriented SoNware. Addison Wesley Design pa@erns Namn och generell typ Intent (vad den gör) Also Known As Mo8va8on Applicability Structure (e@ UML diagram) Design pa@erns Par8cipants (beskr. av klasser som ingår) Collabora8ons (hur klasserna arbetar 8llsammans) Consequences (av a@ använda mönstret) Implementa8on Sample code Known uses Related pa@erns