Del A (obligatorisk för alla)

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

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Del A (obligatorisk för alla)

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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.

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

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Del A (obligatorisk för alla)

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

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

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

Föreläsning 3-4 Innehåll

TENTAMEN OOP

OOP Objekt-orienterad programmering

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

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

Tentamen i Programmeringsteknik I

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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

Laboration A Objektsamlingar

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

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

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

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.

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Tentamen. Lösningsförslag

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 )

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen i Programmeringsteknik I, ES,

Malmö högskola 2008/2009 CTS

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

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.

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

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.

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

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Föreläsning 5-6 Innehåll

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

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

Tentamen OOP

TENTAMEN OOP

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

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

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

TENTAMEN OOP

Tentamen, EDAA20/EDA501 Programmering

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Presentation av trafiksimuleringsprojektet

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning REPETITION & EXTENTA

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.

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

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

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

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

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Tentamen i Programmering

Instuderingsfrågor, del D

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

Föreläsning 8: Exempel och problemlösning

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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.

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

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

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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

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

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

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

JAVAUTVECKLING LEKTION 11

Laboration 13, Arrayer och objekt

Saker du ska kunna Föreläsning 13 & 14

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

OOP Objekt-orienterad programmering

trafiksimulering Intro OU5 trafiksimulering

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

Transkript:

Del A (obligatorisk för alla) A1. Koden följer garanterat namnkonventionerna. Ringa in rätta svar och lämna in tillsammans med dina övriga svar! a) Hur många objekt skapas av följande kod? World w = new World(); Turtle t1, t2, t3; t1 = new Turtle(w); t2 = new Turtle(w); t3 = t2; 1) 0 2) 1 3) 2 4) 3 5) 4 b) Antag att klassen PersonList har en instansvariabel ArrayList<Person> myfriends. På vilket eller vilka sätt kan en metod med huvudet public PersonList sort() i klassen PersonList anropas? 1) Person[]result = sort(); 2) String result = sort(); 3) PersonList result = sort(); 4) ArrayList<Person> result = sort(); 5) Person result = sort(); c) Vilken eller vilka returtyper kan nedanstående metod ha? public typ? check(int value) { return value < 0; d) Vad blir resultatet av nedanstående kod? int a = 3; int b = 4; a = a + b; b = a - b; a = a - b; System.out.println(a + ", " + b); e) I klassen Friends finns deklarationen private ArrayList<Person> myfriends; I en metod i denna klass finns uttrycket this.myfriends.get(3).getname().equals(n) I vilken klass finns metoden getname? 1) int 2) void 3) boolean 4) String 1) Kompileringsfel 2) Exekveringsfel 3) Utskriften 3, 3 4) Utskriften 3, 4 5) Utskriften 4, 3 6) Utskriften 4, 4 1) I klassen Friends 2) I klassen Person 3) I klassen ArrayList 4) I klassen String f) Satsen double x = (int)(1 + 3/2.0) + 3; resulterar i 1) Kompiteringsfel 2) Exekveringsfel 3) x får värdet 5.0 4) x får värdet 5 5) x får värdet 5.5

