Tentamen ID1004 Objektorienterad programmering May 29, 2012

Relevanta dokument
Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Tentamen ID1004 Objektorienterad programmering April 7, 2015

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

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

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

F4. programmeringsteknik och Matlab

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

Typkonvertering. Java versus C

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

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

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

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

SMD 134 Objektorienterad programmering

Tentamen OOP

JAVAUTVECKLING LEKTION 11

TENTAMEN OOP

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

OOP Objekt-orienterad programmering

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

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

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

LÖSNINGSFÖRSLAG TENTAMEN

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

OOP Objekt-orienterad programmering

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Objektorienterad programmering i Java

Klasshierarkier - repetition

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

1 Comparator & Comparable

Objektorienterad Programmering (TDDC77)

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

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

Agenda. Objektorienterad programmering Föreläsning 13

TENTAMEN OOP

TENTAMEN OOP

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Programmering A. Johan Eliasson

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

Att skriva till och läsa från terminalfönstret

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

Föreläsning REPETITION & EXTENTA

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

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

DAT043 Objektorienterad Programmering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TDDC77 Objektorienterad Programmering

Föreläsning 3-4 Innehåll

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

TDDC77 Objektorienterad Programmering

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. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

2D1342 Programkonstruktion för F1, ht 2006

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

Classes och Interfaces, Objects och References, Initialization

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

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

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

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

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

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

Konstruktion av klasser med klasser

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

