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

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

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

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!

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 vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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.

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

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.

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

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.

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

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

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

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Tentamen i Programmeringsteknik I, ES,

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

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]

Lägg uppgifterna i ordning. Skriv uppgiftsnummer 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?

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

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

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

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.

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

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.

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Del A (obligatorisk för alla)

Del A (obligatorisk för alla)

Laboration A Objektsamlingar

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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 Programmeringsteknik II Inledning. Anmälningskod:

tentaplugg.nu av studenter för studenter

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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

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

OOP Objekt-orienterad 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

PROGRAMMERINGSTEKNIK TIN212

Tentamen, EDAA20/EDA501 Programmering

Objektsamlingar i Java

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

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

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

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Malmö högskola 2008/2009 CTS

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

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

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

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

TENTAMEN OOP

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

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

2D1339 Programkonstruktion för F1, ht 2003

Tentamen i Grundläggande Programvaruutveckling, TDA548

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

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Tentamen i Algoritmer & Datastrukturer i Java

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

LyckaTill önskar Anna

Tentamen i Grundläggande programmering STS, åk

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

public boolean containskey(string key) { return search(key, head)!= null; }

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

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

TENTAMEN OOP

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

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. Lösningsförslag

Lösningsförslag till exempeltenta 1

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

Föreläsning 5-6 Innehåll

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

Tentamen OOP

Objektorienterad programmering i Java I

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Transkript:

Tentamen Programmeringsteknik I 202-0-25 Skrivtid: 400-700 Hjälpmedel: Java-bok 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. 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. Programkod 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. Det är totalt 40 poäng på skrivningen. Betygsgränser: 8 ger säkert 3, 26 ger säkert 4, 34 ger säkert 5. Lycka till! Anna och Tom

Inledning I ett bibliotek brukar böckerna (bland annat) sorteras efter författare och titel. Att hålla böckerna sorterade innebär dock en hel del arbete. Ett alternativ vore att bara placera in böckerna i första bästa hylla som har plats och låta ett datorsystem hålla reda på var böckerna finns. När man vill låna en bok ger man dess författare och titel och erhåller då vilken hylla och var på hyllan boken finns. När man återlämnar boken ställer man boken sist på den hylla systemet anger. I bilagan finns ett ofullständigt Java-program som hjälper till med detta. Programmet har tre klasser: Book, Shelf och Library. Klassen Book representerar ett exemplar av en given bok (det kan finnas flera exemplar av samma bok). Varje bok-objekt skall ha en författare, en titel och en bredd som anger hur många mm boken tar av ett hyllplan. Slutligen finns det information vilken hylla (hyllans id-nummer) och exemplarets ordningsnummer ( position ) på hyllan (boken längst till vänster har position, nästa position 2 etc.) Position 0 anger att boken inte har någon plats tilldelad. Klassen Shelf representerar ett hyllplan som innehåller att antal Book-objekt. Antalet böcker som ryms på ett hyllplan beror dels på hyllplanets längd och dels på böckernas bredd. Eftersom antalet är obekant och varierar är det lämpligt att representera innehållet med en ArrayList. Hyllplanet håller reda på hur mycket av utrymmet (i mm) på hyllan som är upptaget. Varje hyllplan har vidare ett id-nummer. Ett hyllplan med två bokobjekt kan illustreras med följande figur: ArrayList Shelf Book thebooks title Kris shelfid length 00 author width 47 Boye occupied 85 position 2 Book shelf title author Liftarens guide till galaxen width position 38 Adams shelf Anmärkning: Måtten (hyllängd och bokbredd) är inte så verklighetstrogna - de är valda för att körexemplet längre ned skall kunna illustrera vad som händer på ett enkelt sätt. Klassen Library representerar ett bibliotek. Ett bibliotek består av ett antal hyllor. Ett 2

