Tentamen i Objektorienterad programmering



Relevanta dokument
Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering E

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

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

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

Tentamen i Objektorienterad programmering E

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Lab5 för prgmedcl04 Grafik

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

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

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

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

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

Laboration 4: Game of Life

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

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

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

PROGRAMMERINGSTEKNIK TIN212

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

TENTAMEN I DATAVETENSKAP

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

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

Mer om grafiska komponenter. Händelsestyrda program

Lösningsförslag tentamen FYTA11 Java

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

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

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

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

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

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Tentamen i Grundläggande programmering STS, åk 1 fredag

Händelsestyrda program

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

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

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

Lektion Händelsehanterare

TENTAMEN. Kurs: Applikationsutveckling i Java 5DV135. Ansvarig lärare: Johan Eliasson. HT12 Datum: Tid: kl

Tentamen i Grundläggande programmering STS, åk 1 fredag

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

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

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

Laboration 3 GUI-programmering

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

DAT043 - Föreläsning 7

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

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

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Laboration 24 Databasen MySQL och java

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

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

DAT043 Objektorienterad Programmering

Tentamen i Grundläggande programmering STS, åk

Tentamen i Objektorienterad modellering och design

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Laboration 13, Arrayer och objekt

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

Tentamen FYTA11 Javaprogrammering

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

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen, EDA501 Programmering M L TM W K V

Tentamen i Objektorienterad modellering och design Helsingborg

Grundläggande programmering med C# 7,5 högskolepoäng

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

Tentamen OOP

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

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

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

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Objektorienterad programmering. Telefonboken igen, en bättre version. En jämförelse. Föreläsning 4

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

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

Transkript:

CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Fredagen 13 januari 2012, 14.00 18.00. Jourhavande lärare: Björn von Sydow, tel 0722/391401. Inga hjälpmedel. Lösningar till uppgifterna behöver ej kommenteras. Ej heller behöver nödvändiga importer anges. Triviala syntaxfel tolereras utan poängavdrag vid rättningen. Skriv läsligt! Skrivningen kan ge maximalt 40 p; 20 p ger med säkerhet godkänt. 27 p ger betyget 4 och 33 p betyget 5. Uppgifterna i denna tentamen har alla anknytning till ett tänkt platsbokningssystem av den typ som ofta används på biografer och teatrar. Observera dock att uppgifterna kan lösas oberoende av varandra. Ett sådant program presenterar ett användargränssnitt med vidstående principiella utseende: Huvuddelen av gränssnittet visar en biografsalong där de olika platserna kan ha tre färger: gröna platser är lediga, gula platser är bokade men ännu ej sålda och röda platser är sålda. Dessutom kan en eller flera platser vara markerade, här genom en svart inramning. Markering görs av användaren genom att klicka med musen i en ledig plats samt dra musen med knappen nedtryckt längs en rad lediga platser och slutligen släppa musen. Endast intilliggande lediga platser på samma rad kan markeras. Under detta finns till vänster fyra knappar: Avsluta-knappen, som avslutar programmet efter att dessförinnan ha sparat bokningsläget. Boka-knappen, som öppnar en dialogruta där användaren anger ett lösenord (normalt köparens telefonnummer); systemet lagrar lösenordet tillsammans med platsinformationen, noterar att dessa platser är bokade, ändrar färg på de markerade platserna till gul och tar bort markeringen. Sälj-knappen, som säljer de markerade platserna, dvs noterar att platserna är sålda, ändrar deras färg till rött samt tar bort markeringen. Dessutom skrivs biljetter ut. Hämta-knappen, som används då bokade biljetter ska avhämtas. En dialogruta öppnas och användaren ger ett lösenord, som fås från kunden. De bokade platser som lagrats tillsammans med lösenordet markeras (och kan sedan säljas med Sälj-knappen). Till höger nedtill anges föreställning, dvs film och tidpunkt. Bägge dessa är valbara, dvs tryck med musen på en av dessa öppnar en meny med möjlighet att välja andra filmer resp andra tider. Ovanstående beskrivning tjänar som bakgrund till de följande uppgifterna. 1

