Tentamen ID1004 Objektorienterad programmering April 7, 2015

Relevanta dokument
Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 3-4 Innehåll

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

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

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

Föreläsning 5-6 Innehåll

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

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

LÖSNINGSFÖRSLAG TENTAMEN

Arrayer (fält)

Tentamen OOP

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

TENTAMEN OOP

Programmering för språkteknologer II, HT2011. Rum

Föreläsning REPETITION & EXTENTA

Instuderingsfrågor, del D

Typkonvertering. Java versus C

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

DAT043 Objektorienterad Programmering

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

(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

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Kurskod D0010E Datum Skrivtid 5tim

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

TDDC77 Objektorienterad Programmering

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Tentamen Grundläggande programmering

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

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

Objektorienterad programmering i Java

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Laboration 1 - Grunderna för OOP i Java

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

TENTAMEN OOP

TENTAMEN OOP

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

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

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:

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

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

Tentamen, EDAA10 Programmering i Java

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

OOP Objekt-orienterad programmering

Tentamen i Programmeringsteknik I, ES,

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.

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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

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

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 2, vecka 8: Repetition

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]

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Del A (obligatorisk för alla)

Objektorienterad Programmering (TDDC77)

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

PROGRAMMERING-Java Omtentamina

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 Grundläggande programmering STS, åk 1 lördag

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

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

Objektorienterad Programmering (TDDC77)

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Tentamen i Programmeringsteknik I

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Lösningsförslag: Instuderingsfrågor, del D

Klassdeklaration. Metoddeklaration. Parameteröverföring

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

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

F4. programmeringsteknik och Matlab

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

KOMPLETTERANDE HEMTENTAMEN TDDB53

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

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

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

Tentamen, EDA501 Programmering M L TM W K V

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

SMD 134 Objektorienterad programmering

TDDD78 Viktiga begrepp, del 2

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

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Transkript:

Ordinarie tentamen för ID1004 Objektorienterad programmering, 7 april 2015 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av en obligatorisk del och en extra del. För ett godkänt betyg på hela tentamen måste den obligatoriska delen vara godkänd. Detta berättigar till betyg E på tentamen. För högre betyg kan ytterligare uppgifter lösas i den extra delen. Examinator förbehåller sig möjligheten att justera tentamensbetyget med hänsyn till en bedömning av helhetsintrycket. Den obligatoriska delen ger maximalt 34 poäng. För godkänt krävs 22 poäng eller mer. Läs noga igenom alla frågorna först och planera tiden. Om inget annat uttryckligen sägs så visas och efterfrågas kod och uttryck ur Java version 6 eller senare. Var noga med metoders returtyper. Obligatorisk del Fråga 1 (6p) Deklarera och initiera de nedan beskrivna variablerna: 1. En statisk variabel med dubbel flyttalsprecision som heter alfa och som är initierad till halva värdet av Math.PI. public static double alfa = Math.PI / 2d; 2. En klassvariabel som heter brus och som kan ta heltalsvärden i området -100 +100. Variabeln ska endast vara åtkomlig i den klass där den är definierad, och inte använda mer än två byte minne. private short brus = 0; private byte brus = 0; 3. En referensvariabel till instanser av klassen StringBuilder. Variabeln ska gå att ärva, men inte vara synlig utanför klassens package. Variabeln ska ha namnet sb och initieras till att inte referera till någonting. protected StringBuilder sb = null; Fråga 2 (5p) Givet denna variabeldeklaration: protected float [] r = new float[200]; 1. Vilken datatyp har variabeln r? Referens till array of float. 2. Vilken elementtyp har r? float 1

