Frameworks Hændelsesstyret programmering: ”Don’t call us - we 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

Object-Orienteret Programmering og Design. 2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a.
GP 4, 19/ Grundlæggende programmering Efterår 2001 Forelæsning 4 onsdag 19/ kl. 9:15 – 12:00.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
Pc-kørekort Mere om software. Programmering Definition: at skrive et program ved hjælp af en tekst–editor på en måde, som computeren kan forstå Instruktionerne.
Claus Brabrand, ITU, Denmark Mar 17, 2009Projekt: “Visualisering” Claus Brabrand [ ] ( “FÅP”: First-year Project Course, ITU, Denmark )
Fundamentale datastrukturer
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
1 Grafalgoritmer I. 2 Plan Grafer - definition - anvendelser - terminologi - eksempler på grafproblemer Grafgennemgang - dybde-først-gennemgang - bredde-først-gennemgang.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
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.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
DAIMIIntroducerende objektorienteret programmering3C.1 Design af klasser Specifikation og implementation.
DAIMIIntroducerende objektorienteret programmering4C.1 Systemdesign Design med flere klasser, En kaffeautomat.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
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)
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 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.
Fejlfinding Kunsten at finde og rette fejl. DAIMIIntroducerende Objektorienteret Programmering10C.2 Taxonomi  Ingen skriver programmer uden fejl!  Fejl.
 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.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Frameworks Hændelsesstyret programmering: ”Don’t call us – we’ll call you”
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
DAIMIIntroducerende Objektorienteret Programmering8A.1 Polymorfi og nedarvning Motivation for arv og “mange former”
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2002Objektorienteret systemudvikling1.1 Objektorienteret design Persistens - introduktion.
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.
Tutankhamons Grav Et modellerings eksempel
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering10C.1 Brugergrænseflader Swing.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
DAIMIIntroducerende objektorienteret programmering15A.1 Eksamen…
 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.
DAIMIIntroducerende objektorienteret programmering2A.1 Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
Skildpadder Modeller, objekter og opførsel.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSkildpadder.2 Model Modeller bruges.
Anvendelse.
Abstraktioner.
Præsentationens transcript:

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

DAIMIIntroducerende Objektorienteret Programmering10A.2 Lagdelt design  Ofte bygger vi en applikation op lagvis af gradvist mere komplicerede stykker: Windows 95 Java Turtle Figurtegning

DAIMIIntroducerende Objektorienteret Programmering10A.3 Lagdelt design  Hvert lag kan opfattes som brugere af lagene nedenunder.  Det øverste lag har kontrollen/styringen af applikationen. Windows 95 Java Turtle Figurtegning

DAIMIIntroducerende Objektorienteret Programmering10A.4 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  Eksempler: showboat  Denne løkke kalder vi kontrolløkken

DAIMIIntroducerende Objektorienteret Programmering10A.5 Hændelsesstyret programmering  I hændelsesstyret programmering har man samme basale mekanisme, men der er ikke os, som definerer kontrolløkken, men derimod et lag, som kan opfattes som liggende “over” vores programkode: Windows 95 Java Vores applikation Kontrollag

DAIMIIntroducerende Objektorienteret Programmering10A.6 Kontrollaget  Kontrollaget definerer kontrolløkken, kommunikerer med brugeren og kalder vores applikationslag, når brugerens handling er fortolket: read:Lad brugeren udføre en handling dispatch:Fortolk og kald applikationslaget loop:Og start forfra igen  “Don’t call us - we will call you”

DAIMIIntroducerende Objektorienteret Programmering10A.7 GUI’s  Hændelsesstyret programmering er de-facto standarden for, hvordan grafiske brugergrænseflader programmeres: Kontrollag: Loop indtil brugeren klikker på en knap. Kald applikations- lagets “start” eller “stop” metode Applikationslag: Tilbyder metoderne “start” og “stop”

DAIMIIntroducerende Objektorienteret Programmering10A.8 Bindingen mellem lagene  Kontrollaget og applikationslaget skal bindes sammen på en generelt måde - det er jo ikke os selv, som skriver kontrollaget, så hvordan kan det eksempelvis kalde “start” og “stop”?  Nogle forslag - har vi nogle mekanismer, der kan specialiserer et kontrollag til vores formål?

