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

Relevanta dokument
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. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

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

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) 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.

PROGRAMMERINGSTEKNIK TIN212

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

DAI2 (TIDAL) + I2 (TKIEK)

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 7 (7) 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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

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

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

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 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

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

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

Tentamen i Grundläggande programmering STS, åk

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

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

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

Lab5 för prgmedcl04 Grafik

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

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

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

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.

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

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. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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

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

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

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

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

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

Design av en klass BankAccount som representerar ett bankkonto

Tentamen i Grundläggande programmering STS, åk

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

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

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

Mer om grafiska komponenter. Händelsestyrda program

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

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

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

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

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

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

Objektorienterad programmering D2

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

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

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

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Tentamen, Algoritmer och datastrukturer

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

TENTAMEN OOP

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

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

För alla uppgifter på tentan gäller: Man får använda både standard-c++ (som till exempel har pekare som anges med * och objekt som skapas med new) och

Tentamen i Programmeringsteknik MN

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Tentamen i Programmeringsteknik I

PROGRAMMERING-JAVA TENTAMINA

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

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

Laboration 3, uppgift En klass för en räknare

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

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Teoretisk del. Facit Tentamen TDDC (6)

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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

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

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

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

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen , Grundläggande programmering i Java

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

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 7 24 nov 2015

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

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 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 (6) Uppgift 1 Vi skall göra en nedräkningstimer med ett grafiskt användargränssnitt. Den skall fungera så här: Timer i startläge beredd att ställa in nedräkningstid. Startknappen är inaktiverad. Användaren har tryckt tio ggr på ställknappen +1. Startknappen aktiveras efter första trycket på +1. Användaren har tryckt på startknappen och timern har hunnit räkna ned en sekund. Timern har räknat ned till 0 och avgivit ljudsignal. Den är nu i startläge igen. GUI:t har tre komponenter, överst en JLabel där tiden visas, och under den två knappar. Om knapparna är aktiverade eller ej beror på timerns tillstånd enligt exemplen ovan. Tiden skall räknas upp med en enhet i det översta fönstret vid varje tryck på +1, och ned med en enhet per sekund när timern är i nedräkningsläge tills den når 0. Konstruera klassen TimerGui. Klassen skall ha lämpliga instansvariabler och en konstruktor, kod som gör att fönstret skapas, ett timer-objekt av lämplig typ. Bestäm själv om händelsehanteringen skall vara centraliserad, eller med inre anonyma lyssnarklasser. Några tips: Ljud kan fås med: Toolkit.getDefaultToolkit().beep();

3 (6) Uppgift 2 Klassen FileUtilities skall innehålla diverse filhanteringsmetoder. Bland annat skall klassen ha en metod för att översätta binära datafiler till textfiler. Uppgiften blir att skriva metoden public static void doubletotext(string infile,string outfile) Den första parametern anger namnet på en binär fil som innehåller ett okänt antal tal av typen double, den andra parametern anger namnet på en textfil som skall skrivas av metoden. Talen i infilen skall läsas in till ett fält, därefter skall fältet sorteras, och sist skall talen i det sorterade fältet skrivas ut i textform, ett tal per rad, till utfilen. Sorteringen skall göras med standardmetoden Arrays.sort: static void sort(double[] a) Sorts the specified array of doubles into ascending numerical order. Du kan anta att FileUtilities redan innehåller en metod för att mäta längden på en fil: private static int length(string filename) Metoden returnerar längden, mätt i antalet bytes, hos filen med angivet filnamn. Konstanten Double.SIZE ger antalet bitar i den binära representationen av ett värde av typen double. Lösningen skall baseras på fält och sortering, andra strukturer som t.ex. map får ej användas. Ex. Så här kan ett stycke av en utdatafil se ut: 165.09518622909707 168.43766239639308 178.83306236636963 190.88998475424023 215.10695240071095 215.83468139012905

