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

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

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

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

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

Del A (obligatorisk för alla)

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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

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

Del A (obligatorisk för alla)

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.

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.

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

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

Tentamen i Programmeringsteknik I

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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.

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

TENTAMEN OOP

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

Tentamen OOP

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

Malmö högskola 2008/2009 CTS

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

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

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

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

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

TENTAMEN OOP

TENTAMEN OOP

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

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 )

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

OOP Objekt-orienterad programmering

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

Tentamen. Lösningsförslag

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

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

Tentamen i Programmeringsteknik I, ES,

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

Objektorienterad programmering i Java

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

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

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Föreläsning 3-4 Innehåll

Objektorienterad programmering D2

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. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

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

Tentamen, EDAA10 Programmering i Java

LÖSNINGSFÖRSLAG TENTAMEN

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]

Objektsamlingar i Java

Programmeringsteknik I. Föreläsning 3: Klasser och arrayer

Laboration A Objektsamlingar

tentaplugg.nu av studenter för studenter

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Lösningsförslag övning 2.

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

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

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Observera. Tentamen Programmeringsteknik II Skrivtid:

LyckaTill önskar Anna

Del A (obligatorisk för alla)

Objekt och referenser

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

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

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

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Transkript:

Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Fyll i försättssidan fullständigt. Såvida inget annat anges, både får och ska man bygga på lösningar till föregående uppgifter även om dessa inte har lösts. Det är tillåtet att införa hjälpmetoder och hjälpklasser. Uttrycket skriv en metod som skall alltså inte tolkas så att lösningen inte får struktureras med hjälp av flera metoder. Du behöver inte skriva import-satser för klasserna Scanner, ArrayList, Locale och inte heller för klasser i java.io. 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. Observera att betyget påverkas negativt av icke-privata eller onödiga instansvariabler, dålig läslighet, upprepning av identisk kod, underlåtenhet att utnyttja given eller egen tidigare skriven metod. Skrivningen består av två delar. Lösningarna till uppgifterna på del A1 A7 ska skrivas in i de tomma rutorna och lämnas in. Lösningarna till uppgift A8 samt uppgifterna på B-delen skrivs på lösa papper. För att bli godkänd (betyg 3) krävs att hela A-delen är i stort sett rätt löst. För betyget 4 krävs dessutom att minst hälften av uppgifterna på B-delen och betyg 5 att alla uppgifterna på B-delen är i stort sett rätt lösta. Observera att B-delen inte rättas om inte A-delen är godkänd. Lycka till!

Del A (obligatorisk för alla) A1. Koden följer garanterat namnkonventionerna dvs klasser börjar med stor bokstav, metoder och variabler med liten. Ringa in rätt svar och lämna in tillsammans med dina övriga svar! Svara bara med ett alternativ per fråga. a) Givet koden Turtle t; Vilket påstående är felaktigt? 1) t är en referenstyp 2) t är en objekttyp 3) t är ett objekt b) I uttrycket t.move(30) är 30 1) en formell parameter 2) en aktuell parameter 3) en referens? c) I uttrycket MyClass.sort(a) 1) måste sort vara en klassmetod 2) måste sort vara en instansmetod 3) kan man inte avgöra om sort är en instans- eller klassmetod d) Math är inte 1) en typ 2) en klass 3) en referens e) Vilken returtyp bör metoden nedan ha dvs vad ska... bytas mot? public... givebirth(person dad) { String n = this.n + "-"+ dad.n; String address = this.address.trim(); int age = 0; return new Person(n, address, age); 1) String 2) int 3) Person 4) void f) Hur många objekt skapas av koden nedan? (Du ska bara räkna de objekt som man ser att koden skapar) Turtle[] family = new Turtle[5]; World earth = new World(400, 400); for(int i=0; i<3; i++) { family[i] = new Turtle(earth); 1) 3 objekt 2) 4 objekt 3) 5 objekt 4) 6 objekt 5) 7 objekt

g) En instansvariabel 1) måste deklareras utanför konstruktorerna 2) måste deklareras i en konstruktor 3) måste ges ett värde i en konstruktor h) Vilket av vidstående påstående om metoden calculate kan vara sant när man ser nedanstående sats? int x = calculate(4); 1) Den kan ha en String som formell parameter 2) Den kan ha double som returtyp 3) Den kan ha double som formell parameter i) Vilket uttalande om koden nedan är sant? if ("Nisse".equals(friend)) { System.out.println("My friend"); 1) equals som anropas finns i klassen Friend 2) equals som anropas finns i klassen String 3) equals som anropas finns i klassen ArrayList 4) Koden är felaktig j) Uttrycket (double)(1 + 3/2) + 3 1) har värdet 5.0 2) har värdet 5 3) har värdet 5.5 Resten av skrivningen handlar om ett bokningssystem för säten i ett flygplan. Sätena är organiserade i rader och varje rad innehåller ett antal säten. En rad representeras av klassen Row som innehåller en array av strängar. Varje element i arrayen innehåller antingen en passagerares namn eller null om platsen är obokad. Klassen Cabin innehåller en array av Row-objekt. Klassen har metoder för att boka platser, visa bokningar och passagerarlistor samt för att spara och läsa från fil. En utskrift av en kabin med 8 rader och 5 stolar på varje rad kan se ut så här: 0 1 2 3 4 --------------- 0 [ B B.. B ] 1 [.... B ] 2 [. B. B B ] 3 [ B. B.. ] 4 [.. B. B ] 5 [..... ] 6 [..... ] 7 [. B B. B ] Bokstaven B anger att platsen är bokad och punkten att den är ledig. Såväl säten som rader numreras (för programmerarens bekvämlighet) från 0 och uppåt. Båda klasserna finns i bilagan men vissa delar av koden är utelämnade. Uppgifterna i A-delen handlar bara om klassen Row

