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

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

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

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

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

TENTAMEN: Algoritmer och datastrukturer. 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.

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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

DAI2 (TIDAL) + I2 (TKIEK)

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

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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN OOP

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

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

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

Föreläsning 5-6 Innehåll

Tentamen i Objektorienterad modellering och design Helsingborg

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

Tentamen i Objektorienterad modellering och design

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

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

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

Laboration 1 - Grunderna för OOP i Java

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA550 DAG: TID: 8:30 12:30

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

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

Lösningsförslag övning 2.

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

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

Lösningar till tentamen i EDAF25

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

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

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

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:

Lösningsförslag till tentamen

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

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

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

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

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

PROGRAMMERINGSTEKNIK TIN212

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

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

DAT043 - Föreläsning 7

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: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

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

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

Tentamen i Programmering

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

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

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

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

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

Dugga i Grundläggande programmering STS, åk

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

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

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

Fördjupad Java. Undantagshantering. Fel

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 )

Tentamen i Grundläggande programmering STS, åk

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

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 PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Tentamen i Objektorienterad programmering

TENTAMEN OOP

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Föreläsning 3-4 Innehåll

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

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

Transkript:

1 (11) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt namn och personnummer 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, vara indenterade, renskrivna och i övrigt 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. Lösningarna fylls i direkt i tesen! Lycka till!

2 (11) Uppgift 1 Modellering Rita ett klassdiagram som bäst överensstämmer med följande relationer mellan klasserna A-F: En A har två B Flera C känner till A B använder D E är en D och implementerar F För full poäng krävs att pilarna är av rätt typ och riktning. (3 p)

3 (11) Uppgift 2 Gui I en viss applikation med grafiskat användargränssnitt vill man kunna välja mellan olika valutor när en prisuppgift visas. I följande exempel visas priset alltid i svenska kronor (SEK). public class MainWindow extends JFrame { public static final double SEK2EURO = 1/EURO2SEK; private double price = 19999.99; //SEK private JTextField priceview; public MainWindow() { setlayout(new FlowLayout()); add(new JLabel("Price")); priceview = new JTextField(10); priceview.settext(format(price,"sek")); priceview.seteditable(false); add(priceview); pack(); setvisible(true); // Plats för lösningen finns på nästa sida --> // Format a double into a string with two decimals private String format(double price,string currency) { return String.format("%.2f %s",price,currency); Utvidga programmet med en meny Currency så att användaren kan välja i vilken valuta priset visas. Man skall kunna välja mellan alternativen SEK och Euro. Exempel på hur det skall se ut när användaren i menyn väljer att visa priset i Euro: Skriv en metod som skapar menyn. Det räcker sedan om du implementerar menyalternativet för Euro. (4 p)

4 (11) uppg. 2 forts.

5 (11) Uppgift 3 Observer Vid användning av Observer-mönstret kan man ha både flera observerade objekt och flera observatörer. T.ex. kan en observatör observera två olika objekt. Antag att vi har klasserna public class A extends Observable {... public class B extends Observable {... Antag att både A och B kan anropa notifyobservers med en sträng eller ett heltal som argument. public class Obs implements Observer { public Obs(A a,b b) { a.addobserver(this); b.addobserver(this); public void update(observable o,object arg) { Metoden update i Obs skall fungera så här: Om anropet orsakades av att A anropade notifyobservers med en sträng som argument så skall strängen översättas till stora bokstäver och skrivas ut. Om istället anropet orsakades av att B anropade notifyobservers med ett heltal som argument så skall talet multiplicerat med 10 skrivas ut. Skriv färdigt update! Anm. A- och B-objekten kan inte nås via instansvariabler. (3 p)

6 (11) Uppgift 4 Designmönster a) Vilket designmönster beskrivs schematiskt av följande diagram? <<interface>> Int 1 operation() Class_1 Class_n NewClass operation()... operation() -obj : Int + <<create>>newclass(obj:int) operation() newoperation() 1 b) Beskriv i javakod hur designmönstret Singleton realiseras. (1 p) (3 p)

7 (11) Uppgift 5 Strömmar och filer Antag att man har en binär datafil av heltal. Första talet i filen är av typen int och det anger antalet efterföljande tal som alla är av typen long. Problemet är att läsa en sådan fil och skriva ut talen, utom det första av typ int, som textsträngar till en textfil, en per rad. (Felhantering med undantagshanterare kan utelämnas.) a) Vilka av följande strömklasser bör användas för läsning av binärfilen, resp. skrivning av textfilen: FileWriter, ObjectInputStream, FileReader, DataOutputStream, DataStream, FileInputStream, inputstream, PrintWriter, ObjectOutputStream, DataInputStream? Ange hur strömvariablerna deklareras samt hur strömobjekten skapas. Kalla variablerna in resp. out. Filnamnen är infile.dat och outfile.txt. b) konstruera en loop som läser talen från datafilen och skriver motsvarande siffersträngar till textfilen. (2 p) (3 p)

8 (11) Uppgift 6 Trådar Antag att du har funktioner som av någon anledning tar lång tid att beräkna. För enkelhets skull antar vi att dessa funktioner tar ett flyttal som parameter och ger ett flyttal som resultat. Det skulle vara bra om en eller flera sådana beräkningar kunde utföras i bakgrunden i ett program, samtidigt som programmet fortsätter med andra aktiviteter, t.ex. att underhålla användaren medan denne väntar på resultaten. Ett sätt att åstadkomma bakgrundsberäkningar är följande. Definiera först gränssnittet public interface Computable { float compute(float arg); Funktionen som utför den tidskrävande beräkningen placeras sedan i en subklass till Computable, t.ex. public class SlowFox implements Computable { float compute(float arg) {... Man definierar sedan klassen DoBackground. Ett objekt av klassen skall exekvera computemetoden i ett Computable-objekt i en egen tråd. Så här skall det fungera. Antag att du vill exekvera SlowFox.compute med argumentet 123.8 DoBackground job = new DoBackground(new SlowFox(),123.8); // do some other work here... job.join(); float x = job.getvalue(); Konstruktorn skall ta compute-metodens inparameter som argument och värdet i objektet. Resultatet från compute skall sparas i en instansvariabel som senare kan läsas av med metoden getvalue. Om getvalue anropas innan resultatet är klart skall undantaget IllegalStateException kastas. Använd en boolesk instansvariabel för att hålla reda på om beräkningen är klar eller ej. Implementera DoBackground. Plats finns på nästa sida

9 (11) public class DoBackground { // put instance variables here public DoBackground(Computable obj,float arg) { public float getvalue() { (4 p)

10 (11) Uppgift 7 Kommunikation Komplettera nedanstående program så att det upprepade gånger läser textrader från tangentbordet och sänder varje rad som ett datagram till mottagardatorn vars adress och portnummer ges som programargument vid exekveringen. public class Datagramsender { public static void main(string[] arg) { String hostaddress = arg[0]; int port = Integer.parseInt(arg[1]); (4 p)

11 (11) Uppgift 8 Reflektion Antag att klassen C implementerar gränssnittet public interface Int { void f(); Skriv ett kodavsnitt som laddar klassen C, skapar ett objekt av klassen, samt anropar metoden f. (3 p)