3. Hur många element har r? 200 4. Vilket index har första elementet? 0 5. Vilket index har sista elementet? 199 Fråga 3 (2p) Deklarera med en passande datatyp en variabel kallad antal och tilldela den en array med plats för 101 heltal. int [] antal = new int [101]; Fråga 4 (1p) Vilket sanningsvärde beräknas detta boolska utryck till? (true && false)!false true Fråga 5 (2p) Givet denna kod: int a = /* något värde */ ; int b = /* något värde */ ; Konstruera ett villkorsuttryck som är sant om och endast om variabeln a är större än 7 samtidigt som variabeln b är i området -5 +5 (inklusive). (a > 7) && (-5 <= b) && (b <= 5) Fråga 6 (2p) Skriv en if-sats som tilldelar variabeln ep värdet 0 om ep är större än eller lika med variabeln epend. if (epend <= ep) ep = 0; Fråga 7 (1p) Hur många varv gör denna loop? int i = 5; while (i < 10) { i++; Den gör 5 varv. Fråga 8 (2p) Skriv en for-loop som summerar alla tal i arrayen int [] ar. Lägg summan i variabeln int sum. int sum = ar[0]; 2

for (int i = 1; i < ar.length; i++) sum += ar[i]; Fråga 9 (1p) Vilken returtyp har följande metoddeklaration? public static float floor (float d); float Fråga 10 (2p) Arean för en cirkel är A=πr 2. Skriv en metod area som tar emot radien i dubbel flyttalsprecision och returnerar arean för motsvarande cirkel. public double area(double r) { return Math.PI * r * r; 3

Fråga 11(10p) Använd endast klasser, interface, arv och polymorfism (inga extra variabler utöver namnet) för att modellera följande med hjälp av Java: Det finns djur, och alla djur har ett namn (t ex lejon, val, pingvin). Djur kan vara fåglar, landdjur eller vattendjur. Pingviner och albatrossar är fåglar. Lejon och varaner är landdjur. Valar och hajar är vattendjur. Albatrossar kan flyga men det kan inte pingviner. Lejon och valar är däggdjur. Fåglar och varaner lägger ägg. Att göra: Rita en graf över modellen. Visa tydligt vad som är klass, interface och arv. Det är tillåtet, men inget krav, att även skriva Java-kod som implementerar modellen. Antag att variabeln LinkedList<Djur> alladjur existerar och innehåller djur ur modellen. Skriv en loop som går igenom alladjur och skriver ut namnen på de djur som är både landdjur och lägger ägg. for (Djur d : alladjur) if (d instanceof Landdjur) if (d instanceof LäggerÄgg) System.out.println(d.name); 4

5

Extra del Med godkänd obligatorisk del, ger poäng på extradelen: 4-5 D, 6-7 C, 8-9 B och 10-12 A. Fråga 12 (8p) Kasinospelet Roulette spelas med hjälp av ett snurrande hjul, en kula och en spelplan med olika fält. Ett Europeiskt roulettehjul har 37 olika fack som kulan kan landa i, numrerade 0, 1, 2, 36. Numren 1-36 är antingen svarta eller röda. Nollan är grön, och om den kommer upp så vinner kasinot. Det finns flera olika sätt att spela på; man kan satsa på ett enskilt nummer, rött eller svart, udda eller jämt, högt eller lågt, eller på flera nummer samtidigt. Vi antar att ett online-kasino för sin webbsajt behöver ett antal statiska Java-metoder som hjälper till att avgöra om ett antal vinstalternativ är sanna eller inte. Parametern k är i samtliga fall det nummer som kulan har valt. // manque, den lägre halvan av nummerområdet, 1 18 (inklusive) public static boolean manque (int k) public static boolean manque (int k) { return (1 <= k) && (k <= 18); // passe, den övre halvan av nummerområdet, 19 36 (inklusive) public static boolean passe (int k) public static boolean passe (int k) { return (19 <= k) && (k <= 36); // pair, ett jämnt nummer public static boolean pair (int k) private static boolean odd (int k) { return k % 2 == 1; public static boolean pair (int k) { return (0 < k) &&!odd(k); // impair, ett udda nummer public static boolean impair (int k) public static boolean impair (int k) { return (0 < k) && odd(k); // rouge, ett rött nummer 6

public static boolean rouge (int k) private static boolean range1 (int k) { return ((1 <= k) && (k <= 10)) ((19 <= k) && (k <= 28)); private static boolean range2 (int k) { return ((11 <= k) && (k <= 18)) ((29 <= k) && (k <= 36)); public static boolean rouge (int k) { return (range1(k) && odd(k)) (range2(k) &&!odd(k)); // noir, ett svart nummer public static boolean noir (int k) public static boolean noir (int k) { return (range1(k) &&!odd(k)) (range2(k) && odd(k)); Rött eller svart avgörs av dessa regler: I områdena 1 10, 19 28 är udda nummer röda och jämna nummer svarta. I områdena 11 18, 29 36 är udda nummer svarta och jämna nummer röda. Kom ihåg att om kulan landar på 0 så vinner kasinot och inget av vinstalternativen ovan är sant. Skriv implementationer för samtliga 6 metoder. Använd privata hjälpmetoder där så är påkallat. 7

Fråga 13 (6p) Givet följande interface: public interface Filter<T> { public boolean accept (T e); och detta program: public class Solution { public static String [] sieve (Filter<String> fs, String [] candidates) { /* KOD FATTAS HÄR */ int count = 0; for (String s : candidates) if (fs.accept(s)) count++; String [] rtn = new String [count]; count = 0; for (String s : candidates) if (fs.accept(s)) rtn[count++] = s; return rtn; public static void main(string[] args) { String [] candidates = {"adam", "sonny", "beata", "sixten", "hugo"; Filter<String> fs = new Filter<String>() { public boolean accept (String s) { return s.startswith("s"); ; String [] selected = sieve(fs, candidates); System.out.println(java.util.Arrays.toString(selected)); a) Komplettera kroppen i metoden sieve så att metoden returnerar en array med exakt de strängar som väljs ut av filtret fs. b) Vilka namn kommer programmet att skriva ut? sonny och sixten 8