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

Relevanta dokument
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).

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).

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

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

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

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

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.

DAI2 (TIDAL) + I2 (TKIEK)

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

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. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

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

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

Tentamen i Objektorienterad programmering

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

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.

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

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

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

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

PROGRAMMERINGSTEKNIK TIN212

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Objektorientering: Lagring, räckvidd och livstid

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

Omtentamen 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

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

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

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

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Föreläsning 2. Länkad lista och iterator

Laboration 1 - Grunderna för OOP i Java

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

Lösningsförslag till tentamen

DAT043 Objektorienterad Programmering

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

Objektorienterad programutveckling, fk

Objektsamlingar i Java

Tentamen FYTA11 Javaprogrammering

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

Del A (obligatorisk för alla)

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

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

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Objektorienterad programmering D2

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Tentamen i Objektorienterad modellering och design

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

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

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

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 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

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

Föreläsning 2. Länkad lista och iterator

Föreläsning 5-6 Innehåll

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

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

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

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

DAT043 - Föreläsning 7

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorientering: Lagring och livstid

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

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

Transkript:

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

n 2 (6) Uppgift 1 a) Rita ett klassdiagram som beskriver designmönstret composite. (2 p) b) Om man vill använda en slumptalsgenerator i en applikationn och vill vara säker på att det baraa finns en enda instans av generatorn kan man använda designmönstd tret singleton. Implementera klassen SingletonRandom enligt denna princip. Utnyttja java.util.random i lösningen. Alla metoder i Random skall kunna anropas även i din nya klass. (3 p) Uppgift 2 I ett program för att simulera kast med enn sexsidig tärning (eng. die) finns följande klass: 1 public class Die { private int value; private static Random random = new Random() ); public void roll() { value = 1 + random.nextint(6); Eftersom man vill kunna se och kasta tärningen finns också ett grafiskt gränssnitt: public class Gui extends JFrame { private JTextField textfield; public Gui() { setlayout(new FlowLayout()); JButton button = new JButton("Roll the die"); add(button); textfield = new JTextField(2); textfield.seteditable(false); add(textfield) ; pack() ; setvisible(true); Tanken är att fönstret skall se ut så här: Ett tryck på knappen skall kasta tärningenn och det nya värdet visas i textfältet. Tyvärr fungerar det inte (ännu) eftersom klasserna inte samarbetar. Modifiera koden ovan så att de två klasserna kommunicerar via designmönstret observer. Skriv också en main-metod som skapar och kopplar ihop objekt på lämpligt sätt till ett fungerande program. När det startas och fönstret visas skall tärningen vara kastad en gång och värdet visas, alltså innan det första knapptrycket. Inga ytterligare metoder får läggas till i Die. (6 p) 1 Man skulle naturligtvis mycket väll kunna använda klassen SingletonRandom från uppgift 1 i klassen Die, men det saknar relevans för just denna uppgift. Version: 2017-03-16 Objektorienterade applikationer, DAT055, DAI2, 16/17, lp 3

3 (6) Uppgift 3 En SkipIterator är en iterator som förutom de vanliga metoderna hasnext, next och remove, dessutom har metoden public E skip(int n) Ett exempel får visa hur det fungerar: ArrayList<Integer> l = new ArrayList<>(); for ( int i = 1; i <= 10; i++ ) l.add(i); SkipIterator<Integer> skipit = new SkipIterator<>(l.iterator()); while ( skipit.hasnext() ) System.out.print(skipit.next() + ); skipit = new SkipIterator<>(l.iterator()); while ( skipit.hasnext() ) System.out.print(skipit.skip(2) + ); Den första utskriften blir 1 2 3 4 5 6 7 8 9 10 och den andra 3 6 9 10. Anropet skip(n)hoppar alltså över n element och returnerar nästa element. Om det inte finns så många element returneras det sista elementet. Om iteratorn redan passerat sista elementet är beteendet samma som för metoden next, d.v.s. NoSuchElementException kastas. Anropet skip(0) är ekvivalent med anropet next(). Konstruera klassen SkipIterator genom att tillämpa designmönstret decorator. Gränssnittet Iterator definieras public interface Iterator<E> { boolean hasnext(); E next(); void remove(); Tips: Om Cls skall implementera Int<E> skriver man Cls<E> implements Int<E>. (10 p)

4 (6) Uppgift 4 I den här uppgiften skall du konstruera ett Java-program, Search, som låter användaren söka efter alla Java-filer med ett visst textinnehåll i en angiven filkatalog. För de Java-filer som innehåller den sökta texten skall först filnamnet skrivas ut och därefter alla rader som innehåller den sökta texten. Ex. Om filerna i katalogen test är A.java: public interface A { void acc(); long get(); B.java: public class B implements A { private long sum = 0; private long term = 1; public void acc() { sum += term; term++; public long get() { return sum; C.java: public class C implements A { private long prod = 1; private long factor = 1; public void acc() { prod *= factor; factor++; public long get() { return prod; D.java: public class D implements A { protected A a; public D(A a) { this.a = a; public void acc() {... public long get() { return... och programmet körs med kommandot java Search test private så skall utskriften bli: B.java: private long sum = 0; private long term = 1; C.java: private long prod = 1; private long factor = 1; Filkatalogens namn och den sökta texten skall alltså kunna ges som programargument och tas emot via argumentvektorn i main-metoden. Inför gärna privata hjälpmetoder. Tips: Använd standardklassen File. (12 p)

5 (6) Uppgift 5 I nedanstående system sänder klienter heltal till en server. Servern lagrar för varje klient det största värdet den tagit emot från klienten i en textfil som namnges efter klientens IP-adress. Varje gång ett värde tagits emot uppdateras maxvärdet i filen. Därefter sänds maxvärdet åter till klienten. IP 3241.5.6.7 Client 42 42 Port IP 1432.9.8.5 Client... 5 38 Server Datalagring 3241.5.6.7.txt 17 42 1432.9.8.5.txt 38... I uppgiften skall servern konstrueras. Kommunikationen skall baseras på Javas stöd för client/server-kommunikation. Varje klientanslutning skall hanteras i en egen tråd. Dela in koden i trådklassen i flera privata hjälpmetoder. Tips: Använd klassen File. (16 p)

n 6 (6) Uppgift 6 Javas reflektionsmekanism gerr som bekant möjligheter till dynamisk klassladdning. Till exempel kan man använda reflektion för att skapa menyer i ett GUI på ett flexibelt sätt. Till menyalterna- tiv registreras lyssnare som vanligen delegerar åtgärden som skall utföras vidare till ett metodanrop. Vi beskriver här sådana åtgärder med gränssnittet: public interface MenuAction { void fire(); Ex. Om klassen OpenAction implementerar MenuAction ochh action ärr en instans av OpenAction kan en lyssnare skrivas som e -> action.fire(). Om vii laddar sådana Action-klasseprogrammets omgivning och menyn behöver inte hårdkodas i programmet.. Även menyns och dynamiskt kan menyn byggas med utgångspunktt från befintliga klasserr i menyalternativens namn bör hanteras flexibelt, t.ex. för att lätt kunna k språkanpassa programmet. Därför lagrar vi följande information i konfigurationsfiler, här två exempel l (med ytterligare två Action-klasser): menuconfig_en.txt: File Open: :OpenAction Save: :SaveAction Exit: :ExitAction menuconfig_sv.txt: Filmenyy Öppna:OpenAction Spara:SaveAction Avsluta:ExitAction På första raden i en konfigurationsfil finns menyns namn. Därefter kommerr för varje menyalternativ dess namn, samt namnet på Action-klassen som skall hantera händelsen när alternativet väljs. Dessa klasser skall laddas dynamiskt och användas för att hantera menyhändelserna. För att det skall s fungera måste förstås Action-klasserna vara kompilerade så att motsvarande klassfiler existerar. Uppgiften är nu att konstruera metodenn public static JMenu createmenu(string configfile) throws IOException Metoden skall ta namnet på en konfigurationsfil av ovanstående e typ som parameter. Metoden skall läsa informationen i konfigurationsfilen, skapa en meny, ladda angivna klasser, samt s användaa dessa för att skapa lyssnare. För att få bättre struktur påå koden får du användaa privata hjälpmetoder. Ex. En meny skapad från menuconfig_en.txt ser ut så här när n den visas: När Save väljs anropas fire i klassen SaveAction. (11 p) Version: 2017-03-16 Objektorienterade applikationer, DAT055, DAI2, 16/17, lp 3