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

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

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

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

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

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

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

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

DAI2 (TIDAL) + I2 (TKIEK)

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

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

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

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

Föreläsning 10. ADT:er och datastrukturer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

PROGRAMMERINGSTEKNIK TIN212

Objektsamlingar i Java

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

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

TENTAMEN: Objektorienterad programutveckling, fk. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

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

Föreläsning 5-6 Innehåll

Tentamen i Objektorienterad modellering och design Helsingborg

TENTAMEN: Objektorienterad programutveckling, fk. Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad.

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

Övningsuppgift. Repeterbara citat. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

DAT043 Objektorienterad Programmering

Tentamen i Objektorienterad modellering och design

ID1004 Laboration 4, November 2012

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

DAT043 - föreläsning 8

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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

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

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

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

Tentamen. DD2385 Programutvecklingsteknik vt Torsdagen den 27 maj 2010 kl Hjälpmedel: penna, suddgummi, linjal

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Tentamen i Objektorienterad modellering och diskreta strukturer

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

Objektorienterad programmering D2

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

CHALMERS TENTAMEN. 2013/2014, lp 2 DAT050. Uno Holmer. Java API (bifogas tesen) Uno Holmer tel besöker tentamen ca kl samt ca 11.

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

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

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

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

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

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

TKIEK-2, TKTFY-3, TKTEM-3

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

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

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

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

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

Lösningar till tentamen i EDAF25

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

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

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

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

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

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

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540) Ansvarig: Jan Skansholm, tel eller

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

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

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

Malmö högskola 2008/2009 CTS

Tentamen, EDAA10 Programmering i Java

Transkript:

Tentamen 1 (9) TENTAMEN: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem). Skriv rent dina svar. Oläsliga svar r ä t t a s e j! Programmen skall skrivas i Java 5, eller senare version, vara indenterade, renskrivna och i övrigt vara utformade enligt de principer som lärts ut i kursen. Onödigt komplicerade lösningar ger poängavdrag. Programkod som finns i tentamenstesen behöver ej upprepas. Givna deklarationer, parameterlistor, etc. får ej ändras, såvida inte annat sägs i uppgiften. Läs igenom tentamenstesen och förbered ev. frågor. I en uppgift som består av flera delar får du använda dig av funktioner klasser etc. från tidigare deluppgifter, även om du inte löst dessa. Lycka till!

2 (9) Uppgift 1 a) Skriv Java-kod som definierar klasserr och skapar objekt motsvararandee UML-diagrammet (3 p) b) I ettt enkelt hierarkiskt filsystem finns filtyperna textfil och katalog. k En katalog kan innehålla noll eller flera filer. Ett känt designmönster som behandlats i kursen beskriver sådana strukturer. I en objektorienterad modell för filsystemet kan man m modellera filtyperna med klasserna Fil, Textfil och Katalog. Rita ett klassdiagram somm beskriver designmönstret tillämpat på dessa klasser. Diagrammet skall ha mönstrets namn som rubrik. (3 p) Uppgift 2 En CounterIterator fungerar precis som en vanlig iterator med m skillnaden att den dessutom kan talaa om hur många element som returnerats av next. Exempel: Collection<Integer> coll = neww LinkedList<>(); for ( int i = 3;i >= 0;i-- ) coll.add(i); CounterIterator<Integer> it = new CounterIterator<>(coll.iterator()); System.out.println("count=" + it.getcount()); while ( it.hasnext() ) { int x = it.next(); System.out.println("x=" + x + ",count=" + it.getcoui unt()); } Utskriften blir: count= =0 x=3,count=1 x=2,count=2 x=1,count=3 x=0,count=4 Konstruera klassen CounterIterator enligt designmönstret decorator. d Om argumentet till konstruktorn är null skall undantaget IllegalArgumentException kastas. Gränssnittet Iterator finns i API. Om du tycker att det blir enklare får du definiera CounterIterator utan typparameter, dvs anta att iteratorn alltid hanterar en samling av heltal. (8 p)

