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

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje uppgift på ett nytt blad (skriv inga lösningar i tesen!).

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

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:

DAI2 (TIDAL) + I2 (TKIEK)

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

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.

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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

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

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

Lösningsförslag till tentamen

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

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

PROGRAMMERINGSTEKNIK TIN212

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

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

Arv och polymorfism i Java

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

OOP Tentamen

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

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

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

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

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Tentamen i Grundläggande programmering STS, åk

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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.

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

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

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

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

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

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

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

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

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.

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

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

Classes och Interfaces, Objects och References, Initialization

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

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

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

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

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

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

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

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

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-16, TDA540. Dag: , Tid:

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

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

TENTAMEN OOP

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

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

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

Introduktion till arv

Tentamen i Objektorienterad modellering och design Helsingborg

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Enkla variabler kontra referensvariabel

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 Grundläggande programmering STS, åk

Malmö högskola 2008/2009 CTS

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

Tentamen i Programmeringsteknik I

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 i TDP004 Objektorienterad Programmering Lösningsförslag

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

Tentamen i Programmeringsteknik I

Designmönster. Kapitel Kommandomönstret

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

TKIEK-2, TKTFY-3, TKTEM-3

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

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

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]

Transkript:

1 (11) 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 och 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 (11) Uppgift 1 Designen av nedanstående klasser har bristen att Clock beror av gränssnittsklasserna Display och Console. Det borde vara tvärtom. Komplettera koden på nästa sida så att designmönstret Observer realiseras. Det räcker om du visar mönstret för klasserna Clock och Display (Console blir analogt). public class Clock { private Time time; Display display; Console console; public void tick() { time++; display.show( time ); console.print( time );... public class Display { public show( Time time ) {...... public class Console { public print( Time time ) {...... forts.

3 (11) public class Clock { private Time time; public void tick() { time++; public class Display { public Display( Clock clock ) { private show( Time time ) {... (8 p)

4 (11) Uppgift 2 En liten simulator för ett bankomatsystem har följande arkitektur Simuleringen går ut på att testa om många parallella bankomattrådar uppdaterar ett konto korrekt. Varje bankomat gör tio slumpmässiga uttag mellan 500 och 1000 kronor från kontot. Om man på förhand summerar dessa slumpmässiga uttag för, säg, 1000 bankomater och sätter saldot på kontot till denna summa, så skall saldot vara exakt 0 kr efter avslutad simulering. Metoden slumputtag i simulatorn är färdig. Den ger tillbaks en lista med antaluttag negativa tal (=uttag). a) Implementera klassen Konto. Positivt belopp betyder insättning, negativt uttag. Saldot får bli negativt. För full poäng krävs att du beaktar att metoden transaktion kan anropas av flera trådar samtidigt. public class Konto { (4 p)

5 (11) b) Implementera klassen Bankomat. Varje objekt av klassen skall exekvera i en egen tråd. När tråden exekveras skall uttagen i en uttagssekvens utföras mot ett konto. Förmedla kontot och uttagssekvensen från simulatorn till bankomatobjektet på lämpligt sätt. public class Bankomat { (4 p) v.g.v.

6 (11) c) Skriv klart klassen Simulator. Lagra lämpligen bankomatobjekten i ett fält. Metoden simulera skall starta bankomattrådarna, invänta dem, och därefter skriva ut saldot på kontot. Utskriften skall exempelvis se ut så här : Startsaldo: 7480664 Slutsaldo: 0 public class Simulator { private static int antalbankomater = 1000; private static int antaluttag = 10; // antal uttag per bankomat private static long startsaldo = 0; public Simulator() { // Skapar en lista av slumpmässiga uttagsbelopp private ArrayList<Long> slumputtag(int antaluttag) { Random rand = new Random(); ArrayList<Long> l = new ArrayList<Long>(antalUttag); for ( int i = 0; i < antaluttag; i++ ) { int belopp = 500 + rand.nextint(500); startsaldo += belopp; l.add((long)-belopp); return l; v.g.v.

7 (11) public void simulera() { (8 p)

8 (11) Uppgift 3 Java tillåter som bekant att klasser som inte är kända då programmet kompileras ändå kan laddas dynamiskt under exekvering. I det här exemplet implementerar dessa klasser gränssnittet public interface Command { public void execute(); Skriv ett program som låter användaren mata in ett kommandonamn via en pop-up-dialog. Därefter skall kommandot exekveras genom att först ladda klassen med namnet i fråga, skapa ett objekt av den och slutligen anropa execute-metoden. För att kontrollera om ett inmatat kommandonamn är korrekt finns den färdiga klassen public final class Constants {... public static boolean iscommand(string s) {... Om iscommand(x) returnerar true finns en klass med namnet x som implementerar Command. Om det inte finns något kommando som motsvarar den inmatade strängen skall ett meddelande visas. (10 p)

9 (11) Uppgift 4 I ett enkelt anslagstavelsystem kan användare sända in sina åsikter om vad som helst via klienter. Meddelandena skickas till en applikation som visar inkomna texter i ett fönster. Det finns en instans av mottagarapplikationen, men i princip är ett obegränsat antal klienter möjliga. Uppgiften går ut på att konstruera sändar- och mottagarklasserna i de två applikationerna. Texterna som användarna skriver i sina klientfönster skall sändas som datagram till mottagarapplikationen på adress 123.45.67.89 och port nr 9867. Här följer skelett till klientapplikationens sändarklass. Komplettera nedan! public class MessageSender { public MessageSender(String adress, int port) throws SocketException { public void send(string text) { // skicka meddelandet v.g.v.

10 (11) Mottagarapplikationens klass sköter mottagning och visning av meddelanden. Komplettera! public class MessageReceiver { private JTextArea textdisplay; // för utskrift i GUI:t public MessageReceiver(int port) { public void receivemessages() throws SocketException { // anropas av main public void settextdisplay(jtextarea textdisplay) { this.textdisplay = textdisplay; I uppgiften ingår inte att programmera de grafiska användargränssnitten. (16 p)

11 (11) Uppgift 5 Antag att man har tillgång till följande klasser för att representera geometriska figurer cd: Graphical objects << interface >> Shape +getwidth():double +getlength():double +getarea():double +draw():void +erase():void +move(dx:double,dy:double):void +resize(factor:double):void The Shape's position << abstract >> Point #x:double #y:double -width:double -height:double Rectangle +getwidth():double +getlength():double +getarea():double +draw():void +erase():void +move(dx:double,dy:double):void +resize(factor:double):void -xradius:double -yradius:double Ellipse +getwidth():double +getlength():double +getarea():double +draw():void +erase():void +move(dx:double,dy:double):void +resize(factor:double):void Klasserna är givna och får inte ändras. Antag att man vill kunna addera en tredje dimension till rektangel- och ellipsobjekt så att de får en volym. De skall alltså även ha en höjd. Inför klassen Volume. Klassen skall bl.a. ha metoden public double getvolume() Visa hur designmönstret Decorator kan användas för att lösa problemet, utan att ärva från rektangel- eller ellipsklassen. a) Komplettera klassdiagrammet med klassen Volume, samt visa vilka instansvariabler och metoder klassen skall ha. Visa dessutom hur den är relaterad till andra klasser i diagrammet. Det räcker om de befintliga klasserna anges med namn i det nya diagrammet. (3 p) b) Implementera klassen Volume i Java. (6 p) c) Ge ett kodexempel som skapar en kub och skriver ut dess volym. (1 p)