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

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

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

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.

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

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.

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.

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.

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.

Tentamen i Programmeringsteknik I

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.

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)

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 OOP

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Tentamen i Programmeringsteknik I, ES,

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.

Malmö högskola 2008/2009 CTS

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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

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.

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

Tentamen OOP

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

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

TENTAMEN OOP

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

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 )

LyckaTill önskar Anna

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Enkla variabler kontra referensvariabel

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Mer om klasser och objekt

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

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

OOP Objekt-orienterad programmering

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

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

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

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

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]

Design av en klass BankAccount som representerar ett bankkonto

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

TENTAMEN OOP

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

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

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

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

Föreläsning 5-6 Innehåll

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

Tentamen. Lösningsförslag

Tentamen i Grundläggande programmering STS, åk

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

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

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

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

Att öva på och förstå ett program med flera samverkande klasser.

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

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

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)

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

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

OOP Tentamen

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

Objektorienterad programmering i Java

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

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

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

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

OOP Omtenta

Objektsamlingar i Java

Föreläsning 3-4 Innehåll

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

Objekt och klasser - Introduktion

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

Laboration A Objektsamlingar

Transkript:

Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 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. 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. En korrekt lösning har ej publika eller onödiga instansvariabler, har god läslighet, upprepar ej identisk kod och utnyttjar givna och tidigare skrivna metoder och klasser. För att bli godkänd krävs att del A är väsentligen korrekt. Om del A inte är godkänd rättas inte del B. För betyg 4 och 5 bedöms hela tentan. För betyg 5 skall alla uppgifter vara i stort sett korrekta. Lycka till! 1

2

1 Del A (obligatorisk för alla) A1. Ringa in rätt svar och lämna in denna sida tillsammans med dina övriga svar! a) Givet följande metodhuvud double dothings(double arg); Vilken av vidstående satser ger ej kompileringsfel? b) Koden String[] arr = new String[3]; arr[3] = "Hej"; System.out.println(arr[3]); c) ArrayList är en praktisk datastruktur för att d) Koden ArrayList<String> a = new ArrayList<String>(); a.add("hej"); a.add(tjena"); System.out.println(a.get(0)); 1 double x = dothings(5); x double y = dothings(); 2 int z = dothings(4.7); 1 ger utskriften Hej x medför ArrayOutOfBoundsException 2 ger utskriften null 1 den kan växa när man vill lägga till fler element x man kan använda indexoperatorn [ ] 2 den kan lagra primitiva datatyper utan omslagsklasser 1 ger utskriften Hej x ger utskriften Tjena 2 ger utskriften null e) En konstruktor 1 skapar en ny klass x anropas alltid när ett objekt skapas 2 har returtypen void f) Koden public class Scope { private int x = 10; public Scope(int x) { x = x + 5; public int getx() { return x; public static void main(string[] a) { int x = 1; Scope s = new Scope(x); System.out.println(s.getX()); 1 skriver ut 1 x skriver ut 10 2 skriver ut 15 3

g) Uttrycket "" + 4 + "." har typen 1 String x double 2 int h) Givet en arraylist a med ett antal heltal. Vi vill iterera över alla element. Vilket av alternativen är inte korrekt? 1 for (int i=0; i<a.size(); i++) x for (int i=0; i<=size(); i++) 2 for (int i=0; i!=a.size(); i++) 4