3 (9) Uppgift 3 I spelet på håret får man poäng genom att besvara frågor. För varje fråga a visas tips på avtagande poängnivåer ner tilll 1 poäng. När man besvarat en fråga visas nästa fråga. Svarade man rättt adderas dessutom tipsets poäng till totalpoängen. Förbrukar man alla tips visas nästa fråga. Ex. I denna variant finns tre olika frågor med fem tipsnivåer vardera. Ett scenario åt höger, och ett nedåt. javaa (rätt) Nästaa tips Nästa tips javaa (rätt) mölndal(fel) makril (rätt) Nästa tips Det finns en påbörjad implementering av designen nedan, och uppgiften u är r att komplettera koden med MVC-struktur.

4 (9) Färdiga klasser Klasserna Question, GameLogic och Player är färdiga och beskrivs b kortfattat nedan. Endast de konstruktorer och metoder som behövss för att lösa uppgiften är medtagna. class Question (färdig) Lagrar en fråga, rätt svar samtt ett antal tips. Klassen används internt av GameLogic. class GameLogic extends Observable (färdig) Lagrar frågorna i ett antal Question-objekt. Klassen håller reda på vilken fråga som är aktuell, vilket tips som är aktuellt, samt tipsets poängnivå. Kontruktor GameLogic() Laddar frågorna från en fil. Metoder void reset() Återgår till första frågan. boolean hasnextquestion( () Returnerar true om det finns flerr frågor, false annars. boolean hasnextclue() Returnerar true om det finns flerr tips för aktuell fråga, false annars. void nextquestion() Avancerar till nästa fråga. void nextclue() Avancerar till nästa tips för aktuell fråga. int scoreuserguess(string guess) Returnerar aktuell tipspoäng om guess innehåller rätt svar på frågan, annars 0.

5 (9) Samtliga metoder utom de två accessmetoderna uppdaterar klassens observatörer. För reset, nextquestion och nextclue skickas en kolonseparerad sträng på formen <question>:<clue>:<level> Exempel: En stad:holländare byggde staden:4 class Player extends Observable (färdig) Lagrar spelarens poängsumma. Metoder void addmarks(int marks) ) Adderar marks till spelarens poängsumma. Uppdaterar klassens k observatörer med poängsumman i form av ett heltal (int). Uppgifter Uppgiften är att konstruera kontrollklassen, komplettera Gui:t, samt s skriva en main-metod som skapar och kopplar ihop objekt av lämpliga typer så att ett fungerande program erhålls. a) Implementera klassen GameController. Inför två metoderr som kan anropas från Gui:t när användaren tryckt på knappen för nästa tips, respektive skrivit en gissning i textfältet längst ner i fönstret. GameController skall förmedla lämplig information till klassernaa som den samarbetar med samt styra spelets kontrollflöde. (5 p) b) Klassen Gui är påbörjad: class Gui extends JFrame... { private JLabel questionlabel = new JLabel(); private JLabel levellabel = new JLabel(); private JLabel markslabel = new JLabel("Du har 0 poäng"); private JButton nextbutton = new JButton("Nästa tips" ); private JTextArea cluearea = new JTextArea(5,15); private JTextField guessfield = new JTextField(15); private GameController controller;... Vi bortser från hur fönsterlayouten skapas i denna uppgift. Konstruera K de lyssnare som behövs och addera dem till lämpliga komponenter i fönstret. Komplettera med eventuell(a) metod(er) som krävs enligt klassdiagrammet. Nedan visas de olika Swing-komponenternas roller i fönstret: (5 p) questionlabel cluearea levellabel markslabel nextbutton guessfield c) Skriv en main-metod På håret -program erhålls. som skapar ochh kopplar ihop objekt avv lämpliga klasser så att ett fungerande (4 p)

6 (9) Uppgift 4 En GPS-motagare lagrar med jämna mellanrum den mottagna geografiska koordinatenn i en textfil med följande format: {N/S}<grader> <minuter> {E/W} <grader> <minuter> Exempel: N57 37.929 E111 36.068 På samma dator finns en server som på begäran från klienter läser innehållet i textfilen och skickar det till klienter som begär att få uppgiften. Mellan klienterna och servern finnss en uppkopplad förbindelse. GETPOS Coordinate object File En klient begär att få den senast mottagnaa positionenn genom att skicka strängen GETPOS till servern. Servern sänder då tillbaka ett objekt av typen GPSCoordinate. Mjukvaran beskrivs av följande klassdiagram: De tre undre klasserna skall konstrueras i uppgiften. Konstruktorn och metoden i GPSCoordinate beskrivs enklast med följande exempel: String s = N57 37.929 E11 36.068 ; ((new GPSCoordinate(s)).toString()).equals(s) ger true

