 Jens Bennedsen, 2003Introducerende 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.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
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.
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
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.
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
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.
1 | 2011 ASP.NET Framework i et webform/page perspektiv The Framework to a page.
 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.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmering1.1 Turtlemaskinen Arkitektur, instruktionssæt og eksempler.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge45 GUI.
 Jens Bennedsen, 2003Introducerende objektorienteret programmering Exceptions.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 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.
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.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 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.
 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
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,
Præsentationens transcript:

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

 Jens Bennedsen, 2003Introducerende objektorienteret programmering Model-View-Controller arkitektur 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, 2003Introducerende objektorienteret programmering MVC MVC opdeler en appilkation i tre dele: Modellen der er funktionalitet og data. Views fremviser information til brugeren. Controlers håndterer input. Views og controlers tilsammen udgør grænsefladen. En ”change-propagation mechanism” sikrer konststensen mellem grænsefladen og modellen

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

 Jens Bennedsen, 2003Introducerende objektorienteret programmering MVC in action Tidligere så vi hvordan et tekstfelt kunne opdateres af en knap Tekstfeltet indeholdt værdien... Hmmm... Det burde være et objekt

 Jens Bennedsen, 2003Introducerende objektorienteret programmering Ændring af model Når modellen (=tælleren) ændres skal tekstfeltet opdateres –Afhængigheden skal være så lille som muligt fra modellen til grænsefladen –update! Når modellen ændres kalder den update på alle gr.flade komponenter der lytter import java.util.*; public class Counter extends Observable { public void addOne() { count = count +1; setChanged(); notifyObservers(); }... } import java.util.*; 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, 2003Introducerende objektorienteret programmering Driver Counter c = new Counter(); CounterView cv1 = new CounterView(); cv1.setSize(200,200); cv1.setVisible(true); CounterView cv2 = new CounterView(); cv2.setSize(200,200); cv2.setVisible(true); c.addObserver(cv1); c.addObserver(cv2); c.addOne(); wait1(); c.addOne(); wait1(); c.deleteObserver(cv2); c.addOne(); wait1(); c.addOne();

 Jens Bennedsen, 2003Introducerende 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, 2003Introducerende objektorienteret programmering Controller Tryk på hæv/indsæt skal fanges af en eventhandler, der skal opdatere modellen private class KontoGUIIndsætController implements ActionListener { public KontoGUIIndsætController(Konto model) { this.model = model; KontoGUI.this.indsætButton.addActionListener(this); } 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); } private Konto model; }

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

 Jens Bennedsen, 2003Introducerende objektorienteret programmering Flere views Lad os lave et view der kan alarmere når en konto bliver negativ

 Jens Bennedsen, 2003Introducerende 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, 2003Introducerende objektorienteret programmering Løsning MVC –Model’en indkapsler data og funktionalitet –View fremviser informationer til brugeren, som det modtager fra model’en. Der kan være flere view’s på model’en –Et View har en tilknyttet controler, der håndterer bruger-input hændelser. Den oversætter dem til forespøgsler til model’en eller view’et

 Jens Bennedsen, 2003Introducerende objektorienteret programmering Struktur Class Model Resposibility core delen af applikationen registrerer afhængige views og controlers informerer afhængige kompo- nenter om tilstandsændringer Collaborators View Controler change-propagation er den eneste kobling mellem modellen og dens views/controlers

 Jens Bennedsen, 2003Introducerende 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 Resposibility opretter og initialiserer dens til- knyttede controler fremviser information til brugeren Implementerer en update op. (som kaldes når der notificeres) Modtager data fra model’en Collaborators Model Controler

 Jens Bennedsen, 2003Introducerende objektorienteret programmering Struktur (Controler) Hvis controlerens opførsel afhænger af modellens tilstand kobler den sig på ”change- propagation” (og realiserer update metoden) Class Controler Resposibility modtager brugerinput (hændelser) oversætter hændelser til opdater/ aflæs kald af model’en eller fremvis kald af view’et Implementerer en update op. (hvis det er nødvendigt) Collaborators Model View

 Jens Bennedsen, 2003Introducerende 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() Controler Controler(m : Model, v: View) handleEvent() update() 1111

 Jens Bennedsen, 2003Introducerende objektorienteret programmering Dynamik - hændelse aView : ViewaControler : Controler aModel : Model : bruger handleEvent( ) setData( ) notify( ) update( ) display( ) getData( ) update( ) getData( )

 Jens Bennedsen, 2003Introducerende objektorienteret programmering Dynamik - opstart

 Jens Bennedsen, 2003Introducerende objektorienteret programmering konsekvenser Flere views på den samme model Synkrniserede views udskiftbare views og controlers –adskildelsen af view og controler betyder af de kan varieres individuelt Framework mulighed

 Jens Bennedsen, 2003Introducerende objektorienteret programmering  konsekvenser Forøget kompleksitet mulighed for mange (unødige) updates tæt kobling mellem view og controler tæt kobling fra view/controler til model ineffektiv dataaccess svært at flytte view/controler til anden platform