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

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

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

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

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

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

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

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

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

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

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

Tentamen FYTA11 Javaprogrammering

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Rita Egna Bilder, Timer

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

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

Föreläsning 12: Exempel och problemlösning

Föreläsning 1, vecka 8: Att förbereda sig för tentan

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. 1 Lösningsförslag. Uppgift 1

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

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

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

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

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

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Java-concept och Swing. Swing low, sweet chariot

Mer om grafiska komponenter. Händelsestyrda program

Lösningsförslag till tentamen

TENTAMEN OOP

Föreläsning 8: Exempel och problemlösning

Exempel på användning av arv: Geometriska figurer

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Lektion Händelsehanterare

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

Tentamen i Objektorienterad programmering E

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

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

TENTAMEN OOP

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

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

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

Laboration 4: Game of Life

ID1004 Laboration 3, 5-6 November 2012

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

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

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

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

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

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 )

TDDD78 Viktiga begrepp, del 2

Lösningsförslag till tentamen FYTA11 Javaprogrammering

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Lösningsförslag till tentamen

27. GUI Programming. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

DAT043 Objektorienterad Programmering

Tentamen i Objektorienterad programmering

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

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

2D1339 Programkonstruktion för F1, ht 2004

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

Omentamen FYTA11 Javaprogrammering

Lösningsförslag till tentamen

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

SMD091 Lektion 9. Definition. Inkapsling. Lite repetition. Grafik. Gränssnitt Definition och Implementation. Sammansättning... Implementation.

Tentamen Programmering fortsättningskurs DIT950

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

DAT043 - föreläsning 8

Att skriva till och läsa från terminalfönstret

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

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

OOP Objekt-orienterad programmering

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