Tentamen 7 (9) a) Implementera klassen Server som hanterar klienterna. För varje klient som ansluter skall en tråd av typen ClientHandler skapas. Konstruktorn skall ta portnumret som servern skall lyssna på, samt namnet på textfilen som innehåller GPS-koordinaten. Hantera undantag på lämpligt sätt. (4 p) b) Implementera trådklassen ClientHandler. Klassen skall betjäna en klient via en uppkopplad förbindelse. Inparametrar till konstruktorn är socketen som skall användas för kommunikationen med klienten, samt namnet på textfilen som innehåller GPS-koordinaten. Tråden skall oupphörligt ta emot en sträng, och om denna är GETPOS, hämta GPSkoordinaten från textfilen och returnera ett objekt av typen GPSCoordinate till klienten. För att läsa koordinatfilen kan du anta att klassen har den färdiga metoden private String readgpscoordinate() Hantera undantag på lämpligt sätt. (6 p) c) Implementera trådklassen Client. Klassens konstruktor tar serverns IP-address och portnummer som inparametrar. Först skall tråden etablera en förbindelse med servern. Sedan skall den oupphörligt varje sekund skicka ett GETPOS -kommando till servern och därefter ta emot ett koordinatobjekt från servern. Innehållet i detta skall skrivas ut på skärmen. Hantera undantag på lämpligt sätt. (7 p)

Tentamen 8 (9) Uppgift 5 I ett program för bildbehandling implementeras olika grafiska filter med speciella filterklasser. Grundtypen för dessa är interface Filter { void apply(image im); } Några implementerande subklasser är t.ex. RedFilter och BlueFilter. Metoden apply genomför den aktuella filtreringsfunktionen på bildobjektet im. I denna uppgift skall vi konstruera en klass som gör det möjligt att göra nya filterklasser tillgängliga för programmet, vilka kanske inte fanns när programmet skapades. a) class FilterFactory Lagrar ett antal Filter-objekt i en intern tabell. Klassen kan på förfrågan returnera lagrade filter, eller ladda in ytterligare filter. Metoder void addfilter(filter f) Adderar f till tabellen. Filter getfilter(string name) Returnerar ett filterobjekt med namnet name om det finns i tabellen, annars null. Filter loadfilter(string name) Laddar filtret med namnet name och adderar det till tabellen om ett sådant finns i aktuell filkatalog. Det nya filtret returneras, eller null om inget fanns. Set<String> getkeys() Returnerar en mängd av namnen på de lagrade filterobjekten. Implementera klassen! Lagra filterobjekten i en lämplig datastruktur. b) I denna uppgift skall vi konstruera en utbyggbar filtermeny som kan användas i ett tänkt program för bildbehandling. Menyn skall ha några standardfilter när programmet startas, men också kunna byggas ut med fler filter under exekveringen. Om menyalternativet Other väljs skall användaren kunna mata in ett filternamn i en pop-up-meny. Om filtret inte redan är lagrat men finns i aktuell katalog så skall det laddas in och ett extra menyalternativ för det nya filtret adderas sist i filtermenyn. Är filtret redan lagrat händer ingenting. Är det inte lagrat och saknas i aktuell katalog skall man få ett felmeddelande. När ett filter valts i menyn skall motsvarande filterobjekts apply-metod anropas med en bild som inparameter. Ett exempelscenario finns på nästa sida. (5 p)

9 (9) Exempelscenarion: Befintligt filter väljs Externt filter väljs Filternamnet anges Filtret finns ej i aktuell filkatalog Ett annat filternamn anges Filtret finns i aktuell filkatalog och laddades in. Det kan väljas under resten av exekveringen. Du kan utgå från att följande instansvariai abler finns: class Gui extends JFrame { private FilterFactory filterfactory; private JMenuBar menubar; private JMenu filtermenu; private Image image;... private JMenu makefiltermenu(string menuname) {... } Implementera denna metod. Inför ytterligare lämpliga privata hjälpmetoder. Grundalternativen i menyn skall hämtas från filterfactory. (10 p)