DAIMIIntroducerende Objektorienteret Programmering10A.9 Specialisering af kontrollag  Kontrollaget er realiseret ved hjælp af abstrakte klasser, og vi kan specialisere disse til vores specielle formål. abstract class controller { public abstract void ButtonPressed(); } class mycontroller extends controller { public void ButtonPressed() { Session.start(); } Kontrollag Applikationslag

DAIMIIntroducerende Objektorienteret Programmering10A.10 Eksempel: Multimedie  Det Egyptiske museum i Cairo har bedt os om at lave 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, samt få en beskrivelse af, hvad man ser på billedet.

DAIMIIntroducerende Objektorienteret Programmering10A.11 Tutankhamons grav Forrum Annex Grav- kammer Skatkam. Korridor Trappe Ens ‘virtuelle’ jeg; kan flyttes ved angivelse af en kompasretning, e.g. “west” flytter “jeg’et” til forrummet. N (passer ikke, men hva’...)

DAIMIIntroducerende Objektorienteret Programmering10A.12 Brugergrænseflade

DAIMIIntroducerende Objektorienteret Programmering10A.13 To opgaver!  En af de (dyrtkøbte) erfaringer i software udvikling er vigtigheden af at skille ens kode af i to dele: Den som tager sig af brugergrænse- fladen, og den som tager sig af selve problemstillingen (domænet). Altså: Opgave 1: Et systemdesign som kan beskrive et antal forbundne rum samt et ’virtuelt’ jeg. Opgave 2: Et systemdesign for en brugergrænseflade som kan vise billeder, tekst og som har et redskab til navigation.  Hvad er opgave 3 ?

DAIMIIntroducerende Objektorienteret Programmering10A.14 Opgave 1: Domænet  Til at løse opgave 1 bruger vi Arnow&Weiss’ udmærkede model til system-design §5: Problembeskrivelse Find primære klasser/objekter Definere opførsel og samspil (testscenarie) Realisere enkelte klasser.  Nogle bud?

DAIMIIntroducerende Objektorienteret Programmering10A.15 Opgave 2: GUI  Til at lave grænsefladen vil vi bruge et  Framework: En mængde af samarbejdende klasser som tilsammen danner et genanvendeligt design for en specifik type af softwaresystemer. ioop.media indeholder Presenter frameworket som er et brugergrænseflade design som stiller billedvisning, tekstfelt og navigationsknapper til rådighed.

DAIMIIntroducerende Objektorienteret Programmering10A.16 UML klassediagram Kammer Virtuelle jeg Billede Beskrivelse Bevæger sig i/ befinder sig i Er forbundet med GravPræsentation 1 1 flytter præsentere indtryk ImagePresenter Framework Applikationslag

DAIMIIntroducerende Objektorienteret Programmering10A.17 Framework  “ImagePresenter” er et framework, som skal specialiseres til en given præsentation: ImagePresenterGravPræsentation java.applet.Applet northButtonPressed() westButtonPressed() … showImage( filename ) northButtonPressed() { virtualMe.move( NORTH ); } Hændelsesløkken ligger i Applet, ImagePresenter håndterer kompasknapperne og kalder de abstrakte metoder “northButtonPressed” osv.

DAIMIIntroducerende Objektorienteret Programmering10A.18 Frameworks  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 given lufthavn Reservationssystem, specialiseret til givet område Banksystem, specialiseret til given bank Etc...

DAIMIIntroducerende Objektorienteret Programmering10A.19 Genbrug  Fordelen er at funktionalitet og modeller som er ens kan samles i frameworket og dermed genbruges i forskellige sammenhænge.

DAIMIIntroducerende Objektorienteret Programmering10A.20 Eksempel: Turtle demo ImagePresenter java.applet.Applet showImage( filename ) Presenter createCenterComp() northButtonPressed() westButtonPressed() … TurtlePresenter createCenterComponent() { return turtle’s sandkasse } (Se TurtlePresentation.java i ugesedlens kawa projektet)

DAIMIIntroducerende Objektorienteret Programmering10A.21 Implementation, domæne... Kammer Billede Beskrivelse Er forbundet med class room { Vector exit; public room(... ) {... exit = new Vector(); for ( int i = 0; i < 4; i++ ) { exit.addElement( null ); } public room leadsTo( int direction ) { return (room) exit.elementAt(direction); } Mapping: 0 = nord, 1 = øst, 2 = syd, 3 = vest

DAIMIIntroducerende Objektorienteret Programmering10A.22 Implementation... Forrum Annex Grav- kammer Forrum Annex Grav- kammer Skatkam. Korridor Trappe Korridor

DAIMIIntroducerende Objektorienteret Programmering10A.23 Implementation  Det er svært at huske sådanne talværdier: Hvad var 2? Syd eller øst?  Bedre at udtrykke dem ved hjælp af konstanter: class direction { final static int NORTH = 0; final static int EAST = 1; final static int SOUTH = 2; final static int WEST = 3; } I klassen TutankhamonPresentation: public void northButtonPressed() { guest.move(direction.NORTH); }

DAIMIIntroducerende Objektorienteret Programmering10A.24 Implementation...  Oprettelse af kamre og layout: room antechamber = new room("You are a dark room known as the antechamber. "+ "There are a lot of precious antiques here, but...”, "tutantechamber.jpg" ); antechamber.connectTo( staircase, direction.SOUTH ); antechamber.connectTo( annex, direction.NORTH ); antechamber.connectTo( tomb, direction.EAST ); void connectTo( room otherRoom, int atExit ) { // Safe programming: if ( otherRoom == null || atExit direction.WEST ) { System.out.println( "ERROR: No room given, or wrong direction in method connectTo" ); } else { exit.setElementAt( otherRoom, atExit ); }