 Jens Bennedsen, 2003, revideret af EE- 2004 Introducerende objektorienteret programmering MVC Et mønster for grænseflader.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

DIEB9.1 Kursusgang 9 Oversigt: • Sidste kursusgang • Opgaver • Beskrivelser af komponenter • Typiske komponenter • Arkitektur for en GUI.
07 – Kort om OO Introduktion.
Programmeringsteknologi: Lektion 1
GP 4, 19/ Grundlæggende programmering Efterår 2001 Forelæsning 4 onsdag 19/ kl. 9:15 – 12:00.
Design af brugerflader11.1 Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing.
Design af brugerflader12.1 Kursusgang 12 Oversigt: Sidste kursusgang Layout-manager Event-håndtering.
ASP.NET Extensions Jakob Tikjøb Andersen
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
ASP.NET Cache, State DataGrid og Diagnostics. Agenda – ASP.NET Cache, State og Cookies ( 1 del ) –Cache –Static member –Application State –Session State.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 1 Simon Otto Nielsen Diplomingeniør i informations og kommunikationsteknologi.
12.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Modelkomponent Oversigt, principper og teknikker Kapitel 12.
Objektorienteret programmering
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Oversigt, principper og teknikker
1 JavaServer Faces Copyright © Lund & Bendsen A/S JSF Lifecycle.
Stig Irming-Pedersen ASP.NET MVC Partner Copenhagen Software.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Objekter og klasser Rasmus D. Lehrmann DM
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
Repetition: Introduktion til OOP med C# og .NET
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
GP 4, 27/ Grundlæggende programmering Forår 2002 Forelæsning 4 onsdag 27/ kl. 9:15 – 12:00.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
DIEB7.1 Kursusgang 7 Oversigt: Sidste kursusgang Opgaver Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
DIEB10.1 Kursusgang 10 Oversigt: Sidste kursusgang Eksempler på løsning af opgaven Arkitektur for brugergrænsefladen og for systemet Dokumentation af designet.
Systemudvikling – Fra idé til kode.  Jens Bennedsen 2001Multimedie programmering9.2 Begrebsmodellering Problemspecifikke begreber Problem/vision vedrørende.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
 Jens Bennedsen 2002Objektorienteret systemudvikling Persistens.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge45 GUI.
 Jens Bennedsen, 2003Introducerende objektorienteret programmering Exceptions.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
 Jens Bennedsen, 2003Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Indledende Programmering Uge 6 - Efterår 2006
 Jens Bennedsen 2002Objektorienteret systemudvikling Arkitektur.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
 Jens Bennedsen 2001Multimedie programmering MVC Et mønster for grænseflader.
 Jens Bennedsen 2001Multimedie programmering13.1 Lingo Objectorienteret Lingo.
Frameworks Hændelsesstyret programmering: ”Don’t call us – we’ll call you”
 Jens Bennedsen 2001Multimedie programmering11.1 Lingo Basis.
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2002Objektorienteret systemudvikling1.1 Objektorienteret design Persistens - introduktion.
DIEB8.1 Kursusgang 8 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
Et Audio/ Video Framework Et framework for en audio/video applikation baseret på lokale og kilder tilgængelige på 1394 via AV/C protokollen.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
 Jens Bennedsen 2001Multimedie programmering10C.1 Brugergrænseflader Swing.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Objektinteraktion i GUI’er MVC og Observer.  Michael E. Caspersen, 2003Introducerende objektorienteret programmeringmvc.2 AWT framework Listeners og.