4 (6) Uppgift 3 Ett bankkonto kan implementeras med en klass, Account, med följande metoder Account(x) konstruktor som initierar kontot med startsaldot x void put(x) sätter in x kronor på kontot void take(x) tar ut x kronor från kontot int getbalance() returnerar kontots saldo a) Implementera klassen Account. Vissa av metoderna bör vara synkroniserade, vilka? Om take anropas med ett uttagsbelopp som överskrider saldot, så skall metoden returnera först när tillräckligt belopp satts in på kontot (av ett annat objekt). Om put eller take anropas med ickepositivt argument skall undantaget IllegalArgumentException kastas. För att man skall kunna följa en simulering med kontotransaktioner skall dessutom put och take göra utskrifter som kolumnen till vänster visar exempel på: 3466-575 = 2891 saldo: 3466, uttag: 575, nytt saldo: 2891 2891-871 = 2020 uttag 2020-557 = 1463 uttag 1463-677 = 786 uttag 786-722 = 64 uttag det saknas täckning för nästa uttag på 905 kronor 64 + 23554 = 23618 insättning 23618-905 = 22713 uttag 22713-596 = 22117 uttag Med hjälp av kontoklassen, samt två trådklasser, kan vi nu konstruera ett enkelt simuleringsprogram. Scenariot är följande:varje månad sätter en arbetsgivare in mellan 20000 och 30000 kronor i lön på kontot. Varje dag försöker kontohavaren ta ut mellan 1000 och 2000 kronor från kontot. Är pengarna slut får kontohavaren vänta tills det kommer in mer pengar. Vi låter en dag i verkligheten motsvaras av en sekund i simuleringen. Arbetsgivaren skall simuleras av klassen Employer och kontohavaren av klassen Employed. Följande kod sätter ihop de tre delarna och startar simuleringen: Account account = new Account(30000); Employer employer = new Employer(account); Employed employed = new Employed(account); employer.start(); employed.start(); Du kan välja att lösa antingen uppgift b eller c. Klasserna blir rätt lika och du får bara poäng för en av dem. b) Implementera klassen Employer. Klassen skall exekvera en tråd som var trettionde sekund sätter in ett slumpmässigt belopp enligt ovan i ett kontoobjekt. (6 p) c) Konstruera klassen Employed. Klassen skall exekvera en tråd som varje sekund tar ut ett slumpmässigt belopp enligt ovan från ett kontoobjekt. (6 p)

5 (6) Uppgift 4 I denna uppgift skall du konstruera delar till sändarapplikationen i ett enkelt meddelandesystem där man får leveransbesked, ungefär på samma sätt som det kan fungera för SMS. 1 Innehållet i en textarea skall sändas som datagram till en IP-adress, som anges i ett textfält, när användaren trycker på knappen send. Mottagarapplikationens portnummer antar vi är fixerat till 1837, så det behöver inte anges i GUI:t. Ex. Om vi antar att en sändarapplikation körs på en dator med IP-adressen 129.21.543.7, och en viss mottagare har IP-adress 129.12.345.6, kan sändning av ett meddelande och mottagning av leveransbesked se ut på följande sätt: Vad mottagaren gör med meddelandet lämnar vi därhän, men mottagaren skall sända tillbaka ett kvittensdatagram med ett leveransbesked som innehåller avsändarens adress, samt tidpunkten då meddelandet togs emot. Avsändaren lyssnar efter leveransbesked på port 1838. Leveransbeskedet skall visas i en pop-up-dialog hos avsändaren. (Texten i dialogen skall vara samma som innehållet i kvittensdatagrammet.) Avsändaren väntar högst 10 sekunder på leveransbesked efter att meddelandet sänts. Om inget besked kommer inom denna tidsperiod skall meddelandet betraktas som förlorat och följande dialog visas Tips: Placera mottagandet av leveransbesked i en privat metod så blir strukturen bättre. 1 För att undvika förvirring: Med (av)sändaren menas i denna uppgift den som sänder meddelanden. Med mottagaren menas den som tar emot meddelanden och sänder tillbaka leveransbesked.

6 (6) Uppgift 5 Följande javagränssnitt är givet: public interface Action { void execute(); En textfil innehåller namnen på ett okänt antal klasser som implementerar Action, ett namn per rad i filen. I samma katalog som namnfilen ligger motsvarande klassfiler. Om t.ex. Jump finns i filen, så innehåller katalogen Jump.class, o.s.v.. Nedan finns en påbörjad klass som skall visa klassnamn på knappar i ett fönster. När man trycker på en knapp skall metoden execute anropas för en instans av klassen vars namn står på knappen. I konstruktorn anropas metoden makebuttons. Uppgiften är att skriva färdigt metoden. makebuttons skall läsa filen, och för varje inläst klassnamn skapa en knapp med namnet på, samt ladda och instansiera klassen. Knappens lyssnarmetod skall anropa klassens executemetod för den skapade instansen. Tips: Använd en Scanner för att läsa klassnamnen från namnfilen. public class ReflectionDemo extends JFrame { public ReflectionDemo(String namefile) { makebuttons(namefile); pack(); setvisible(true); private void makebuttons(string namefile) { // skriv färdigt denna! (6 p)