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

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

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

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod 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).

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 programutveckling, fk. Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad.

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! 1 (9) Tentamen

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

DAI2 (TIDAL) + I2 (TKIEK)

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

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

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

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

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

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

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

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod 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).

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 i Programmeringsteknik I

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

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

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

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

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

Tänk på följande: Det finns en referensbok (Java) hos tentavakten 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! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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 programutveckling, fk

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:

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

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

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

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

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

Tentamen. Lösningsförslag

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

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: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

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

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

Objektorienterad programutveckling, fk

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

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

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

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

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

Föreläsning 5-6 Innehåll

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

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 OOP

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

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

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

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

Lösningsförslag till tentamen

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

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

Objektsamlingar i 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 )

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

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

TENTAMEN OOP

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

DAT043 Objektorienterad Programmering

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Objektorienterad programmering D2

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

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

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

ID1004 Laboration 4, November 2012

Lösningsförslag till tentamen

Tentamen , Grundläggande programmering i Java

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

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

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. Grundläggande programmering i Java A 5p, DTAA

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

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]

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Transkript:

TENTAMEN: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv din tentamenskod 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!

Uppgift 1 Gränssnittet Die beskriver tärningar. Man kastar tärningen med roll och läser av värdet med getvalue: public interface Die { void roll(); int getvalue(); Gränssnittet implementeras av klassen StandardDie som ger en sexsidig tärning med statistiskt jämn fördelning av utfallen. Exakt hur denna klass är konstruerad saknar relevans för uppgiften så vi lämnar dess interna detaljer därhän. a) Konstruera klassen NoRepeatDie som ger en tärning som aldrig ger samma utfall två gånger i följd. Lösningen skall utformas i enlighet med designmönstret Decorator. Nedanstående exempel visar hur de tre inblandade klasserna skall kunna användas: Die nrd = new NoRepeatDie(new StandardDie()); int noofduplicates = 0; int last = nrd.getvalue(); for ( int i = 0; i < 1000000000; i++ ) { nrd.roll(); if ( nrd.getvalue() == last ) noofduplicates++; last = nrd.getvalue(); System.out.println("Number of duplicates: " + noofduplicates); Om uppgiften är korrekt löst så skall utskriften bli Number of duplicates: 0 när ovanstående kod exekveras. b) Rita ett klassdiagram som beskriver designmönstret Decorator. (4 p) (2 p)

