Tentamen ID1004 Objektorienterad programmering October 29, 2013

Relevanta dokument
Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Tentamen ID1004 Objektorienterad programmering April 7, 2015

SMD 134 Objektorienterad programmering

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

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

Programmeringsteknik I

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

TENTAMEN OOP

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Java, klasser, objekt (Skansholm: Kapitel 2)

Typkonvertering. Java versus C

TENTAMEN OOP

LÖSNINGSFÖRSLAG TENTAMEN

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

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

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

Classes och Interfaces, Objects och References, Initialization

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

Tentamen OOP

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Parameteröverföring. Exempel. Exempel. Metodkropp

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

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

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

TENTAMEN OOP

DAT043 - Föreläsning 7

Objektorienterad Programmering (OOP) Murach s: kap 12-16

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

(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

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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.

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

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

TDDC77 Objektorienterad Programmering

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Föreläsning 2, vecka 8: Repetition

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

Programmering A. Johan Eliasson

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

Objektorienterad programmering. Grundläggande begrepp

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

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

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

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

Objekt och klasser - Introduktion

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

Föreläsning 3: Booleans, if, switch

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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

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

Objektorienterad Programmering (TDDC77)

Enkla variabler kontra referensvariabel

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

TDDC77 Objektorienterad Programmering

Tentamen Grundläggande programmering

TDIU01 - Programmering i C++, grundkurs

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Generiska konstruktioner. Kursbokens kapitel 13

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

Objektorienterad programmering Föreläsning 4

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

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Föreläsning REPETITION & EXTENTA

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Objektorienterad Programmering DAT043

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

2D1339 Programkonstruktion för F1, ht 2003

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

Laboration 1: Figurer i hierarki

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

Objektorienterad Programmering (TDDC77)

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Transkript:

Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner. För ett godkänt betyg på hela tentamen måste varje sektion vara godkänt besvarad. Tentamensbetyget A-F bestäms därefter i huvudsak av den ackumulerade poängsumman (korrekt besvarade frågor) enligt tabellen nedan. Examinator förbehåller sig möjligheten att vid gränsfall justera tentamensbetyget med hänsyn till en bedömning av helhetsintrycket, inklusive att om så anses påkallat ge betyget Fx. Betyget Fx innebär en möjlighet att enligt senare överenskommelse komplettera tentamen till högst betyg E. Poäng 0-15 16-19 20-23 24-28 29-32 33-36 Tentamensbetyg F/Fx E D C B A Läs igenom alla frågorna först och planera tiden. Försök att besvara alla frågor så väl som möjligt. Om inget annat uttryckligen sägs så visas och efterfrågas kod kompatibel med Java version 6 och 7. Grundläggande syntaktiska konstruktioner och begrepp (16p) 1. (3p) Vilka av följande namn är syntaktiskt giltiga identifierare i Java? Om något namn är ogiltigt, varför är det så? a) szf01qxxnt [giltig] b) 5n_3b1k [ogiltig, börjar med siffra] c) Qp k$u2 [ogiltig, innehåller otillåtet tecken, space] 2. (2p) Vilka texter producerar kodraderna nedan? a) System.out.println ("Talet är " + (3 + 8); [Talet är 11] b) System.out.println ("Talet är " + 3 + 8); [Talet är 38] 3. (5p) Givet följande variabeldeklarationer, besvara varje fråga: int cycles, lastlengths = 0; final int MY_YEAR = 0; int tonnes, rate, year = 0; a) Hur många variabler är deklarerade? [6 st] b) Vad har variablerna för typ? [int] c) Vilka av variablerna initieras explicit? [lastlengths, year, MY_YEAR] d) Är följande uttryck tillåtet? Motivera svaret: year = 20; [Ja, det är en vanlig variabel] e) Är följande uttryck tillåtet? Motivera svaret: MY_YEAR = 40; [Nej, MY_YEAR är deklarerad som final och redan tilldelad.] 1

