Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Frameworks Hændelsesstyret programmering: ”Don’t call us – we’ll call you”

Lignende præsentationer


Præsentationer af emnet: "Frameworks Hændelsesstyret programmering: ”Don’t call us – we’ll call you”"— Præsentationens transcript:

1 Frameworks Hændelsesstyret programmering: ”Don’t call us – we’ll call you”

2  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.2 GUI-programmering med Swing Tryk: dublerer teksten i tekstfeltet Slet: sletter teksten i tekstfeltet

3  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.3 Realisering af Applet public class SimpleEventHandler extends Applet { private TextField display; private Button button1, button2; public void init() { display = new TextField("", 20); add(new Panel().add(display)); button1 = new Button("Tryk"); button2 = new Button("Slet"); Panel p = new Panel(); p.add(button1); p.add(button2); add(p); ActionListener myListener = new ButtonActionListener(display); button1.addActionListener(myListener); button2.addActionListener(myListener); }

4  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.4 Realisering af B-A-Listener class ButtonActionListener implements ActionListener { TextField t; public ButtonActionListener( TextField f ) { t = f; } public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); if ( s.equals("Tryk") ) { t.setText(t.getText() + t.getText()); } else if ( s.equals("Slet") ) { t.setText(""); } }

5  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.5 Generalisering til framework public class TrykSletFramework extends Applet {... protected trykPressed() {} protected sletPressed() {} class ButtonActionListener implements ActionListener { TextField t; public ButtonActionListener( TextField f ) { t = f; } public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); if ( s.equals("Tryk") ) { trykPressed(); } // hookMethod else if ( s.equals("Slet") ) { sletPressed(); } // hookMethod }

6  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.6 Brug af Framework public class MyTrykSletFramework extends TrykSletFramework { // hookMethod protected trykPressed() { // MyTrykPressedAction } // hookMethod protected sletPressed() { // MySletPressedAction } TSF MyTSF Framework Applikationslag

7  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.7 Lagdelt design (1) Ofte benyttes en lagdelt arkitektur hvor det øverste lag er applikationslaget Operativsystem Java Collections m.m. Reservationssystem Applikationslag

8  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.8 Lagdelt design (2) Hvert lag kan opfattes som bruger af lagene under Det øverste lag har kontrollen over applikationen Operativsystem Java Collections m.m. Reservationssystem Applikationslag/ kontrollag

9  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.9 read-dispatch-print-loop Mange (tekstbaserede) programmer implementerer den samme fundamentale struktur: read-dispatch-print-loop –read: Lad brugeren indtaste en kommando –dispatch: Fortolk og udfør kommandoen –print: Vis resultatet af kommandoen –loop: Og start forfra igen Den overordnede kontrol er en fortolkerløkke

10  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.10 Framework Ved brug af et (application) framework er det ikke den applikationsspecifikke kode som definerer kontrol-løkken; det tager frameworket som ligger over applikationslaget sig af: Operativsystem Java Vores applikation Kontrollag

11  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.11 Bindingen mellem lagene Kontrollaget og applikationslaget skal bindes sammen på en generel måde – det er jo netop ikke os selv som skriver kontrollaget Sammenbindingen sker typisk ved hjælp af såkaldte hook methods som er virtuelle metoder i kontrollaget der viderebindes i applikationslaget

12  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.12 Eks: Multimediepræsentation Det Egyptiske museum i Cairo har bestilt en Web- baseret multimediepræsentation af Howard Carters udgravning af Tutankhamons grav (1922- 1928) Man skal –kunne bevæge sig mellem de forskellige kamre i graven –se billeder af kamrene –få en beskrivelse af hvad man ser på billedet

13  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.13 Tutankhamons grav Forrum Annex Grav- kammer Skat- kammer Korridor Trappe Ens ‘virtuelle’ jeg; kan flyttes ved angivelse af en kompasretning: “west” flytter “jeg’et” til forrummet N (passer ikke, men hva’...)

14  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.14 Brugergrænseflade

15  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.15 Separation of concerns En af de (dyrtkøbte) erfaringer i softwareudvikling er vigtigheden af at separere ens kode i (mindst) to dele: –en som tager sig af selve problemstillingen (domænet) –en som tager sig af brugergrænsefladen Domænet –et systemdesign som modellerer et antal forbundne rum samt et ’virtuelt’ jeg Brugergrænsefladen –et systemdesign for en brugergrænseflade som kan vise billeder med tilhørende tekst, og som har et redskab til navigation (lyd og levende billeder kunne let tilføjes)

16  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.16 Delopgave 1: Domænemodel

17  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.17 Delopgave 2: GUI Til at lave grænsefladen vil vi bruge et framework. Presenter-frameworket er et generelt brugergrænsefladedesign der stiller billedvisning, tekstfelt og navigationsknapper til rådighed. Framework: En mængde af samarbejdende klasser som tilsammen danner et genanvendeligt design for en specifik type af softwaresystemer.

18  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.18 Frameworks North WestEast South Picture Text

19  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.19 UML klassediagram Room Visitor Billede Beskrivelse 1 1 1..4 TutPresenter 1 1 ImagePresenter Framework Applikationslag

20  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.20 Specialisering af kontrollag Kontrollaget er realiseret ved hjælp af abstrakte klasser eller interfaces som specialiseres efter behov abstract class ImagePresenter {... public abstract void NorthButtonPressed(); } class TutPresenter extends ImagePresenter { public void NorthButtonPressed() { theVisitor.move(NORTH); }... } Kontrollag Applikationslag

21  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.21 Overordnet 3-lagsarkitektur Presenter- Framework ModelControllers (the glue)

22  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.22 Andre anvendelser North WestEast South 15-puzzle, swapping white and neighbour 14 7615 5 8 101242 113 911 3 North WestEast South Directing a Turtle

23  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.23 Framework-genbrug Tutankamons Grav Presenter Framework Turtle DemoVirtuelt Museum class mycontroller extends controller { public void northButtonPressed() { Flyt gæst mod nord i graven } class mycontroller extends controller { public void northButtonPressed() { t.turnTo(90); t.move(25); } class mycontroller extends controller { public void northButtonPressed() { Vis maleriet ovenfor }

24  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.24 Flere lag af frameworks ImagePresenter java.applet.Applet showImage( filename ) Presenter createCenterComp() northButtonPressed() westButtonPressed() … TurtlePresenter (Se TurtlePresentation projektet ) public Component createCenterComponent () { return turtle’s sandkasse }

25  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.25 Karakteristik af frameworks (1) Et framework behøver ikke at være et kontrollag. Man bruger betegnelsen om et mængde af (abstrakte) klasser, som tilsammen danner en ramme/et skelet for en mængde af applikationer. En konkret applikation skabes ved at specialisere enkelte klasser til en given sammenhæng –Lufthavnssystemer, specialiseret til en given lufthavn –Reservationssystem, specialiseret til givet forretningsområde –Banksystem, specialiseret til en given bank –Etc....

26  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.26 Karakteristik af frameworks (2) Udvidbarhed –Et framework består typisk af en samling abstrakte klasser og interfaces –Frameworkets parametre, ”hot spots”, er oftest realiseret som ”hook methods” Invertering af kontrol –Normalt er det applikationen der er master i systemet, dvs. den der er udfarende og sætter ting i gang; biblioteksklasser fungerer i denne sammenhæng blot som slaver der ”gør hvad der bliver sagt”. –I et application framework ligger kontrollen i frameworket og applikationen er blot tjeneren der skal udfylde frameworkets ”hot spots”.


Download ppt "Frameworks Hændelsesstyret programmering: ”Don’t call us – we’ll call you”"

Lignende præsentationer


Annoncer fra Google