Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Relevanta dokument
Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Tentamen. DD2385 Programutvecklingsteknik vt Torsdagen den 27 maj 2010 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Tentamen. DD2385 Programutvecklingsteknik vt Tisdagen den 26 maj 2009 kl Inga hjälpmedel utom penna, sudd och linjal

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Laboration 1 - Grunderna för OOP i Java

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

TENTAMEN OOP

TENTAMEN OOP

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

Information. Computer

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

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

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Tentamen Programmering fortsättningskurs DIT950

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

DAT043 - Föreläsning 7

Lösningar till tentamen i EDAF25

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

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

PROGRAMMERINGSTEKNIK TIN212

Tentamen, EDAA10 Programmering i Java

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

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

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

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

Föreläsning 13 Innehåll

Tentamen i Objektorienterad modellering och design

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Tentamen i Programmeringsteknik I, ES,

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

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

OOP Tentamen

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Classes och Interfaces, Objects och References, Initialization

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

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

OOP Objekt-orienterad programmering

OOP Tentamen

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

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

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 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

OOP Tenta

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

Lösningar till tentamen i EDAF25

OOP Tentamen

Laboration 2: Designmönster

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

Laboration 2: Designmönster

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

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

Objektorienterad programmering D2

Tentamen Datastrukturer, DAT037 (DAT036)

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

OOP Objekt-orienterad programmering

Kopiering av objekt i Java

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

Tentamen i Objektorienterad modellering och design Helsingborg

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 för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Tentamen OOP

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

DAT043 Objektorienterad Programmering

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Objektsamlingar i Java

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Transkript:

Tentamen DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl 9.00 12.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna kan bli lägre men inte högre): Betyg FX: Betyg E: Betyg C: Betyg A: 23 poäng på del I minst 24 poäng på del I Godkänd del I och minst 43 poäng på hela tentan Godkänd del I och minst 55 poäng på hela tentan Högst 3 bonuspoäng från labbarna får räknas på del I. Alla bonuspoäng räknas när betygen C och A sätts. del I Skriv gärna flera uppgifter på samma blad på del I! (5p) 1. Nedan följer åtta namn på designmönster och därefter fem korta beskrivningar av designmönster. Välj det rätta mönsternamnet till varje beskrivning. Tre mönsternamn blir alltså över! Iterator Mediator State Proxy Facade Template Method Strategy MVC A) I en superklass definieras en algoritms huvuddrag. Delar av algoritmen definieras i subklasser eller definieras om i subklasser. B) En del av en algoritm är utbytbar medan programmet kör, ingen omkompilering behövs för att byta. Den utbytbara delen är inkapslad i ett objekt. C) Ett objekt kontrollerar åtkomsten till ett annat objekt. De båda implementerar samma gränssnitt. D) Man får tillgång till ett antal objekt i sekvens, utan att behöva känna till hur de egentligen är organiserade. E) En klass ger ett enkelt gränssnitt till ett komplext system (som kan bestå av många klasser). 1

