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

Slides:



Advertisements
Lignende præsentationer
DIEB9.1 Kursusgang 9 Oversigt: • Sidste kursusgang • Opgaver • Beskrivelser af komponenter • Typiske komponenter • Arkitektur for en GUI.
Advertisements

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.
Selve objektet versus referencen til objektet Nedarvning
Design af brugerflader11.1 Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
Introduktion til arkitektur design Arkitektur design handler om at få en forståelse for, hvordan et system skal organiseres og designe den overordnede.
1 Bestanddele i en Windows form-løsning GUI kontroller (eng.: controls) & komponenter (eng.: components) Almindelige egenskaber, metoder & hændelser for.
Forelæsning 3.1 Collections Javas for-each løkke
Lektion 7 Læsestof: Kopier fra Caranno
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
Repetition: Introduktion til OOP med C# og .NET
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
Forelæsning 7.1 – repetition
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
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.
DIEB10.1 Kursusgang 10 Oversigt: Sidste kursusgang Eksempler på løsning af opgaven Arkitektur for brugergrænsefladen og for systemet Dokumentation af designet.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmering1.1 Turtlemaskinen Arkitektur, instruktionssæt og eksempler.
DAIMIIntroducerende Objektorienteret Programmering1 Polymorfi og nedarvning Motivation for arv og “mange former”
 Jens Bennedsen 2001Multimedie programmering10A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
Javas GUI Framework GUI-programmering i Java vha. AWT.
 Jens Bennedsen, 2003Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
DAIMIIntroducerende objektorienteret programmering12A.1 Moduler Packages i Java.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
Grafiske brugergrænseflader Javas AWT framework.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringJava-syntaks.2 Introduktion.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
DAIMIIntroducerende objektorienteret programmering1B.1 Skildpadder Modeller, objekter og opførsel.
Indledende Programmering Uge 6 - Efterår 2006
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.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
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.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11A.1 Grafiske Brugergrænseflader Java’s AWT framework.
 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.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Javas GUI-framework.  Michael E. Caspersen, 2001Javas GUI-frameworkGUI.2 AWT og Swing Java har et omfattende framework til konstruktion af grafiske brugergrænseflader.
Tutankhamons Grav Et modellerings eksempel
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
DAIMIIntroducerende objektorienteret programmering12B.1 Obligatorisk Opgave 2 Et program til planlægning af madplaner.
Objektinteraktion i GUI’er MVC og Observer.  Michael E. Caspersen, 2003Introducerende objektorienteret programmeringmvc.2 AWT framework Listeners og.
Frameworks Hændelsesstyret programmering: ”Don’t call us - we call you”
DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Javas GUI Framework GUI-programmering i Java vha. AWT.
Skildpadder Modeller, objekter og opførsel.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSkildpadder.2 Model Modeller bruges.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Dokumentation.
Præsentationens transcript:

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

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

 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); }

 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(""); } }

 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 }

 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

 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

 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

 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

 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

 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

 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 ( ) 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

 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’...)

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

 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)

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

 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.

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

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

 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

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

 Michael E. Caspersen, 2000Introducerende objektorienteret programmeringFrameworks.22 Andre anvendelser North WestEast South 15-puzzle, swapping white and neighbour North WestEast South Directing a Turtle

 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 }

 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 }

 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....

 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”.