Uppgift 2 Konfigurationsdata för program består ofta i nyckel-värdepar och lagras i CSV-filer (Colon Separated Values). Ex. Textfilen config.txt lagrar information om ett bildelement: color:blue height:100 width:200 Nycklarna är unika och internt är det lämpligt att lagra sådan information i en tabell (map). a) Konstruera en klass för att läsa och skriva konfigurationsdata från(till) en CSV-fil: public class ConfigIO { public static Map<String,String> load(string filename) throws IOException { // ToDo public static void save(map<string,string> table,string filename) throws IOException { // ToDo Du får anta att nycklarna i CSV-filens vänstra kolumn är unika. (6 p) b) Konstruera en klass som ger en intern representation av en CSV-fil. Data skall läsas och skrivas m.h.a. klassen i a). Filen skall läsas in till tabellen i klassens konstruktor och skrivas över så snart ett värde ändras i tabellen. Metoden getkeys returnerar nycklarna och används i en senare uppgift. public class ConfigData { public ConfigData() throws IOException { // ToDO public Set<String> getkeys() { // ToDO public String getvalue(string key) { // ToDO public void setvalue(string key,string value) throws IOException { // ToDO (8 p)

n Uppgift 3 I den här uppgiften skall vi addera en konfigurationsmeny till ett fönster. När man väljer en viss parameter i menyn skall dess aktuella värde visas i en popup-dialog. Ändrar man värdet skall det nya värdet sparas. I följande scenario får användarenn veta att with har värdet 200 och ändrar det till 300. Nästa gångg with väljs (bilden till höger) ser vi att det sparade s värdet visas. Konstruera det grafiska gränssnittet som visas ovan, inklusive fönstret. Menyelementen skall hämtas från ConfigData i uppgift 2b, och övrig datahantering skall ocksåå ske med den klassen. Om detta ger upphov till undantag skall orsaken visas i en popup-dialog. Du får alltså i denna uppgift anta att 2b är löst. Tips: Nedan finns ett tillägg till API. (10 p) class javax.swing.joptionpane: Denna metod saknas i vissa av de utdelade bilagorna: static String showinputdialog(object message, Object initialselectionvalue) Shows a question-message dialog requesting input from the user, with the input value initialized to initialselectionvalue. Version: 2018-03-15 Objektorienterade applikationer, DAT055, DAI2, 17/18, lp 3

Uppgift 4 I nedanstående system sänder klienter jobb till en server. Servern lagrar varje mottaget jobb i en synkroniserad kö. Client :Job Socket Client :Job Server Jobbkö... Uppgiften går ut på att konstruera klasser för klient och server. Javas stöd för client/serverkommunikation skall användas. Varje klientanslutning hanteras i en egen tråd i servern. Följande färdiga klasser skall användas i lösningen: public class Job { public Job(String id,long time,string message) { // Other contents omitted public class SynchronizedQueue { public synchronized void put(job j) { public synchronized Job take() { a) Klientklassen skall ha en metod som skickar Job-objekt till en server. public static void sendjob(string address,int port,job job) throws IOException Implementera metoden (men inte resten av klassen). Kan Job-objekt skickas över en c/sförbindelse? Om du anser att något saknas i klassdeklarationen så komplettera den. (4 p) b) Konstruera en serverklass som tar emot uppkopplingsförsök från klienter. För varje klient skall en tråd av typen ClientHandler skapas. Denna konstrueras i nästa deluppgift, men du får anta att den finns nu. (5 p) c) Konstruera trådklassen ClientHandler som oupphörligt tar emot Job-objekt via en socket. Varje mottaget objekt skall sparas i en kö av typen SynchronizedQueue. Låt trådklassens konstruktor ta socketen och kön som parametrar. (6 p)

n Uppgift 5 Signalväxlingarna i ett trafikljus sker i princip enligt följande cykliska schema (rött överst, gult i mitten, grönt nederst): 20 sek 1 sekk 20 sek 5 sek I denna uppgift skall vi simulera ett sådant trafikljus och följande kod är given. Signalklasserna används för att hålla reda på trafikljusets interna tillstånd: public interface Signal { void goon(); void gooff(); boolean ison(); public class RedSignal extends AbstractSignal { public class YellowSignal extends AbstractSignal { public class GreenSignal extends AbstractSignal { Klasserna är avsiktligtt tomma. public abstract class AbstractSignal implements Signal { private boolean ison = false; public void goon() { if (! ison ) { ison = true; public void gooff() ) { if ( ison i ) { ison = false; public boolean ison() { returnn ison; För det grafiska gränssnittet finns klasserna Lamp och SignalGui: public class Lamp extends JLabel { private Icon lampicon; public Lamp(Icon lampicon) { this.lampicon = lampicon; switchonoff(false); public void switchonoff( (boolean turnon) { if ( turnonn ) seticon(lampicon); else seticon( (new ImageIcon("black light..png")); Forts. nästa sida Version: 2018-03-15 Objektorienterade applikationer, DAT055, DAI2, 17/18, lp 3

n GUI public class SignalGui extends JFrame { private Lamp redlamp; private Lamp yellowlamp; ; private Lamp greenlamp; public SignalGui() { setlayout(new GridLayout(3,1) )); redlamp = new Lamp(new ImageIcon("red light.png")); add(redlamp); yellowlamp = new Lamp(new ImageIcon("yellow light.png") ); add(yellowlamp); greenlamp = new Lamp(new ImageIcon("green light.png")); add(greenlamp); pack(); setvisible( (true); a) Ange vilka tillägg som behöver görass ovan för att upprätta ett e observatörsförhållande enligt designmönstrett Observer mellan det grafiska gränssnittet och signalklasserna. Tänk efter vilken eller vilka signalklasser som berörs! Du behöver inte upprepa den givna koden. (3 p) b) Konstruera klassen SignalController. Den skall styra tre signalobjekt enligt det cykliska schemat ovan. Signalcykeln skall starta med ett rött intervall. Klassen skall exekvera signalloopen i en egen tråd. Signalobjekten skall ges som argument till konstruktorn: public SignalController(Signal greensignal,, Signal yellowsignal, Signal redsignal) (7 p) c) Konstruera klassen TrafficLight som implementerar ett trafikljus m.h.a. klasserna i a och b. Designmönstret Observer skall beaktas. Klassen skall ha en main-metod och starta tråden. Som ledning får du följande klassdiagram: (5 p) Version: 2018-03-15 Objektorienterade applikationer, DAT055, DAI2, 17/18, lp 3