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

Relevanta dokument
DAT043 - Föreläsning 7

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

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

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

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

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

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

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

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

PROGRAMMERINGSTEKNIK TIN212

Mer om grafiska komponenter. Händelsestyrda program

Lösningsförslag till tentamen

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

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

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

Target beskriver gränssnittet såsom Client vill ha det. I klassen Adapter sker konverteringen av anropen, till gränsnittet som klassen

Lösningar för tenta 3 DAT043,

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

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Lösningar till tentamen i EDAF25

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016

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

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

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

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

Tentamen LÖSNINGSFÖRSLAG

Lektion Händelsehanterare

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

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

OOP Objekt-orienterad programmering

Tentamen i Objektorienterad programmering

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

Lösningar till tentamen i EDAF25

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

OOP Objekt-orienterad programmering

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

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

Laboration 24 Databasen MySQL och java

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

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

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

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

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

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

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

Lösningsförslag till tentamen

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

Tentamen LÖSNINGSFÖRSLAG

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

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Laboration 3 GUI-programmering

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

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

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

Lösningsförslag till tentamen

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

Lösningar för tenta 2 DAT043,

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

Klasshierarkier - repetition

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Tentamen i Objektorienterad programmering

Laboration 15 Grafiskt användargränssnitt

Tentamen i Objektorienterad programmering E

Lösningsförslag till tentamen

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

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Fönstersystem. Objektorientering och händelsebaserad programmering. Applikation. Interaktionstoolkit. Händelsehanterare och grafiktoolkit

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Konstruktion av klasser med klasser

Föreläsning 12. Länkade listor

kl

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Lösningsförslag övning 2.

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Laboration 4: Game of Life

Projekt 2 XL. Observer-mönstret

Del A (obligatorisk för alla)

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

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

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

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Java, klasser, objekt (Skansholm: Kapitel 2)

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

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

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

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

Transkript:

Properties Ett objekt kan ha vissa egenskaper (som beskrivs med instansvariabler). En enkel egenskap X avläses och sätts med metoderna getx() och setx(värde). En indexerad egenskap (från t.ex. en array) avläses och sätts med metoderna getx(i) och setx(i,värde) När en enkel egenskap ändras kan objektet generera en händelse av typen PropertyChangedEvent. När en indexerad egenskap ändras kan objektet generera en händelse av typen IndexedPropertyChangedEvent, en subklass till PropertyChangedEvent. Exempel på detta är standarsklasserna i Swing. Händelser kan fångas upp av lyssnare av typen PropertyChangeListener som har en metod med namnet propertychanged. Användbara metoder som kan anropas i propertychanged: getpropertyname getnewvalue getoldvalue getindex (för händelser av typen IndexedPropertyChangedEvent) 1

JavaBeans Ett standardmönster: Har parameterlös konstruktor Implementerar Serializable Har egenskaper Har metoder setx, getx, isx Kan ha indexerade metoder setx, getx, isx En JavaBean kan registrera lyssnare för händelser av typen PropertyChangeListener. Kan t.ex. implementera följande gränssnitt: import java.beans.*; import java.io.*; public interface MyBeanModel extends Serializable { void addpropertychangelistener(propertychangelistener l); void removepropertychangelistener(propertychangelistener l); 2

import java.beans.*; public class MyBeanClass implements MyBeanModel { private final PropertyChangeSupport p=new PropertyChangeSupport(this); public void addpropertychangelistener(propertychangelistener l) { p.addpropertychangelistener(l); public void removepropertychangelistener(propertychangelistener l) { p.removepropertychangelistener(l); private double value; private double[] arr; public MyBeanClass () {... // konstruktor public double getvalue() { return value; public void setvalue (double newvalue) { double oldvalue = value; value = newvalue; p.firepropertychange("value", oldvalue, newvalue); public double getarr(int index) { return arr[index]; public void setarr(int index, double newelem) { double oldelem = arr[index]; arr[index] = newelem; p.fireindexedpropertychange("arr", index, oldelem, newelem); 3

Observer pattern Ett vanligt s.k. designmönster Observable Anmäler sig som Meddelar Avläser intresserad Observer Kallas Model-View för grafiska komponenter. Modellen kan göras som en JavaBean. 4

Vyn, ett exempel: import java.beans.*; import javax.swing.*; public class MyView extends JPanel implements PropertyChangeListener { private MyBeanModel model; public MyView(MyBeanModel m) { model = m; model.addpropertychangelistener(this); // utplacering av grafiska komponenter... public void propertychange(propertychangeevent e) { double v = model.getvalue(); // ändra grafiska komponenter... 5

Model-View-Controller Controllern tar emot signaler utifrån och uppdaterar modellen: Model Uppdaterar Controller Anmäler sig som lyssnare Meddelar View Avläser Använder Ser 6

import javax.swing.*; import java.awt.event.*; public class MyController extends JPanel implements ActionListener { private MyBeanModel model; private JTextField f = new JTextField(5); public MyController (MyBeanModel m) { model = m; add(f); f.addactionlistener(this); public void actionperformed(actionevent e) { if (model!= null) model.setvalue(integer.parseint(f.gettext())); 7

Problem i praktiken: Komponenter i vyn används ofta även för inmatning (användaren klickar t.ex.) Svårt att separera Controllern från Vyn I Swing används s.k. UI-delegates som fungerar både som vy och controller. 8