1. En plats i salongen representeras med ett objekt av klassen public class Place { private int row, seat; public Place(int row, int seat) { public int getrow() { public int getseat() { (a) Komplettera klassdefinitionen genom att fylla i koden på de tre ställen som markerats med. (3 p) (b) I en klass i programmet återfinns deklarationen Place p1, p2; Man vill i den kod som följer jämföra om p1 och p2 refererar till samma plats i salongen, dvs samma rad och säte. Förklara varför det inte är lämpligt att göra detta med kod av typen if (p1==p2) ; (2 p) (c) Utvidga klassen i (a) genom att på lämpligt sätt definiera metoden equals så att man i stället kan testa på likhet med if (p1.equals(p2)) ; (3 p) 2. En markering representeras av ett objekt av klassen public class Selection { private Place firstplace; private int nrplaces; public Selection(Place firstplace, int nrplaces) { public Place getfirstplace() { public int getnrplaces() { Tillståndsvariabeln firstplace är den vänstraste platsen i markeringen; nrplaces är antalet markerade platser. Denna klass kompletteras på analogt sätt som i uppgift 1, men vi hoppar över detta här. 2

(a) Komplettera högerledet i satsen Selection sel = ; så att sel kommer att referera till den markering som syns i bilden på första sidan. Inga objekt finns skapade sedan tidigare. (2 p) (b) I programmet finns en klass TicketPrinter, som bland annat erbjuder metoderna public static void printticket(showdata d, Place p); public static void printtickets(showdata d, Selection sel); vilka används för att skriva ut biljetter på en speciell skrivare. Typen ShowData innehåller information om föreställningen, dvs film, datum och tid, som också ska finnas på biljetterna. Vi bryr oss inte om exakt hur den är definierad. Din uppgift är att definiera den andra av dessa metoder (dvs printtickets), som skriver ut flera biljetter, genom att använda dig av den första (dvs printticket). Du ska inte definiera den första metoden eller klassen i övrigt. (4 p) 3. För att representera om en viss plats är ledig, bokad eller såld används en uppräkningstyp public enum State {FREE, BOOKED, SOLD Bokningsläget för en viss föreställning representeras av ett objekt ur modellklassen public class Bookings { private State[][] places; private ShowData data; public Bookings(ShowData data, int nrrows, int nrseats) { public void book(selection sel) { public void sell(selection sel) { public int getnrrows() { public int getnrseats() { public State getstate(int row, int seat) { De två sista parametrarna till konstrueraren anger antalet rader och antalet platser per rad. (a) Ge den kod som behövs i konstrueraren så att bokningsläget initieras med att alla platser är lediga. (4 p) (b) Ge också koden för de tre sista metoderna, med namn som börjar på get. (3 p) (c) Ge koden för sell, som ska ändra tillståndet för de angivna platserna. Man behöver inte kontrollera att platserna är lediga innan anropet. (3 p) 3

4. Bokade platser lagras tillsammans med ett lösenord i en bokningslista, som är en instans av en klass som implementerar interfacet public interface Reservations { public void reserve(string password, Selection res); public Selection getreservation(string password); Man lagrar en bokning (en Selection) tillsammans med ett lösenord, t ex kundens telefonnummer med metoden reserve. Senare kan man söka upp bokningen med metoden getreservation; om ingen bokning finns med detta lösenord returneras null. Definiera en klass som implementerar detta interface. Du får ignorera problemet att det redan kan finnas en bokning med det givna lösenordet när reserve anropas. Inga krav finns på att metoderna ska vara effektiva. (8 p) 5. Det grafiska uppritandet av bokningsläget sker med hjälp av klassen public class BookingsView extends JPanel { private static final int SIZE = 20; private Bookings model; private Selection sel; public BookingsView(Bookings model) { this.model = model; sel = null; setpreferredsize(new Dimension(model.getSeats()*SIZE, model.getrows()*size)); addmouselistener(new MyListener()); private class MyListener extends MouseAdapter { public void mouseclicked(mouseevent e) { public void paintcomponent(graphics g) { // kod för att rita röda, gröna och gula platser samt markeringen. public Selection getselection() {return sel; public void setselection(selection sel) {this.sel = sel; I en första version av programmet implementeras klassen så att en markering bara kan bestå av en enda plats; när man klickar med musen på en ledig plats sätts tillståndsvariabeln sel 4

till denna enda plats. Komplettera klassen ovan med den kod som behövs för att åstadkomma detta. Du ska bara åstadkomma detta; du behöver inte implementera uppritandet av markeringen i paintcomponents. Däremot måste du kontrollera att platsen är ledig; annars sätts sel till null. (4 p) 6. Knapparna återfinns i en klass GUI med följande struktur public class GUI extends JPanel { private Bookings model; private ShowData data; private BookingsView bv; private JButton sellbutton; public class GUI() { sellbutton = new JButton("Sälj"); sellbutton.addactionlistener(new SellListener()); private class SellListener implements ActionListener { public void actionperformed(actionevent e) { Implementera metoden actionperformed i SellListener. (4 p) 5