A2. Skriv en klass MoneyMachine (en förenklad bankomat) med följande skelett public class MoneyMachine { // Instansvariabler private String id; // namn private int balance; // saldo... // Konstruktorer public MoneyMachine(String id, int saldo) {... public MoneyMachine() {... // Metoder public String tostring() {... public boolean withdraw(int amount) {......... Alla belopp uttrycks i kronor (heltal). Skriv a) En instansvariabel som anger hur många uttag som gjorts från maskinen. b) Konstruktorn med två parametrar som anger namn (String) och en summa pengar (int) maskinen initialt skall innehålla. c) Den parameterlösa konstruktorn som ger maskinen ett standardnamn och ett nollsaldo. d) En tostring-metod. e) Metoden public boolean withdraw(int amount) där amount anger önskat belopp. Om saldot är större än eller lika med önskad belopp ska metoden minska saldot med beloppet och returnera true. Om saldot är mindre än det önskade beloppet skall metoden lämna saldot oförändrat och returnera false. f) En metod som returnerar antalet uttag som gjorts. g) En metod som som fyller på maskinen med ett belopp som anges som parameter. Metoden skall inte returnera eller skriva ut något. 5

Lösning även till B2 import java.util.arraylist; // För uppgift B3 public class MoneyMachine { private String id; private int balance; private int numberoftransactions; private ArrayList<Transaction> transactions; // B3 public MoneyMachine(String id, int amount) { this.id = id; this.balance = amount; this.transactions = new ArrayList<Transaction>(); this.transactions.add(new Transaction(amount)); // B3 // B3 public MoneyMachine() { this("no ID", 0); public boolean withdraw(int amount) { if (amount > balance) return false; else { transactions.add(new Transaction(-amount)); // B3 balance -= amount; return true; public int getbalance() { return balance; public int getnumberoftransactions() { return numberoftransactions; public void deposit(int amount) { balance += amount; transactions.add(new Transaction(amount)); // B3 public String tostring() { return id + ": " + balance; public void listhistory() { // B3 System.out.println("Transaktionshistoria för " + id); for (Transaction t : transactions) { System.out.println(t); System.out.println("Aktuellt saldo: " + getbalance()); A3. Skriv klassen TestMoneyMachine. Klassen ska innehålla en main-metod som gör följande: Skapar 100 MoneyMachine-objekt och spara dem med hjälp av en array. Fyller alla med (int)(math.random()*1000) kr. Skriver ut informationen om den första maskinen med hjälp av dess tostringmetod. Försöker ta ut 500:- från varje maskin. Räknar och skriver ut hur många det lyckades för. 6

Exempel på utskrift: Machine 0: 16 Antal lyckade uttag: 44 Lösning: public class TestMoneyMachine { public static void main(string[] args) throws InterruptedException { MoneyMachine[] machines = new MoneyMachine[100]; for (int i=0; i<machines.length; i++) { machines[i] = new MoneyMachine("Machine " + i, (int)(math.random()*1000)); System.out.println(machines[0].toString()); int number = 0; for(moneymachine mm: machines) { if (mm.withdraw(500)) { number++; System.out.println("Antal lyckade uttag: " + number); 7

Del B (Endast för dem som vill ha betyget 4 eller 5) Observera: Denna del rättas endast om del A är godkänd! B1. Nedanstående klass ska kunna användas av MoneyMachine för att hålla reda på vilka transaktioner som gjorts. Varje transaktion skall representeras med ett belopp (positivt för insättning, negativt för uttag) och en tidpunkt. I java.util finns klassen Date. Genom att anropa den parameterlösa konstruktorn till denna erhålles ett objekt som beskriver datum och klockslag när objektet skapas. import java.util.date; public class Transaction { // Instansvariabler... // Konstruktorer... public int getamount() { return this.amount; public Date gettime() { return this.time; public String tostring() { String result = "["; result += this.time.tostring(); result += " : " + this.amount + "kr]"; return result; public static void main(string[] args) throws InterruptedException { Transaction t1 = new Transaction(); Thread.sleep(2000); // För att få annan tidpunkt Transaction t2 = new Transaction(100); Thread.sleep(5000); Transaction t3 = new Transaction(200); System.out.println(t1); System.out.println(t2); System.out.println(t3); /* Möjlig output när main-metoden körs: [Mon Jun 01 17:08:29 CEST 2015 : 0kr] [Mon Jun 01 17:08:31 CEST 2015 : 100kr] [Mon Jun 01 17:08:36 CEST 2015 : 200kr] */ a) Skriv de instansvariabler som behövs Lösning: private Date time; private int amount; b) Skriv de konstruktorer som behövs för att main-metoden ska fungera. 8

Lösning: public Transaction() { this(0); public Transaction(int amount) { this.time = new Date(); this.amount = amount; B2. Modifiera klassen MoneyMachine så att den med hjälp klassen Transaction lagrar alla transaktioner som gjorts. Följande kod MoneyMachine mm = new MoneyMachine("TestMachine", 500); mm.listhistory(); Thread.sleep(2000); mm.deposit(100); Thread.sleep(3000); mm.deposit(100); Thread.sleep(1000); mm.withdraw(150); mm.withdraw(1000); // Beviljas ej - ska inte med i historiken mm.listhistory(); ska producera nedanstående utskrift Transaktionshistoria för TestMachine [Thu Jun 04 18:39:12 CEST 2015 : 500kr] Aktuellt saldo: 500 Transaktionshistoria för TestMachine [Thu Jun 04 18:39:12 CEST 2015 : 500kr] [Thu Jun 04 18:39:14 CEST 2015 : 100kr] [Thu Jun 04 18:39:17 CEST 2015 : 100kr] [Thu Jun 04 18:39:18 CEST 2015 : -150kr] Aktuellt saldo: 550 Ange vilka kompletteringar som behöver göras i klassen Bankapparat! Lösning: Se A2 B3. Skapa en egen klass för komplexa tal. Klassen ska lagra realdel och imaginärdel som separata flyttal. Det ska finnas tre konstruktorer, en parameterlös med nollvärden, en för att sätta enbart realdelen och en för att sätta både real- och imaginärdelen. Det ska också finnas metoder för att addera och multiplicera instanser av klassen på lämpliga sätt. Du ska dessutom skriva metoderna tostring och equals, samt en main-metod som testar alla konstruktorer och metoder i klassen. Det är bara din main-metod som direkt får skriva något på skärmen eller ta någon inmatning. Ledning: Addition av komplexa tal kan uttryckas som att addera realdelen och imaginärdelen separat. Multiplikation av komplexa tal kan uttryckas som: Re(a * b) = Re(a) * Re(b) - Im(a) * Im(b) Im(a * b) = Re(a) * Im(b) + Im(a) * Re(b) 9

public class Complex { private double re; private double im; public Complex(double re, double im) { this.re = re; this.im = im; public Complex() { this(0., 0.); public Complex(double re) { this(re, 0); public String tostring() { return "(" + this.re + ", " + this.im + ")"; public boolean equals(complex c) { return this.re==c.re && this.im==c.im; public Complex add(complex c) { return new Complex(this.re + c.re, this.im + c.im); public Complex multiply(complex b) { double re = this.re*b.re - this.im*b.im; double im = this.re*b.im + this.im*b.re; return new Complex(re, im); public static void main(string[] args) { Complex zero = new Complex(); Complex one = new Complex(1); Complex i = new Complex(0, 1); System.out.println("" + one + " + " + i + " = " + one.add(i)); System.out.println("" + i + " * " + i + " = " + i.multiply(i)); System.out.println(one.equals(i)); System.out.println(i.equals(i)); System.out.println(one.add(i).equals(i.add(one))); 10