Hvad er en inkrementel og iterativ process?
DOMS IT-stormøde 16 november 2009 Kåre Fiedler Christiansen.
Database Some walk through lv/ Figures & some text from: © Pearson Education Limited 1995,
Simpel test-client (javascript) Session og Application data
Præsentationens transcript:

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC Et mønster for grænseflader

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Model-View-Controller The Swing architecture is rooted in the model-view- controller (MVC) design that dates back to SmallTalk. MVC architecture calls for a visual application to be broken up into three separate parts: A model that represents the data for the application. The view that is the visual representation of that data. A controller that takes user input on the view and translates that to changes in the model. (se

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC MVC opdeler en applikation i tre dele: Modellen - funktionalitet og data Views - fremviser information til brugeren Controllers håndterer input. Views og controllers tilsammen udgør grænsefladen. En ”change-propagation mechanism” sikrer konsistens mellem grænsefladen og modellen

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC - et eksempel SF pct: 9,8 V pct: 24,5... Parlament

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC in action Eksempel: knap opdaterer tekstfelt Tekstfeltet indeholder værdien... Hmmm … burde være et objekt

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Ændring af model Når modellen (=værdien) ændres skal tekstfeltet opdateres –Afhængigheden skal være så lille som muligt fra modellen til grænsefladen –Når modellen ændres kaldes 'update' på alle gr.flade komponenter der lytter public class Counter extends Observable { public void addOne() { count = count +1; setChanged(); notifyObservers(); }... } public class CounterView extends JFrame implements Observer { public void update (Observable model, Object args) { Counter m = (Counter)model; String t = Integer.toString(m.getCount()); tal.setText(t); }... }

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Hvad med bruger input? Controllerens ansvar er at oversætte brugerinput til handlinger i modellen Hvad kan brugerinput være? –Skrivning i tekstfelt –Tryk på knap –... Nyt eksempel: En konto Observable Konto -saldo:double +Konto() +getSaldo():double -notifyObs():void JFrame Observer KontoGUI model:Konto saldoLabel:JLabel saldoText:JTextField +KontoGUI(model:Konto) +update(o:Observable,arg:Object):void +indsæt(b:double) +hæv(b:double)

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Controller Tryk på hæv/indsæt skal fanges af en eventhandler, der skal opdatere modellen private class IndsætController implements ActionListener { public void actionPerformed(ActionEvent e) { String indsættesString = KontoGUI.this.indsætText.getText(); try { double indsættes = Double.parseDouble(indsættesString); model.indsæt(indsættes); } catch (NumberFormatException ex) { KontoGUI.this.update(model,null); }

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Eksempel Lad os se på koden:

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Problem Fleksibel brugergrænseflade –den samme information præsenteres i forskellige vinduer –manipulationer af data skal afspejles med det samme –ændringer i grænsefladen skal være lette og mulige på runtime –Koden for grænsefladen skal være afkoblet fra resten af applikationen

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Løsning MVC –Model indkapsler data og funktionalitet –View fremviser informationer til brugeren, som det modtager fra modellen. Der kan være flere views på model’en –Et view har en tilknyttet controller, der håndterer hændelser. Den oversætter dem til forespørgsler til model eller view

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering change-propagation er den eneste kobling mellem modellen og dens views/controllers Struktur (model) Class Model Responsibility er kernen af applikationen registrerer afhængige views og controllers informerer afhængige kompo- nenter om tilstandsændringer Collaborators View Controller

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Struktur (View) View’s tilbyder ofte funktionalitet for controleren til at manipulere displayet (brugbart når der ikke sker ændringer i model’en) Class View Responsibility opretter og initialiserer dens til- knyttede controller fremviser information til brugeren Implementerer update (som kaldes når der notificeres) Modtager data fra modellen Collaborators Model Controller

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Struktur (Controller) Hvis controlerens opførsel afhænger af modellens tilstand kobler den sig på ”change- propagation” (og realiserer update metoden) Class Controller Responsibility modtager brugerinput (hændelser) oversætter hændelser til opdater/ aflæs kald af modellen eller fremvis kald af views Implementerer update (om nødvendigt) Collaborators Model View

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Struktur Model coreData attach(o : Observer) : void detach(o : Observer) : void notify() getData() : coreData Observer update() 0..* * View View(m : Model) makeControler() display() update() Controller Controller(m : Model, v: View) handleEvent() update() 1111

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering Dynamik - hændelse aView : ViewaController : Controller aModel : Model : bruger handleEvent( ) setData( ) notify( ) update( ) display( ) getData( ) update( ) getData( )

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering ' Dynamik - opstart

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering konsekvenser Flere views på den samme model Synkroniserede views Udskiftelige views og controllers –adskillelsen af view og controller betyder at de kan varieres individuelt Framework mulighed

 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering  konsekvenser Forøget kompleksitet mulighed for mange (unødige) updates tæt kobling mellem view og controller tæt kobling fra view/controller til model ineffektiv adgang til data svært at portere view/controller