Lösningsförslag till tentamen

Relevanta dokument
Lösningsförslag till tentamen

Objektorienterad programutveckling, fk

Lösningar till tentamen i EDAF25

CHALMERS TENTAMEN. 2012/2013, lp 1 DAT042. Uno Holmer. Java API (utdelas av skrivningsvakten) Erland Holmström tel besöker tentamen

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

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

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

Lösningar till tentamen i EDAF25

Lösningsförslag till tentamen

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

LYCKA TILL!!! TENTAMEN I Programmeringsteknik F1. Var vänlig och läs detta: CTH TIN 211. DATAVETENSKAP Göteborg ( ) TENTAMEN

Objektorienterad programutveckling, fk

Lösningsförslag till tentamen

Projekt 2 XL. Observer-mönstret

Tentamen LÖSNINGSFÖRSLAG

Lösningsförslag till tentamen

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

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

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

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

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

12 Metaprogrammering i Java

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

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Lösningsförslag till tentamen

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

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

Nej! Nej Nej Nej Nej Nej Nej Nej!

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

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

Lösningsförslag till tentamen

DAT043 Objektorienterad Programmering

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

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

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

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

Mer om grafiska komponenter. Händelsestyrda program

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

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

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

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

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

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

Laboration 15 Grafiskt användargränssnitt

Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem.

Lösningar för tenta 3 DAT043,

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Objektorienterad Programmering (TDDC77)

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

Lektion Händelsehanterare

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

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

DAT043 - Föreläsning 7

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

TENTAMEN OOP

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

Concurrency Saker händer samtidigt. Process En instans av ett program

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 3

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

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

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA550 DAG: TID: 8:30 12:30

OOP Objekt-orienterad programmering

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

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

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

Arv. Objektorienterad och komponentbaserad programmering

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

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

Fördjupad Java. Undantagshantering. Fel

Tentamen i Objektorienterad modellering och diskreta strukturer

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

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

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

OOP Objekt-orienterad programmering

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

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 )

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

Klasshierarkier - repetition

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

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

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

Språkkonventioner och redigering av tal.

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

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

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

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

Polymorfi. Objektorienterad och komponentbaserad programmering

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Transkript:

till tentamen 1 (5) Kurs Objektorienterad programmering Kursbeteckning DAT042 Program D2, TKDAT Läsår 2012/2013, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 (12 p) public class Game implements ActionListener { private JFrame frame; private JButton leftbutton; private JButton centerbutton; private JButton rightbutton; private JLabel gamecounts; private JLabel score; private GameState gamestate; public Game() { gamestate = new GameState(); makeframe(); private void score( int buttonid ) { gamestate.score( buttonid ); score.settext(integer.tostring(gamestate.getscore())); gamecounts.settext(integer.tostring(gamestate.gamesleft())); if ( gamestate.isnewgame() ) { leftbutton.setenabled(true); centerbutton.setenabled(true); rightbutton.setenabled(true); public void actionperformed(actionevent e) { if ( e.getsource() == leftbutton ) { leftbutton.setenabled(false); score( 1 ); else if ( e.getsource() == centerbutton ) { centerbutton.setenabled(false); score( 2 ); else if ( e.getsource() == rightbutton ) { rightbutton.setenabled(false); score( 3 );

private void makeframe() { settitle("game"); setlayout(new GridLayout(2,1)); 2 (5) // Buttons JPanel buttons = new JPanel(); buttons.setlayout(new GridLayout(1,3)); leftbutton = new JButton("Left"); leftbutton.addactionlistener(this); centerbutton = new JButton("Center"); centerbutton.addactionlistener(this); rightbutton = new JButton("Right"); rightbutton.addactionlistener(this); buttons.add(leftbutton); buttons.add(centerbutton); buttons.add(rightbutton); add(buttons); // Text labels JPanel outputfields = new JPanel(); outputfields.setlayout(new GridLayout(1,2)); gamecounts = new JLabel(); gamecounts.sethorizontalalignment(swingconstants.center); score = new JLabel(); score.sethorizontalalignment(swingconstants.center); score.settext(integer.tostring(gamestate.getscore())); gamecounts.settext(integer.tostring(gamestate.gamesleft())); outputfields.add(score); outputfields.add(gamecounts); add(outputfields); pack(); setvisible(true); Uppgift 3 (8 p) public class ObjectCounter { private static HashMap<String,Integer> objectcounts = new HashMap<String,Integer>(); public ObjectCounter() { String thissubclass = getclass().getname(); Integer c = objectcounts.get(thissubclass); if ( c == null ) objectcounts.put(thissubclass,1); else objectcounts.put(thissubclass,c+1); public int getcount() { return objectcounts.get(getclass().getname());

Uppgift 4 (7+8 p) a) 1-3: obj har statisk typ Base och dynamisk typ Sub 3 (5) 1: Sub.f1 f1 definieras om i Sub 2: Base.f2++Sub.f2 f2 definieras om i Sub och den börjar med att anropa Base.f2 explicit 3: Base.f3 f3 definieras ej om i Sub utan ärvs från Base 4-7: obj2 har statisk och dynamisk typ Sub. Subklassens metoder anropas utom i fall 6 där f3 ärvs från basklassen. 4: Sub.f1 5: Base.f2++Sub.f2 6: Base.f3 7: Sub.f4 b) Int obj1 = new Int(); Gränssnitt är abstrakta klasser och sådana får ej instansieras. Base obj2 = new Base(); Sub1 obj3 = new Sub1(); Sub2 obj4 = new Sub2(); Base är abstrakt. Se nedan. Korrekt. Klassen Sub1 kan ej kompileras eftersom den abstrakta metoden h ej är implementerad vare sig i Base eller i Sub1. Notera att h ej måste definieras i Base. Eftersom klassen är abstrakt kan definitionen av h skjutas upp till någon subklass längre ner i hierarkin. Alla mellanliggande klasser blir då abstrakta.

4 (5) Uppgift 5 (8 p) public class BackupDaemon extends Thread { private Serializable object = null; private String backupfile; private int backupinterval; // seconds public BackupDaemon( Serializable object, String backupfile, int backupinterval ) { this.object = object; this.backupfile = backupfile; this.backupinterval = backupinterval; start(); public void run() { while ( true ) { try { Thread.sleep( backupinterval*1000 ); saveobject(); System.out.println("Object written to "+backupfile ); catch (InterruptedException e) { e.printstacktrace(); private void saveobject() { try { ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream(backupFile)); out.writeobject(object); out.close(); catch ( IOException e){ System.out.println("Cannot write to: " + backupfile);

Uppgift 6 (7 p) public class A extends Observable { private int value = 0; public void compute(int x) { value += x; setchanged(); notifyobservers(); 5 (5) public int getvalue() { return value; public class B implements Observer { private A theaobject; public B(A anaobject) { theaobject = anaobject; theaobject.addobserver(this); public void update(observable o, Object arg) { if ( o instanceof A ) { System.out.println(theAObject.getValue());