Projekt 2 XL. Observer-mönstret

Relevanta dokument
HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET)

Nej! Nej Nej Nej Nej Nej Nej Nej!

Projekt 2 XL Schema designmöten

Förra föreläsningen. Alternativ kurslitteratur. Dagens agenda Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

HT1 2013, FÖRELÄSNING 6

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Förra föreläsningen. Dagens agenda. Vecka Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

HT1 2015, FÖRELÄSNING

Projekt 2 XL Klassen Gui

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

4.7 Observatörsmönstret

Java-concept och Swing. Swing low, sweet chariot

Lösningsförslag till tentamen

Lösningar till tentamen i EDAF25

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

Föreläsning 3: Händelsestyrda program och användargränssnitt

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

Laboration 15 Grafiskt användargränssnitt

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2

Lösningar till tentamen i EDAF25

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Mer om grafiska komponenter. Händelsestyrda program

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java

Föreläsning 13: Swing (GUI), händelser, timer

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

Händelsestyrda program

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

Tentamen i Objektorienterad modellering och diskreta strukturer

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

MVC-mönstret. model-view-control i Swing

OOP Objekt-orienterad programmering

Objektorienterad programutveckling, fk

Malmö högskola 2007/2008 Teknik och samhälle

OOP Objekt-orienterad programmering

Modellsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

Arv och Grafiska Användargränssnitt

Frames, menyer och GUI-program

Grafiska komponenter.

Objektorienterad Programmering DAT043. Föreläsning 6 30/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Laboration 4: Game of Life

För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen.

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? Exempel på några av komponenterna. LayoutManagers.

Labbinstruktioner för Java/Swing

Information. Computer

Properties. Användbara metoder som kan anropas i propertychanged:

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad modellering och design Helsingborg

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Omentamen FYTA11 Javaprogrammering

Förra föreläsningen. Dagens agenda. Command Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Tentamen FYTA11 Javaprogrammering

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. Exempel på några av komponenterna. LayoutManagers.

Fönsterhantering, grafik

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

Föreläsning 14: Grafik & mera händelsehantering

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http.

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Rita Egna Bilder, Timer

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Programstyrd / händelsestyrd

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Tentamen i Objektorienterad modellering och diskreta strukturer

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert AWT. Paket för hantering av grafik

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

HT1 2013, FÖRELÄSNING 5

Lektion Händelsehanterare

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Tentamen LÖSNINGSFÖRSLAG

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

Laboration 24 Databasen MySQL och java

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Föreläsningsbilder EDAF10/EDA061 Ht 2015 HT1 2015, FÖRELÄSNING 3

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Tentamen FYTA11 Javaprogrammering

HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN)

Transkript:

Projekt 2 XL Objektorienterad modellering och diskreta strukturer Inför nästa projekt Lennart Andersson Reviderad 2011 10 24 2011 OMD 2011 F15-1 Schema designmöten OMD 2011 F15-2 Observer-mönstret 2 och 9 nov 10-12 2 och 9 nov 13-15 3 och 10 nov 8-10 3 och 10 nov 10-12 4 och 11 nov 13-15 Anmälan senast den 24 oktober. Inlämning senast 24 timmar före mötet. public interface Observer { public void update(observable observable, Object object); public abstract class Observable { public void addobserver(observer observer) protected void notifyobservers() OMD 2011 F15-3 OMD 2011 F15-4

Listener-mönstret Gui-modellering public interface ActionListener { public void actionperfomed(actionevent actionevent); public class AbstractButton extends JComponent { public void addactionlistener( ActionListener actionlistener) protected void fireactionperformed( ActionEvent actionevent) Den oerfarne gör allt i en stor klass. Den agile gör lite i många klasser med beaktande av principen om enkelt ansvar. Paket OMD 2011 F15-5 OMD 2011 F15-6 Paketet expr xl avvecklingspaket expr aritmetiska uttryck modifieras ej gui användargränssnittet modifieras menu menyer modifieras Expr Num Add... AddressExpr ExprParser OMD 2011 F15-7 OMD 2011 F15-8

Paketet gui Varför inte javax.swing.jtable? Gui med main GuiList CurrentView StatusArea Editor RowNumberPanel SheetView SlotView JTable tillhandahåller mycket som skulle göra projektet lättare, men döljer mycket av det som projektet vill lära ut javadoc omfattar 68+ sidor OMD 2011 F15-9 Paketet menu menyerna OMD 2011 F15-10 Paketet xl Address Environment Adjustment NumberAdjustment XLException XLBufferedReader XLPrintStream En del av dessa klasser bör flyttas. OMD 2011 F15-11 OMD 2011 F15-12

XL Gui BorderLayout JFrame ger ett eget fönster på skärmen. import javax.swing.jframe; import java.awt.borderlayout; public class Gui extends JFrame { public Gui(int count) { super("untitled-" + count); setlayout(new BorderLayout()); // omissions pack(); setvisible(true); OMD 2011 F15-13 Structure OMD 2011 F15-14 Structure JMenuBar BorderLayout BorderLayout North Center West GridLayout(1,11) Center Gridlayout(8,11) South OMD 2011 F15-15 OMD 2011 F15-16

statusarea Editor JTextField JTextField används för textinmatning. public class CurrentView extends JLabel { public CurrentView() { super("a1"); setbackground(color.white); setopaque(true); public class Editor extends JTextField implements ActionListener { public Editor() { setbackground(color.white); addactionlistener(this); public void actionperformed(actionevent event) { // activated by Return key // contents returned by gettext() OMD 2011 F15-17 WindowMenu OMD 2011 F15-18 JMenuItem class WindowMenuItem extends JMenuItem implements ActionListener { private Gui gui; public WindowMenuItem(Gui gui) { super(gui.gettitle()); this.gui = gui; addactionlistener(this); public void actionperformed(actionevent event) { gui.tofront(); OMD 2011 F15-19 OMD 2011 F15-20

JMenu public class WindowMenu extends JMenu implements Observer { private GuiList guilist; public WindowMenu(GuiList guilist) { super("window"); this.guilist = guilist; guilist.addobserver(this); update(null, null); public void update(observable observable, Object object) { removeall(); for (Gui gui : guilist) { add(new WindowMenuItem(gui)); OMD 2011 F15-21 MouseListener Några swing-komponenter kan ha en ActionListener, t ex: JButton, JMenuItem, JTextField. Alla komponenter kan ha en MouseListener. Den läggs till med public void addmouselistener(mouselistener listener); public interface MouseListener { void mouseclicked(mouseevent event); void mouseentered(mouseevent event); void mouseexited(mouseevent event); void mousepressed(mouseevent event); void mousereleased(mouseevent event); GuiList public class GuiList extends Observable implements Iterable<Gui> { private List<Gui> list = new ArrayList<Gui>(); public void add(gui gui) { list.add(gui); setchanged(); notifyobservers(); public Iterator<Gui> iterator() { return list.iterator(); //omissions OMD 2011 F15-22 MouseAdapter I regel vill man bara reagera på en av händelserna. Då är det bekvämt med public abstract class MouseAdapter { public void mouseclicked(mouseevent event){ public void mouseentered(mouseevent event){ public void mouseexited(mouseevent event){ public void mousepressed(mouseevent event){ public void mousereleased(mouseevent event){ OMD 2011 F15-23 OMD 2011 F15-24

MouseListenerLabel public class MouseListenerLabel extends JLabel { private class ClickListener extends MouseAdapter { public void mouseclicked(mouseevent event) { setbackground(color.yellow); public MouseListenerLabel() { setbackground(color.white); addmouselistener(new ClickListener()); OMD 2011 F15-25