bibliotek byggs för ett visst maxantal hyllor. Själva hyllorna skaffas successivt allteftersom behov uppstår (dvs när man inte hittar plats för en bok). Eftersom det finns ett maxantal hyllor och vi inte behöver någon dynamik använder vi en array för att representera samlingen av hyllor. Vi tänker oss (åtminstone tills vidare) att biblioteket alltid skaffar hyllor av en standardlängd och låter således denna längd vara ett attribut i klassen Library. Ett bibliotek med plats för 7 hyllor och med 4 anskaffade hyllar kan illustreras med följande figur: array theshelfs Library shelfsize 00 Shelf thebooks shelfid length occupied 00 85 se föregående figur Uppgifter. I klassen Book: a) Skriv klar konstruktorn public Book(String author, String title, int width) som skapar ett bok-objekt utan att tilldela det någon platsinformation. (2p) Svar: public Book(String author, String title, double width) { this.title = title; this.author = author; this.width = width; // in mm position = 0; // för tydlighetens skull - ej nödvändig shelf = 0; // för tydlighetens skull - ej nödvändig b) Skriv klar tostring-metoden som returnerar författare och titel. Om det finns platsinformation (dvs om position är större än 0) skall platsinformationen (hylla och position se körexemplen) inkluderas. (2p) Svar: public String tostring() { String r = author + ": " + title; if ( position>0 ) { r = r + " <" + shelf + ", " + position + ">"; return r; c) Skriv klar metoden boolean equals(book b) som returnerar true om denna bok har samma titel och författare som boken b, annars false. (2p) 3

Svar: public boolean equals(book b) { return author.equals(b.author) && title.equals(b.title); 2. I klassen Shelf: a) Skriv klar metoden int getfreespace() som returnerar hur mycket ledigt utrymme som finns på hyllan. (2p) Svar: public int getfreespace() { return length - occupied; b) Skriv klar metoden boolean add(book b) som, om det går, lägger in boken b som sista bok på hyllan. Metoden måste underhålla såväl hyllans som bokens instansvariabler. Om det gick att ställa boken på hyllan skall metoden returnera true annars false. (4p) Svar: public boolean add(book b) { if (b.getwidth() > getfreespace()) { return false; else { b.setposition(thebooks.size()+); b.setshelf(shelfid); thebooks.add(b); occupied += b.getwidth(); return true; c) Skriv klar metoden ArrayList<Book> findbyauthor(string author) som skapar och returnerar en lista över de exemplar av böcker skrivna av angiven författare som finns på denna hylla. (4p) Svar: public ArrayList<Book> findbyauthor(string author) { ArrayList<Book> res = new ArrayList<Book>(); for (int i= 0; i<thebooks.size(); i++) { Book b = thebooks.get(i); if (author.equals(b.getauthor())) { res.add(b); return res; d) Skriv klar metoden Book remove(int position). Metoden skall kontrollera att position har ett legalt värde och därefter ta bort boken på denna position. Metoden måste uppdatera positionsangivelserna för kvarvarande böcker liksom även informationen om upptaget utrymme. (4p) 4

Svar: public Book remove(int position) { if (position< position>thebooks.size()) { System.out.println("Shelf " + shelfid + " has no book at position " + position); return null; Book ret = thebooks.remove(position-); ret.setposition(0); occupied = occupied - (int)ret.getwidth(); // Update the positions for the books after the removed book for (int i=position-; i<thebooks.size(); i++) { Book b = thebooks.get(i); b.setposition(i+); return ret; 3. I klassen Library: a) Skriv klar konstruktorn Library(int librarysize, int shelfsize) som skapar ett bibliotek med plats för librarysize hyllor, alla av storlek shelfsize. (2p) Svar: public Library(int librarysize, int shelfsize) { theshelfs = new Shelf[librarySize]; this.shelfsize = shelfsize; onloan = new ArrayList<Book>(); // För användning i uppgift 3 c b) Skriv klar metoden boolean add(book book) som letar upp en hylla med plats för boken book och lägger in den där. Om boken inte får plats på någon existerande hylla skall en ny skapas. Om det inte går att skapa fler hyllor skall ett felmeddelande ges och false returneras. Om metoden lyckades lagra boken skall true returneras. (5p) Svar: public boolean add(book book) { // Find a shelf with enough space for (int i=0; i<theshelfs.length; i++) { if ( theshelfs[i]==null ) { theshelfs[i] = new Shelf(shelfSize, i+); if (theshelfs[i].getfreespace()>book.getwidth()) { theshelfs[i].add(book); return true; System.out.println("Library full! Build a new one!"); return false; c) Koden i det givna systemet håller inte reda på utlånade böcker. Detta kan dock åtgärdas genom några kompletteringar i klassen Library. Vilka? Skriv den kod som behövs! (7p) Svar: Lägg till en instansvariabel ArrayList<Book> onloan som innehåller utlånade exemplar. Skriv metoderna borrowbook(int shelf, int position) och returnbook(string author, String title). (Parametrarna till borrowbook skulle också kunna vara author och title.) 5

Kod: public Book borrowbook(int shelf, int position) { Book b = remove(shelf, position); System.out.println("Borrowed: " + b); onloan.add(b); return b; // 3 c public void returnbook(string author, String title) { // 3 c Book b = new Book(author, title, 0); for(int i = 0; i<onloan.size(); i++) { if (b.equals(onloan.get(i))) { add(onloan.get(i)); onloan.remove(i); return; System.out.println("Not borrowed from this library: " + b); 4. Besvara kortfattat följande uppgifter/frågor a) Vad är en instansvariabel? b) Vad är en metod? c) Vad menas med iteration? d) Vad är en konstruktor? e) Vad sker när ett Java-program kompileras? f) Vad är det för skillnad på formella och aktuella parametrar? (6p) 6