Här följer ett antal uppgifter på klassen Pair. Denna klass ska lagra två heltal x och y som instansvariabler. A2. Skriv deklarationen av de två instansvariablerna. private int x; private int y; A3. Skriv en konstruktor som tar emot och sätter värden på de två instansvariablerna. public Pair(int x, int y) { this.x = x; this.y = y; A4. Skriv en parameterlös konstruktor som sätter instansvariablerna till 1. public Pair() { this.x = 1; this.y = 1; A5. Skriv en tostring-metod som returnerar paret omgivet av parenteser och separerat av kommatecken. Exempel på resultat: (3, 4). public String tostring() { return "(" + x + ", " + y + ")"; A6. Skriv en main-metod som demonstrerar användningen av konstruktorerna och tostring-metoden. public static void main(string[] args) { Pair p1 = new Pair(); Pair p2 = new Pair(3, 4); System.out.println("p1: " + p1); System.out.println("p2: " + p2);

A7. Skriv de satser som behövs för att läsa in två heltal från tangentbordet och skapa ett Pair-objekt med av dessa värden som instansvariabler. Du behöver inte skriva några ledtexter och inte heller kontrollera att det verkligen går att läsa heltal. Scanner scan = new Scanner(System.in); int x = scan.nextint(); int y = scan.nextint(); Pair p = new Pair(x, y); Kommentar: Många missade denna uppgift. I den bilagda referenssidan står det hur man kopplar en scanner till tangentbordet och hur man läser heltal. Resten av uppgifterna handlar om klasserna Customer, Desk och Store som används i programmet för butikssimulering. Se beskrivningen och koden i bilagorna! Varje klass innehåller en main-metod och utskrifterna från dessa ligger som kommentarer sist i varje klass. A8. Skriv metoden done() i klassen Customer som returnerar true om kunden har 0 (eller negativt antal) varor annars false. public boolean done() { return load <= 0; A9. Skriv en parameterlös konstruktor till klassen Desk som skapar en stängd kassa och ett arraylistobjekt med 0 kunder i. public Desk() { this.open = false; this.queue = new ArrayList<Customer>();

A10. Skriv metoden add i klassen Desk. Metoden ska ta emot ett Customer-objekt som parameter och lägga det sist i kassans kö. Metoden ska inte returnera något värde. public void add(customer c) { queue.add(c); A11. Klassen Store innehåller en array av Desk-objekt (se kodbilagan). Skriv klart konstruktorn nedan som skapar en array med n Desk-objekt och öppnar det första av dessa. public Store(int n) { thedesks = new Desk[n]; for (int i=0; i<n; i++) { thedesks[i] = new Desk(); thedesks[0].open(); A12. Metoden findfirstclosed() i klassen Store ska leta upp index för den första stängda kassan (alltså den stängda kassa som har lägst index). Om det inte finns någon stängd kassa ska -1 returneras. Skriv klart metoden! public int findfirstclosed() { for (int i=0; i<thedesks.length; i++) { if (!thedesks[i].isopen()) { return i; return -1;

Del B (för betyg 4 och 5) Svaren skrivs på lösa papper med ny uppgift på nytt papper. B1. Skriv metoden step() i klassen Desk. Metoden ska ta ett tidssteg i kassan. Om första kunden i kön är färdigbehandlad ska den tas bort ur kön. Om kunden ej är klar ska en av kundens varor skannas. public void step() { if (!queue.isempty()) { Customer c = queue.get(0); if (c.done()) { queue.remove(0); else { c.unload(); Observera att man måste kontrollera att kön inte är tom - det går inte att göra get(0) om kön är tom! B2. Skriv metoden public ArrayList<Customer> removehalfqueue() i klassen Desk som flyttar kunderna från den bakre halvan av kassans kö till en ny arraylist och returnerar denna som värde. Se programkörningen för klassen Store! Om köns längd är udda ska den kvarvarande delen vara större. Exempel: Om kön innehåller 7 kunder ska de 3 bakersta tas ut och de 4 främsta stå kvar. public ArrayList<Customer> removehalfqueue() { ArrayList<Customer> result = new ArrayList<Customer>(); int n = queue.size(); int i = n/2; if (n%2 == 1) { i++; while (i < queue.size()) { result.add(queue.remove(i)); return result; Observera att size() minskar när man gör remove. Dessutom flyttas alla bakomvarande element fram ett steg. B3. Skriv metoden opennewdesk() i klassen Store som, med hjälp av findfirstclosed() (uppgift A12), öppnar en ny kassa. Om det inte finns någon stängd kassa görs ingenting. Om det inte är den första kassan som ska öppnas ska hälften av kön från kassan omedelbart före denna kassa läggas in som den nyöppnade kassans kö. Se bilagan som beskriver butikssimuleringen! Tips: Se vilka metoder det finns för att öppna en kassa! public void opennewdesk() { int i = findfirstclosed(); if (i == -1) { return; else if (i==0) { thedesks[i].open(); else { thedesks[i].open(thedesks[i-1].removehalfqueue()); B4. Skriv metoden Desk findshortestqueue() som returnerar den öppna kassa som har kortast kö. (Om flera kassor har lika kort kö så går det bra med vilken som helst av dem.)

public Desk findshortest() { Desk shortest = null; for (Desk d: thedesks) { if (d.isopen() && shortest==null) { shortest=d; else if (d.isopen() && d.queuelength() <= shortest.queuelength()) { shortest = d; return shortest; Observera att man måste kontrollera att man väljer en öppen kassa och att man, på något sätt, ska hantera fallet att alla kassor är stängda. I detta fall har vi valt att returnera null. B5. Antag att man vill samla statistik (typ maxtid, medelvärde, standardavvikelse,... ) för hur lång tid (hur många tidsteg) kunderna tillbringat i systemet från det att de ställde sig i kön tills de blivit färdigbehandlade. a) Skriv den nya eller ändrade kod som behövs i klassen Customer. b) Skriv den nya eller ändrade kod som behövs i klassen Desk. c) Skriv den nya eller ändrade kod som behövs i klassen Store. Observera: Du ska inte skriva koden för statistikberäkningarna utan bara se till att data för dessa beräkningar finns tillgängliga till exempel i en array, en araylista eller ett Measurements-objekt. a) I klassen Customer: Kunderna måste förses ytterligare en instansvariabel som anger ankomsttid. Den kan sättas av konstruktorn när kunden skapas. Alternativt kan man föra in en global klocka public static int gettime() i klassen Store. (Ett sämre alternativ är att ge kunden åldern 0. Då måste man för varje steg gå igenom alla kunder och öka deras ålder.) b) I klassen codedesk Låt step-metoden returnera den kund som tas ut (eller, om man har en global klocka, kundens livstid ). c) I klassen Store Använd en arraylist eller ett Measurements-objekt som lagrar tider för kunder som blir klara. Butikens step-metod ska ta emot kunderna som kommer ut från de olika kassorna, beräkna deras tid i kösystemet och lägga den tiden i arraylistan.