(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

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Programmeringsteknik I

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

Parallellism, återblick

Instuderingsfrågor, del D

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Övning2. Variabler. Data typer

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

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

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

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

OOP Omtenta

Tentamen FYTA11 Javaprogrammering

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Transkript:

Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga kan ge mellan 1 och 4 poäng. Tentamensbetyget A-F bestäms 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. Poäng 0-10 11-13 14-17 18-21 22-25 26-28 Tentamensbetyg F E D C B A Läs noga igenom alla frågorna först och planera tiden. Lycka till! 1 Grundläggande syntaktiska konstruktioner och begrepp 1.1 (1p) Föreslå en primitiv datatyp lämplig för att lagra heltal mellan 0 och en miljon. 1.1 int eller long, (men även float eller double) 1.2 (2p) Följande variabelinitiering har flera fel. Skriv om den så att den blir korrekt och följer stavningskonventionerna i Java. private stattic double liter per minut == 3,8 1.2 private static double literperminut = 3.8; void minmetod(int p) { void minmetod(long p) { void minmetod(char p) { Kodfigur 1 1.3 (1p) Se kodfigur 1. Hur vet Java-kompilatorn vilken metod som skall anropas? (Vi bryr oss inte om vad metoden gör.) 1.3 Kompilatorn väljer rätt metod genom att titta på vilken datatyp parametern i det aktuella anropet har. 1

import java.io.*; String somefile = ; try { boolean success = true; FileInputStream fis = new FileInputStream(someFile); catch (FileNotFoundException fex) { success = false; if (success) {... Kodfigur 2 1.4 (2p) Se kodfigur 2. I koden finns ett problem med felhanteringen. Vilket? 1.4: Variabeln success måste vara deklarerad utanför try-catch-satsen för att vara nåbar av den avslutande if-satsen.t ex: boolean success = true; try { FileInputStream fis = new FileInputStream(someFile); catch (FileNotFoundException fex) { success = false; if (success) { 2 Grundläggande datalogiska begrepp och relationer int w = 314; System.out.println(--w++); // rad 1 System.out.println(w); // rad 2 Kodfigur 3 2.1 (2p) Se kodfigur 3. De tre raderna exekveras i sekvens. Vilka värden kommer att skrivas ut av rad 1 och rad 2? 2.1 Rad 1 skriver ut 313, rad 2 skriver ut 314. int limit = 0; /* loop A */ 2

for (int i = 0; i < limit; i++) { System.out.println(i); /* loop B */ int i = 0; while (i < limit) { System.out.println(i); i++; /* loop C */ int i = 0; do {System.out.println(i); i++; while (i < limit); Kodfigur 4 2.2 (3p) Se kodfigur 4. Vilken av dessa loopar gör flest varv, och varför är det så? 2.2: Loop C (1 gång) eftersom en DO-loop alltid exekverar loop-kroppen minst en gång. Loop A och B kommer aldrig att exekvera sin loop-kropp. 2.3 (3p) Se kodfigur 4. Hur många varv gör varje loop om variabeln limit initieras till 1? 2.3: Alla tre looparna gör 1 varv vardera. if (a < b) if (b < c) f = true; else else Kodfigur 5 2.4 (4p) Se kodfigur 5. Skriv om koden så att ingen eller högst en if-sats används. 2.4: Vi börjar med att skriva om koden med blockstruktur: if (a < b) { if (b < c) { f = true; else { else { Vi ser då att f alltid kommer att bli tilldelad antingen true eller false, och att den bara blir true om båda villkoren är sanna. Det ger oss möjlighet att använda ett &&-uttryck, och det finns flera sätt: // alt. 1 if ((a < b) && (b < c)) f = true; if ((a < b) && (b < c)) { // alt. 2 f = true; else { f = (a < b) && (b < c)? true : false; // alt. 3 3

f = (a < b) && (b < c); // alt. 4 3 Grundläggande objektorienteringsbegrepp 3.1 (2p) Förklara varför man har deklarationerna private, protected, (inget), och public för metoder i klasser, och beskriv deklarationernas särdrag. 3.1 Dessa åtkomstdeklarationer används för att styra vilka metoder i en klass som skall vara synliga utåt för andra klasser (public), endast synliga för andra klasser i samma package (inget/default), endast synliga inom klassen och dess underklasser (protected) eller bara synliga i den egna klassen (private). Detta är en central del i begreppet inkapsling, dvs möjligheten att dölja det interna maskineriet i en klass för andra klasser (och deras programmerare). 3.2 (3p) Beskriv kortfattat (det är inget krav att skriva kod) hur man objektorienterat kan modellera varje individuellt spelkort i en kortlek. Vi antar en kortlek med 52 kort, inga jokrar, fyra färger (hjärter, spader, ruter, klöver) och 13 valörer (2-10, knekt, dam, kung, äss). 3.2 En klass Spelkort kan innehålla ett identitetsnummer (0-51) som exakt bestämmer vilket kort det är. Kortets id kan därefter översättas till ett index till färg genom att heltalsdividera med 13, och ett index till valör genom att beräkna id modulo 13. Dessa index kan därefter användas för att slå upp namn på färg och valör i arrayer eller enums. Ett annat sätt är att skapa en klasshierarki med en superklass som innehåller valörerna och sedan fyra underklasser, en för varje färg. Det är dock inte självklart att göra så eftersom egenskaperna valör och färg är ortogonala från varandra; det vore precis lika korrekt att skapa en superklass med de fyra färgerna och en underklass för var och en av de tretton valörerna. Eftersom ingen av egenskaperna färg och valör är underordnad den andra så finns ingen naturlig hierarki att följa. 3.3 (3p) Med uppgift 3.2 i åtanke, beskriv kortfattat (det är inget krav att skriva kod) en objektorienterad modell för själva kortleken. Kortleken ska ha ett gränssnitt för att (a) samla in och blanda korten, (b) dela ut nästa kort och (c) informera om att inga kort finns kvar (alla är utdelade). 3.3 En kortlek kan modelleras som en egen klass som innehåller två listor. Den ena listan innehåller ej utdelade kort, den andra listan utdelade kort. (a) En metod blanda() för över alla utdelade kort till de ej utdelade och randomiserar ordningen. (b) Vid utdelning av kort flyttas nästa kort från ej utdelade till utdelade kort, och en referens till kortet returneras.(c) Om inget ej utdelat kort finns kvar kan metoden returnera null eller kasta en exception. 3.4 (2p) Antag att du som medlem i ett större mjukvaruprojekt har fått i uppgift att skriva ett flertal Java-klasser. Projektledningen har beslutat att varje sådan klass ska implementera interface-klassen MegaFace, vilket innebär att varje klass du skriver måste implementera alla metoder i MegaFace. Dessvärre så har MegaFace ganska många metoder, och det ser ut som om fler kommer att läggas till snart. Till saken hör att de klasser du skriver bara behöver tillhandahålla ett fåtal metoder i MegaFace, de övriga kommer aldrig att anropas och kan vara tomma implementationer. Du inser att det kommer att bli mycket extra skrivande och ändrande för att hålla dina klasser i synk med MegaFace. 4

Föreslå en strategi som minimerar mängden kod som du måste underhålla, och förklara varför det är ett lämpligt sätt. 3.4 Skriv en adapterklass, dvs en klass som implementerar alla metoder i MegaFace på enklaste sätt. Låt därefter projektklasserna ärva från adapterklassen. Varje projektklass behöver då endast implementera (override) de metoder som behövs i just den klassen. Ändringar i MegaFace behöver endast följas upp i adapterklassen och eventuellt även i de projektklasser som har egna implementationer. 5