A2. Skriv klart konstruktorn som tar emot antalet platser som ska finnas på raden public Row(int size) { A3. Skriv en metod get som returnerar namnet den som är bokad på en viss plats. Platsen ska ges som parameter. Platserna är numrerade från 0 och uppåt. Om ingen är inbokad på platsen ska null returneras. Ingen kontroll av att parametern har ett legalt värde behöver göras. A4. Skriv klart metoden printpassengers() som skriver ut namen på passagerarna skrivet en per utskriftsrad. Obokade platser ska inte skrivas. Se körexemplet! public void printpassengers() { for (int i=0; i<seats.length; i++) {

A5. Metoden find(string name) i klassen Row letar efter en passagerare med angivet namn på denna rad. Om namnet finns returneras platsnumret, annars -1. Skriv klart metoden! public int find(string name) { A6. Metoden tostring() i klassen Row ska returnera en sträng som visar vilka platser som är upptagna/lediga på raden. En ledig plats markeras med strängen ". " och en bokad men strängen " B ". Båda dessa strängar är tre tecken långa och har B respektive. som sitt mittersta tecken. Exempel: Raden [ B B.. B. B ] beskriver en rad med 7 säten varav plats 0, 1, 4 och 6 är bokade. public String tostring() { String result = ""; return "[" + result + "]";

A7. Metoden book används för att boka en plats på raden. Metoden tar emot ett platsnummer och ett passagerarnamn som parametrar. Den kontrollerar att platsnumret är giltigt samt att platsen är obokad. Om detta är uppfyllt så läggs passagerarnamnet in på platsen och true returneras. Om något av villkoren inte är uppfyllt görs ingen bokning och false returneras. Fyll i den kod som fattas! public boolean book(int seat, String passenger) { if ( ) { System.out.println("*** Illegal seat number :"+ seat); return false; else if ( ) { else { System.out.println("*** Seat already booked") return false; return true; A8. Skriv på separat papper en klass Passenger som representerar en passagerare med namn och plats dvs rad- och sätesnummer. Förse klassen med en konstruktor som tar emot dessa tre värden. Skriv också en tostring-metod som returnerar namn och platsinformation samt en public int compareto(passenger p). Metoden compareto ska jämföra passagerarnas namn och, på vanligt sätt, returnera något negativt, 0 eller något positivt beroende på ordningen mellan namnen. Skriv också en en main-metod som skapar två passagerar-objekt, skriver ut dem med hjälp av tostring-metoden och visar vad compareto-metoden returnerar med dessa två objekt.

Del B (för betyg 4 och 5) Svaren skrivs på lösa papper med ny uppgift på nytt papper. B1. Metoden public static Row load(scanner scan) i klassen Row läser radinformation med det Scanner-objekt som ges som parameter. Informationen är lagrad av savemetoden dvs först en textrad med ett heltal som anger antalet säten på raden och därefter en textrad per säte som innehåller ett namn om sätet är bokat, annars texten none. Så här kan informationen om en rad med 5 säten se ut: 5 Kalle none Olle none Zaphod Metoden ska skapa ett Row-objekt utifrån den lästa informationen. Skriv metoden! B2. Klassen Cabin representerar alla platser i kabinen genom att ha en array av Rowobjekt. Klassen har följande instansvariabler: private Row[] therows; private String flightid; Skriv konstruktorn Cabin(String flightid, int numberofrows, int rowlength) som skapar Cabin-objekt med angivna värden på instanvariablerna. Konstruktorn ska skapa såväl arrayen med rader som själva radobjekten. B3. Skriv en metod ArrayList<Passenger> passengerlist() som skapar och returnerar en arraylist med Passenger-objekt. Metoden ska alltså gå igenom alla platser i kabinen och, för varje bokad plats, skapa ett Passenger-objekt och lägga in det i en arraylist som sedan ska returneras. B4. Skriv en metod public static ArrayList<Passenger> sort(arraylist<passenger> list) som tar emot en arraylista med passagerare och skapar och returnerar en ny arraylista som innehåller samma passagerare men sorterade på namn. B5. Skriv en metod printpassengers() som skriver ut en lista över planets passagerare i bokstavsordning med en passagerare per utskriftsrad. Exempel på utskrift: Anna in row 0 at seat 2 Tom in row 2 at seat 3 Trillian in row 2 at seat 2 Zaphod in row 0 at seat 3