public class BoundedCounter {

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter

Lösningar för tenta 3 DAT043,

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Grafiska komponenter.

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

Föreläsning 2, vecka 8: Repetition

Tentamen OOP

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

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

Lab5 för prgmedcl04 Grafik

Tentamen i Objektorienterad modellering och design

Lösningsförslag till tentamen

Transkript:

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel: på sista sidan av dokument finns ett utdrag ur Javas API Exempel svar finns med i blå färg. Uppgift 4: [12 poäng totalt] referensvärden, private/public, rekursion (i datatypen) Klassen IntList som finns nedan implementerar en lista av heltal (int). public class IntList { private int value; private IntList next; public IntList(int value, IntList next) { this.value = value; this.next = next; public static void printlist(intlist l) { System.out.print("[ "); while (l!= null) { System.out.print(l.value + " "); l = l.next; System.out.println("]"); public static void main(string[] args) { IntList l; l = new IntList(5,null); l = new IntList(4,l); l = new IntList(3,l); IntList.printList(l); a) Vad skrivs ut när programmet körs? [3 poäng] [ 3 4 5 ] b) Skriv en metod arraytolist så att följande program, int[] a = {3,4,5,6,7; IntList.printList(arrayToList(a)); skriver ut strängen [ 3 4 5 6 7 ]. [4 poäng] public static IntList arraytolist(int[] a) { IntList l = null; for (int i=a.length- 1; 0<=i; i- - ) { l = new IntList(a[i],l); return l; Magnus Myréen, 2014-12- 28

c) För denna delfråga bör du anta att private har bytts till public i koden för klassen IntList. Visa hur man kan skriva kod utanför IntList klassen som får IntList.printList att gå i en oändlig loop. [5 poäng] Exempel: utskrift från printlist kan se såhär ut när printlist fastnar i en oändlig loop. [ 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Tips: Tänk, hur ser listan ut för att få tillstånd sådan utskrift? Varför var det viktiga att vi bytte private till public i koden för klassen IntList ovan? IntList i = new IntList(2,null); IntList j = new IntList(1,i); i.next = j; IntList.printList(j); Uppgift 5: [10 poäng totalt] händelsehantering, timer a) Beskriv kort den inbyggda Timer klassen (dvs. javax.swing.timer). Beskriv vad en lyssnare är och hur Timer klassen använder sig av lyssnare. [3 poäng] Timer klassen skapar objekt som kan anropa en lyssnare med givet nummer millisekunder mellan varje anrop till lyssnaren. En lyssnare är ett objekt som implementerar ett lyssnar- gränssnitt. Timer klassens använder sig av ActionListener gränssnittet. b) Skriv kod för en ny Timer- lik klass. Den nya klassen bör heta TickTimer. Den skall ha en konstruktör med signaturen: public TickTimer(int delay, ActionListener al, int ticks) En instans av denna klass bör anropa sin lyssnare exakt ticks gånger med delay millisekunder mellan anropen. [7 poäng] Tips: Det är kanske bäst att inte ärva den inbyggda Timer klassen. Istället kan man skapa en Timer inuti TickTimer konstruktören. import javax.swing.*; import java.awt.event.*; public class TickTimer { public TickTimer(int delay, ActionListener al, int ticks) { int max_ticks = ticks; Timer t = new Timer(delay,null); ActionListener l = new ActionListener() { int tick_count = 0; public void actionperformed(actionevent e) { tick_count++; if (tick_count <= max_ticks) { al.actionperformed(e); else { t.stop(); ; t.addactionlistener(l); t.start();

Uppgift 6: [8 poäng totalt] grafik, arv, swing Skriv ett program som ritar två cirklar i mitten av ett fönster. Den större cirkeln bör vara svart. Den ska placeras i mitten av fönstret och bör vara så stor som möjligt utan att gå utanför fönstrets kanter. Den mindre cirkeln bör vara vit och ritas i mitten av den större cirkeln. Den mindre cirkeln skall ha en radius som är hälften av den stora cirkelns radius. Cirklarna skall ritas i en JPanel som sitter i ett JFrame fönster, Exempel på hur det bör se ut finns nedan. Obs. Det skall vara möjligt att ändra på storleken av fönstret och då skall cirklarna hållas i mitten av fönstret. import java.awt.*; import javax.swing.*; public class DrawCircles extends JPanel { private void drawoval(graphics g, int radius) { g.filloval(getwidth()/2- radius, getheight()/2- radius, radius*2, radius*2); public void paintcomponent(graphics g) { super.paintcomponent(g); int w = this.getwidth(); int h = this.getheight(); int radius; if (getwidth() < h) { radius = w/2; else { radius = h/2; g.setcolor(color.black); drawoval(g,radius); g.setcolor(color.white); drawoval(g,radius / 2);

public static void main(string[] args) { JFrame f = new JFrame(); f.setdefaultcloseoperation(jframe.exit_on_close); f.setsize(400,400); f.add(new DrawCircles()); f.setvisible(true);

Utdrag ur Javas API. Obs. Man behöver inte använda alla dessa klasser. Man får också använda annat från Javas API. Interface ActionListener void actionperformed(actionevent e) Invoked when an action occurs. Class ActionEvent extends AWTEvent extends EventObject extends Object ActionEvent(Object source, int id, String command) Constructs an ActionEvent object. Class Color extends Object static Color BLACK The color black. static Color WHITE The color white. Class Component extends Object int getheight() Returns the current height of this component. int getwidth() Returns the current width of this component. Class Container extends Component extends Object Component add(component comp) Appends the specified component to the end of this container. Class FlowLayout extends Object, implements LayoutManager FlowLayout() Constructs a new FlowLayout with a centered alignment and a default 5- unit horizontal and vertical gap. Class Graphics extends Object void drawoval(int x, int y, int width, int height) Draws the outline of the specified oval. abstract void filloval(int x, int y, int width, int height) Fills the specified oval. abstract void setcolor(color c) Sets this graphics context's current color to the specified color. Class JComponent extends Container extends Component extends Object protected void paintcomponent(graphics g) Calls the UI delegate's paint method, if the UI delegate is non- null. Class JFrame extends Frame extends Window extends Container extends Component extends Object Container getcontentpane() Returns the contentpane object for this frame. Class JPanel extends JComponent extends Container extends Component extends Object JPanel() Creates a new JPanel with a double buffer and a flow layout. JPanel(LayoutManager layout) Create a new buffered JPanel with the specified layout manager Interface LayoutManager Class Object boolean equals(object obj) Indicates whether some other object is "equal to" this one. String tostring() Returns a string representation of the object. Class Timer extends Object Timer(int delay, ActionListener listener) Creates a Timer and initializes both the initial delay and between- event delay to delay milliseconds. void setactioncommand(string command) Sets the string that will be delivered as the action command in ActionEvents fired by this timer. void setrepeats(boolean flag) If flag is false, instructs the Timer to send only one action event to its listeners. void start() Starts the Timer, causing it to start sending action events to its listeners. void stop() Stops the Timer, causing it to stop sending action events to its listeners. Class Window extends Container extends Component extends Object void setvisible(boolean b) Shows or hides this Window depending on the value of parameter b.