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

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

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

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

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

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

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

Tentamen i Programmeringsteknik I

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

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

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

Presentation av trafiksimuleringsprojektet

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.

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

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 Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

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

trafiksimulering Intro OU5 trafiksimulering

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

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.

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

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

Presentation av trafiksimuleringsprojektet

Tentamen i Programmeringsteknik I

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 att du har förstått dessa även om detaljer kan vara felaktiga.

Presentation av obligatoriska uppgiften trafiksimulering. Ett större program med flera klasser

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?

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

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Del A (obligatorisk för alla)

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Obligatorisk uppgift: Simulering av köer i ett trafiksystem

Tentamen i Programmeringsteknik I, ES,

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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

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

TENTAMEN OOP

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

Del A (obligatorisk för alla)

PROGRAMMERING-Java TENTAMINA

OOP Objekt-orienterad programmering

Obligatorisk uppgift: Simulering av köer i ett trafiksystem

Klasshierarkier - repetition

TENTAMEN OOP

Chapter 4: Writing Classes/ Att skriva egna klasser.

Obligatorisk uppgift: Simulering av köer i ett trafiksystem

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

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

LyckaTill önskar Anna

Tentamen FYTA11 Javaprogrammering

Malmö högskola 2008/2009 CTS

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Tentamen OOP

OOP Tentamen

Del A (obligatorisk för alla)

Objektorienterad programmering i Java

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Tentamen i Grundläggande programmering STS, åk

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

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

Laboration 1 - Grunderna för OOP i Java

OOP Tentamen

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

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

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

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

Lösningar för tenta 3 DAT043,

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

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

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

PROGRAMMERING-JAVA TENTAMINA

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

PROGRAMMERING-Java Omtentamina

Tentamen i Programmering

Tentamen, EDA501 Programmering M L TM W K V

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

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

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Föreläsning 3-4 Innehåll

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Tentamen, EDAA20/EDA501 Programmering

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, EDAA10 Programmering i Java

Transkript:

Tentamen Programmeringsteknik I 2014-06-12 Skrivtid: 1400-1900 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer och pin-kod (eller namn om du saknar sådan) på alla papper. Skriv inte längst upp i vänstra hörnet - det går inte att läsa där efter sammanhäftning. Fyll i försättssidan fullständigt. Det är principer och idéer som är viktiga. Skriv så att du övertygar examinator om att du har förstått dessa även om detaljer kan vara felaktiga. Alla uppgifter gäller programmeringsspråket Java och programkod skall skrivas i Java. Koden skall vara läslig dvs den skall vara vettigt strukturerad och indenterad. Namn på variabler, metoder, klasser etc skall vara beskrivande men kan ändå hållas ganska korta. Obs: Dålig läslighet kan ge poängavdrag! Det är totalt 30 poäng på skrivningen. Betygsgränser: 15 räcker säkert till 3, 21 säkert till 4, 26 säkert till 5. Lycka till! Anna ochtom 1