(8p) 2. Rita ett UML-klassdiagram som åskådliggör följande klasser och interface. För full poäng måste öppna och slutna pilspetsar användas rätt samt multiplicitet anges vid de associationer där det är relevant. Fyllda romber behöver inte användas. Instansvariabler och instansmetoder behöver inte vara med i diagrammet men ev. relationer som ges av variabler och metoder ska ritas ut. Alla klasser som nämns i koden utom ArrayList ska vara med. står för utelämnad kod. class Center { ArrayList<Spec> wlist = new ArrayList<Spec>(); void tie(spec w) {wlist.add(w); void untie(spec w) {wlist.remove(w); void tell() { for (Spec w:wlist) w.amend(); class Focus extends Center { void changestate(int newstate){ mystate = newstate; tell(); int getstate() { public interface Spec { public void amend(); class Looker implements Spec { Focus mycenter; Looker (Focus c){ mycenter = c; public void amend() { class Wiewer implements Spec { Focus mycenter; Wiewer (Focus c) { mycenter = c; public void amend() { 3. Klassernas namn i uppgift 2 är valda för det ska antydas men inte vara uppenbart vilket designmöster som används. Vilket mönster är det? 2

(2p) (2p) 4a. Vad är testdriven programutveckling? 4b. Vad är refactoring inom programutveckling? 4c. Testdriven programutveckling och refactoring används inom XP (extreme Programming). Ange ytterligare fyra karakteristiska egenskaper/regler hos XP 4d. Beskriv utvecklingsmetodiken Rapid Prototyping. 5. Antag att följande klasser definieras class Person { void activity() { System.out.println("REST "); class Athlete extends Person { void activity() { System.out.println("RUN "); 5a. Vi skapar ett objekt så här: Person miranda = new Athlete(); Vad blir utskriften från miranda.activity();? Varför blir utskriften så? Poäng ges för motivering, inte för rätt svar. 5b. Antag att klassdefinitionerna ovan gäller. Om en metod börjar så här static void testm (Person p) Vilket av följande påståenden är FEL? Motivering behövs inte här. A) Objekt av typ Object kan ges som parameter till testm() B) Objekt av typ Person kan ges som parameter till testm() C) Objekt av typ Athlete kan ges som parameter till testm() Formuleringen Objekt av typ A innebär att objektet skapats med new A() (2p) 6. Vad är en abstrakt klass i Java? Varför är sådana användbara? 3

(2p) 7. I Javas bibliotek finns metoder som sorterar listor av objekt, t.ex. Collections.sort(myList) Sorteringsmetoderna måste kunna jämföra objekten för att sortera dem. Antag att mylist innehåller objekt av en klass A som du själv har definierat. Hur ska du i klassen A ange hur objekt ska jämföras? För att få full poäng måste du visa att du förstår de principer som används i Java. Exakt rätt namn på metoder m.m. krävs inte. Javakod krävs inte heller men kan underlätta att få svaret tydligt. (4p) 8. Vilka fyra av påståendena nedan är korrekta? De påståenden som rör programmering avser förstås Java. Ge exakt fyra svar! Om du ger fler än fyra svar så räknas de fyra första. A) Att instansiera en klass A betyder att man skriver en ny klass som ärver från A. B) En klass kan implementera två interface: class A implements I1, I2 { C) En klass kan ärva från två klasser class A{ class B{ class C extends A, B { D) Polymorfism är ett problem i objektorienterad programmering som åtgärdas genom att man gör metoder privata, dvs markerar dem som private i koden. E) Om man vet att int variablerna m och n båda har värdet 17 så kan man vara säker på att uttrycket (n == m) har värdet true. F) Om man vet att String variablerna p och q båda har värdet "PI" så kan man vara säker på att uttrycket (p == q) har värdet true. G) Ett ramverk i Java innehåller klasser och/eller interface. H) Alla klasser i Java ärver från klassen Object utan att man behöver skriva det explicit. I) En tråd i Java startas genom att programmeraren anropar trådobjektets metod som heter run(). 4

del II 9. class Particle { int x, y; Particle (int x, int y) { thix.x = x; this.y = y; (4p) Utvidga klassen Particle så att klassen själv håller reda på hur många objekt av Particle som har skapats. Skriv en metod i Particle som returnerar antalet skapade objekt. Ange hur metoden ska anropas. Visa alla ändringar och tillägg som behövs i Particle för att lösa uppgiften. Antalet skapade objekt är här de som skapas under en körning av ett program som använder klassen. Antalet ska inte lagras på fil utan allt ska skötas inuti klassen Particle. Inga andra klasser får användas eller skrivas. (4p) 10. Vad är en fabriksmetod? Vad är dess uppgift? Ge något exempel på situation då fabriksmetod används. Vilken Java modifierare är absolut nödvändig att sätta på en fabriksmetod? Vad gäller för konstruktorer i samband med fabriksmetoder? (4p) 11. Fråga 6 på del I handlar om sortering i Java. Antag att den uppgiften är löst, dvs objekt av klassen A sorteras korrekt genom anropet Collections.sort(myList) Nu vill vi m.h.a. en biblioteksmetod få listan sorterad på ett annat sätt än det som är definierat i klassen A men utan att ändra på A. Hur gör man då? Med annat sätt avses t.ex. att den i A inbyggda sorteringen görs efter personnummer men den nya ska göras på efternamn. Den i Java inbyggda mekanismen för andrasortering använder ett känt designmönster. Vilket? Svaret behöver inte innehålla korrekta namn ur biblioteket. Det är principerna som är viktiga. Om du inte kan biblioteken tillräckligt bra för att veta hur det görs så använd dina Java-kunskaper för att beskriva hur det skulle kunna göras. Det senare kan också ge poäng. 5

12. Ett filsystem består av filer och kataloger. Kataloger kan innehålla filer och andra kataloger som i sin tur kan innehålla filer och kataloger o.s.v. enligt mönstret Composite. Filer representeras av objekt av klassen File som finns här nedanför. Kataloger representeras av objekt av Directory. Både filer och kataloger har namn som lagras i instansvariabeln name i den gemensamma superklassen FileElement. Observera att File här inte är samma klass som i Java-API:n. Det är inte "riktig" filhantering i uppgiften och inga referenser till "riktiga" File ska införas. Använd bara de givna klasserna! abstract class FileElement { String name; Directory parent = null; // each FileElement except the root must always // have a reference to its parent FileElement (String n) { name = n; public String tostring() { return name; abstract void add(fileelement fe); abstract void remove(fileelement fe); abstract int size(); class File extends FileElement { int size; File (String n, int s) { super(n); size = s; void add(fileelement fe) { void remove(fileelement fe) { int size() { return size; 6

(18p) 12. Skriv en del av klassen Directory för filkataloger enligt mönstret Composite. Ett Directory ska kunna innehålla objekt av Directory och objekt av File. Följande metoder ska skrivas i Directory: add() för att lägga till ett FileElement objekt. remove(fileelement f) för att ta bort ett FileElement objekt size() som beräknar summan av alla filstorlekar i katalogen och alla dess underkataloger enligt mönstret Composite. findbigdir() Metoden ska skriva ut en lista över innehållet i den aktuella katalogen sorterat i storleksordning. Storleken för en katalog är summan av storlekarna för alla filer i katalogen, beräknat på alla nivåer av underkataloger. Se exempel på sidan 8. Det är tillåtet att definiera en hjälpklass här och/eller göra tillägg i de givna klasserna. Du ska dock inte skriva kod för sorteringen själv. moveup() som flyttar innehållet i katalogen till nivån närmast ovanför samt raderar katalogen. Om det inte finns en nivå ovanför ska metoden inte göra något alls. Se exempel på sidan 9. moveupr() som flyttar alla filer i katalogen och alla dess underkataloger till nivån ovanför. Katalogen och dess underkataloger ska raderas ur strukturen. Perfekt Java-syntax krävs INTE för full poäng på någon uppgift. 7

Exempel på objektstruktur i uppgift 12. hem kurser FS recept test Telefonlista 12 Tider Hallonpaj Apelsinkyckling 17 13 32 prutt Handledare grupdat 11 elevp knepigt Bahare Simon Info elevp 4 6 10 Miriam 9 Lovis Ralf 8 7 Anrop av findbigdir() på katalogen kurser ger grupdat 25 prutt 19 Handledare 11 För katalogen hem blir det kurser 55 recept 45 FS 17 Telefonlista 12 test 0 8

Exempel på objektstruktur i uppgift 12. hem kurser recept test Telefonlista 12 Hallonpaj Apelsinkyckling 13 32 prutt Handledare grupdat 11 L1 L2 A1 A2 A3 3 5 3 4 2 Anrop av moveup() på katalogen kurser i strukturen ovan ska ge en ny struktur enligt bilden nedan. hem recept test Telefonlista 12 Hallonpaj Apelsinkyckling 13 32 prutt Handledare grupdat 11 L1 L2 A1 A2 A3 3 5 3 4 2 9