4. (1p) Ordna följande datatyper i stigande storleksordning (med storlek avses antal bitar i representationen): float byte long short int [byte, short, int&float, long] 5. (5p) Visa och förklara resultaten av dessa uttryck: a) 13 % 4 [ 13 modulo 4 = 1, rest vid heltalsdivision] b) 10 / 4 [10 dividerat med 4 = 2, heltalsdivision] c) 12 + 6 * 4 [12 + 24 = 36] d) (12 + 6) * 4 [18 * 4 = 72] e) 15 % 5 + 5 % 5 [0 + 0 = 0] Grundläggande datalogiska begrepp och relationer (11p) 6. (2p) Givet följande sekvens av programinstruktioner: 1. double x, y, k, b; 2. x = 3.14; 3. y = -7.9125; 4. k = -2.101; 5. b = 13.17; 6. y = k * x + b; a) En av raderna är överflödig och kan plockas bort. Vilken, och varför det? [rad 3, y läses inte] b) Vilka rader går att kasta om ordningen på utan att beräkningen ändras? [2,3,4,5] 7. (1p) Vilken text kommer att skrivas ut av denna kod? int small = 100; int medium = 75; int big = 42; if ((small < big) (medium > small)) { System.out.println("PEW"); else if (big > medium) { System.out.println("DIE"); else { System.out.println("PIE"); [PIE] 8. (2p) Komplettera nedanstående metod så att den implementerar den logiska funktionen exclusive- OR, (ömsesidigt uteslutande), dvs att en och endast en av parametrarna är sann: public boolean xor(boolean p, boolean q) { [return (p &&!q) (!p && q);] 2

9. (2p) Vilken talserie skrivs ut av följande kod? int x = 22; int y = 13; while (y < x) { x = (x + y) / 2; System.out.println(x); [17, 15, 14, 13] 10. (4p) Arrayen final int [] nums innehåller tal från en okänd källa. a) Skriv ett kodfragment som räknar antal tal i nums som är mindre än noll. int nofnegative = 0; for (int n : nums) { if (n < 0) nofnegative++; b) Skriv ett kodfragment som sätter variablerna int minindex, maxindex; till index för minsta respektive största värdet i nums. int minindex = 0; int maxindex = 0; int minvalue = nums[0]; int maxvalue = nums[0]; for (int i = 1; i < nums.length; i++) { if (nums[i] < minvalue) { minvalue = nums[i]; minindex = i; if (maxvalue < nums[i]) { maxvalue = nums[i]; maxindex = i; Grundläggande objektorienteringsbegrepp och komplexitet (10p) 11. (3p) Försvara användningen av begreppet inkapsling i objektorienterad programmering. Inkapsling skyddar klassen och dess objekt från insyn och manipulation på andra sätt än genom dess gränssnitt. Genom att använda deklarationer som public, default, protected och private kan programmeraren förhindra att kod skriven för andra klasser ser eller ärver attribut (fält, metoder och inre klasser) som inte skall vara synliga utåt. Detta minskar risken för programmeringsfel och beroenden mellan klasser som försvårar underhåll av programkoden. 3

12. (2p) I objektorienterad programmering, vad är det för skillnader mellan: och public class MyClass { MyClass mc = new MyClass(); Det första är en deklaration av en klass, en specifikation av dess attribut och tjänster i form av fält, metoder och inre klasser. För varje klass finns endast en enda deklaration och med undantag för statiska fält och metoder så finns det ingen körbar kod förrän en instans av klassen skapats. Det andra är en variabeldeklaration (mc) och en instansiering (new). En instans av MyClass skapas och en referens till objektet tilldelas variabeln mc. Det går nu att följa referensen och använda klassens instans genom att anropa metoder. Det går även att vid behov skapa fler instanser. 13. (3p) I objektorienterad programmering, vad menas med ett gränssnitt? Ett gränssnitt kan antingen vara en interface-klass i Java, eller den mängd med publika attribut (fält, metoder och inre klasser) som en klass exponerar mot andra klasser. Gränssnittet tillåter en väldefinierad användning av klassens instanser, och gör det samtidigt möjligt att underhålla implementationen bakom gränssnittet utan att anropande kod behöver modifieras. En interface-klass i Java är speciell i den bemärkelsen att den definierar vilka metoder som skall vara synliga i objektet och vilka signaturer och returvärden dessa ska ha. Interface-klassen säger dock inte hur metoderna ska implementeras, det är upp till den implementerande klassen. (fråga 14 på nästa sida) 4

14. (2p) Vid digital ljudbehandling behöver man ofta addera (mixa) samman signaler med varandra. I kodexemplen nedan ska ett antal arrayer samlade i input mixas ner i en enda array, mixbuffer. Eftersom mixbuffer återanvänds måste eventuella data i den skrivas över, och det gör man enklast genom att kopiera första input och sedan addera till de andra. Nedan visas två alternativa sätt att programmera nedmixningen. Är det någon skillnad mellan dem effektivitetsmässigt? I så fall varför? Koden antar att alla arrayer som innehåller signaler är av samma längd (1024 element), är initierade och redan har använts flera gånger. float [] mixbuffer; float [][] input; // Alt a for (int i = 0; i < input.length; i++) { // För varje input for (int j = 0; j < mixbuffer.length; j++) { // Lägg till i mix if (i == 0) { mixbuffer[j] = input[i][j]; // Kopiera om det är första input else { mixbuffer[j] += input[i][j]; // annars addera input // Alt b for (int j = 0; j < mixbuffer.length; j++) { // Kopiera första input mixbuffer[j] = input[0][j]; for (int i = 1; i < input.length; i++) { // Addera resterande inputs for (int j = 0; j < mixbuffer.length; j++) { mixbuffer[j] += input[i][j]; Om vi antar att det finns n = input.length arrayer med insignaler, så kräver uppgiften 1024 kopieringar och (n-1)*1024 additioner. Båda alternativen utför detta, så i det avseendet är de likvärdiga. Alternativ a har ett test i sin inre loop om i är lika med noll. Detta test kommer att utföras för varje kopiering och addition och vara sant 1024 gånger och falskt (n-1)*1024 gånger. Alternativ b utför inget sådant test utan har bara de kopieringar och additioner som faktiskt behövs. Därför är alternativ b mer effektivt. 5