Uppgifter 1. Skriv en klass Vehicle som representerar fordonsobjekt i en trafiksimulering. Varje fordonsobjekt skall innehålla uppgift om destination (ett heltal), en födelsetid som anger när fordonet kommer in i systemet och en sluttid som anger när fordonet passerat trafiksystemet. Destination och födelsetid (båda av heltalstyp) skall ges som parametrar till konstruktorn. Eftersom sluttiden inte är känd när objektet skapas används metoden setexittime för att ange den. Metoden skall kontrollera att sluttiden inte sätts till ett lägre värde än födelsetiden. Innan denna metod anropats skall sluttiden vara 0. Klassen skall vidare innehålla en metod getdestination som returnerar fordonets destination, en metod getborntime som returnerar dess födelsetid och en metod getspenttime som returnerar hur länge fordonet existerat dvs sluttid minus födelsetid. Slutligen skall klassen innehålla en tostring-metod. Nedan följer ett litet testprogram med utskrifter som visar hur metoderna kan anropas. Din lösning skall fungera ihop med testprogrammet! public static void main(string[] args) { int destination = 2; int time = 8; Vehicle v = new Vehicle(destination, time); System.out.println("Created vehicle v : " + v); System.out.println("Destination : " + v.getdestination()); System.out.println("Born time : " + v.getborntime()); v.setexittime(15); System.out.println("v after setting exit time: " + v); System.out.println("Spent time : " + v.getspenttime()); v.setexittime(1); // Illegal setting - should cause error message Utskrifter: Created vehicle v : (2, 8, 0) Destination : 2 Born time : 8 v after setting exit time: (2, 8, 15) Spent time : 7 java.lang.runtimeexception: exittime must be > borntime 2

2. Klassen VehicleCollection innehåller en ArrayList. Klassen används för att samla fordon som passerat trafiksystemet och beräkna statistik på för dessa. Klassen har följande utseende: public class VehicleCollection { private ArrayList<Vehicle>theCollection; public VehicleCollection() { public void add(vehicle v) { public String tostring() { return thecollection.tostring(); /** * Computes the statistics for the stored vehicles i. e. * compute the mean and max value of time spent * and the number of vehicles using the max time **/ public void computestatistics() { /** * Prints the statistics for the stored vehicles */ public void print() { System.out.println("Number of vehicles System.out.println("Mean time : " + thecollection.size()); : " + meantime); : " + maxtime); System.out.println("Max time System.out.println("Number vehicles with max time: " + numbermaxtime); System.out.println("The collection : " + thecollection); a) Deklarera de instansvariabler som behövs utöver arraylistan för att metoden print skall fungera. b) Skriv konstruktorn. c) Skriv metoden add(vehicle v) som lägger till ett fordonsobjekt till samlingen. d) Skriv metoden computestatistics som beräknar statistikvärden (medeltid, maxtid samt antal fordon som behövs maxtiden). På nästa sida ett testprogram och dess utskrifter 3

public static void main(string[] args) { VehicleCollection vc = new VehicleCollection(); Vehicle v = new Vehicle(1,1); v.setexittime(3); vc.add(v); v = new Vehicle(0, 2); v.setexittime(3); vc.add(v); v = new Vehicle(0, 4); v.setexittime(6); vc.add(v); System.out.println("\nPrint before statistics is computed:"); vc.print(); vc.computestatistics(); System.out.println("\nPrint after statistics is computed:"); vc.print(); > run VehicleCollection Print before statistics is computed: Number of vehicles : 3 Mean time : 0.0 Max time : 0 Number vehicles with max time: 0 The collection : [(1, 1, 3), (0, 2, 3), (0, 4, 6)] Print after statistics is computed: Number of vehicles : 3 Mean time : 1.6666666 Max time : 2 Number vehicles with max time: 2 The collection : [(1, 1, 3), (0, 2, 3), (0, 4, 6)] 3. Klassen TrafficSystem definierar själva trafiksystemet (filer, rondeller, trafikljus,... ). Det enda man behöver veta om denna klass är att när man skapar den så anger man hur många destinationer som förekommer och när man anropar metoden step avanceras systemet ett tidssteg. Metoden step returnerar ett fordon som passerat systemet (endast ett fordon per tidssteg kan komma ut) eller null om inget fordon kom ut detta tidssteg. Klassen Simulation har bara en main-metod som driver simuleringen genom att skapa systemet och tidsstega: 4

public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.print("Number of destinations: "); int numberofdests = sc.nextint(); System.out.print("Number of time steps : "); int numberoftimesteps =sc.nextint(); TrafficSystem ts = new TrafficSystem(numberOfDests); /* * Create and initialize an array of VehicleCollections with one vehiclecollection * for each destination */ /* * Perform the specified number of time steps and store the vehicles coming out * in the designated vehicle collection (i.e. a vehicle with destination 0 should be * stored at index 0 in the array, a vehicle with destination 1 at index 1 etc */ for (int i= 0; i<numberoftimesteps; i++) { Vehicle v = ts.step(); System.out.println("\nStatistics:"); for (int i=0; i<numberofdests; i++) { System.out.println("\nDestination " + (char) (i + a ) +" "); System.out.println("==============="); out[i].computestatistics(); out[i].print(); System.out.println("Lane: \n" + out[i].tostring()); System.out.println("\nLeft in the system:"); System.out.println(ts.toString()); Du skall komplettera main-metoden med följande: a) Deklarera och initiera en array out med VehicleCollection-objekt. Det skall finnas ett VehicleCollection-objekt per möjlig destination. b) Lägg till kod i tidsloopen som tar hand om de fordon som kommer ut ur systemet och lägger in dem i respektive VehicleCollection. Din kod skall fungera i den angivna metoden! Exempel på utskrifter från en körning finns på nästa sida. 5

Statistics: Destination a =============== Number of vehicles : 0 Mean time : NaN Max time : 0 Number vehicles with max time: 0 The collection : [] Lane: [] Destination b =============== Number of vehicles : 3 Mean time : 1.3333334 Max time : 3 Number vehicles with max time: 1 The collection : [(1, 3, 3), (1, 4, 5), (1, 5, 8)] Lane: [(1, 3, 3), (1, 4, 5), (1, 5, 8)] Destination c =============== Number of vehicles : 2 Mean time : 2.0 Max time : 2 Number vehicles with max time: 2 The collection : [(2, 2, 4), (2, 7, 9)] Lane: [(2, 2, 4), (2, 7, 9)] Left in the system: <(1, 10, 0) > 6