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

Relevanta dokument
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. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 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 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

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

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

PROGRAMMERINGSTEKNIK TIN212

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

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

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Lab5 för prgmedcl04 Grafik

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen i Objektorienterad programmering

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

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Konstruktion av klasser med klasser

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Klasshierarkier - repetition

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

2D1342 Programkonstruktion för F1, ht 2006

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Tentamen i Grundläggande programmering STS, åk

2D1339 Programkonstruktion för F1, ht 2004

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

DD1342 Programkonstruktion för F1,

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

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

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

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

Lösningar till tentamen i EDAF25

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

Lektion Händelsehanterare

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

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

Imperativ programmering. Föreläsning 4

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

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Properties. Användbara metoder som kan anropas i propertychanged:

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Tentamen i Objektorienterad programmering

DAT043 Objektorienterad Programmering

Mer om grafiska komponenter. Händelsestyrda program

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

Föreläsning 3: Händelsestyrda program och användargränssnitt

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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, EDAA10 Programmering i Java

Datalogi I, grundkurs med Java 10p, 2D4112, Tentamen 29 november 2003, svar och lösningar

Repetition av OOP- och Javabegrepp

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

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

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

Föreläsning 13 Innehåll

TENTAMEN OOP

Tentamen Programmering fortsättningskurs DIT950

Repetition av OOP- och Javabegrepp

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programmering (TDDC77)

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Laboration 3 GUI-programmering

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.

Tentamen i Objektorienterad modellering och design

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

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

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

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

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

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

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

Laboration 1 - Grunderna för OOP i Java

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Tentamen i Grundläggande programmering STS, åk

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

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

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

Transkript:

Tentamen DD2385 Programutvecklingsteknik vt 2009 Tisdagen den 26 maj 2009 kl 10.00 13.00 Inga hjälpmedel utom penna, sudd och linjal Tentans del I omfattar 22 poäng. Del II har 23 poäng Preliminära betygsgränser (gränserna blir inte högre): Betyg FX: Betyg E: Betyg C: 15-16 poäng på del I 17-22 poäng på del I 17-22 poäng på del I och 11-23 poäng på del II Betyg FX får kompletteras till C om C-nivån på del II är nådd på tentan. del I 1. (5p) Rita ett UML-klassdiagram som åskådliggör följande klasser. Alla relationer ska vara med. För full poång måste öppna och slutna pilspetsar samt streckade och heldragna linjer användas rätt. Instansvariabler och metoder behöver inte vara med i diagrammet men ev. relationer som ges av variabler och metoder ska ritas ut. Alla klasser och interface utom utom String måste vara med i diagrammet. De långa klassnamnen får förkortas. interface Spelmodell { void drag(int i, int j); String[][] ställning(); class Luffarschacksmodell implements Spelmodell {... class Femtonspelsmodell implements Spelmodell {... class Spel extends JFrame implements ActionListener { int n; JButton[][] spelplan; // kvadratisk spelplan n*n Spelmodell spelmod; Spel (Spelmodell spmod, int n) { // konstruktor public void actionperformed (ActionEvent e) {... 2. (1p) Klassen Spel i föregående fråga implementerar ett spel på en kvadratisk rutindelad spelplan. Spelets regler nns i ett särskilt objekt i Spel som refereras med spelmod. Om man med hjälp av klasserna ovan skriver ett program som kan växla mellan olika spelmodeller i samma körning av programmet, vilket designmönster använder man då? 1

3. (2p) Stegtävlingar som motionsaktivitet är populära just nu. Anställda på en arbetsplats delas in i lag, får var sin stegräknare och går och går och går så mycket de orkar och rapporterar varje kväll in dagens antal steg till en server skriven i Java. Ställningen mellan lagen redovisas kontinuerligt på en webbsida. Det lag som först har gått t.ex. från Stockholm till Berlin vinner. Yngve och Zeke tillhör samma lag och har båda gått 14300 steg den 25 maj. De rapporterar in resultaten samtidigt. När båda gjort sina rapporteringar har lagets antal endast ökat med 14300 och inte 28600 som väntat. Vad är det som har hänt och hur ska serverprogammet åtgärdas för att fortsatta rapporteringar ska bli rätt? 4. (3p) Nedan följer fem korta beskrivningar av designmönster. Välj ut vilken beskrivning som stämmer för var och en av Decorator Mediator Proxy A) Skjut upp delar av en algoritm till subklasser. B) Ett objekt kontrollerar åtkomsten till ett annat objekt. De båda implementerar samma gränssnitt. C) Ett objekt har hand om kommunikationen mellan n st objekt. D) Lägg till funktionalitet till ett objekt dynamiskt. Javas klasser för strömmar följer mönstret. E) En enda klass ger ett gränssnitt till ett komplext system. 5. (2p) a) Vad är namnet på det designmönster där ett objekt underrättar n st andra objekt när det första objektets tillstånd ändras? b) Förklara kort hur mönstret tillämpas på Javas graska komponenter och lyssnare. 6. (2p) Para ihop arbetssätten Vattenfall och extreme Programming med följande karakteristika: A) Testfasen ligger sent i projektet B) Programmeringen sker i par C) Systemspecikation görs tidigt D) Kunden/beställaren är med hela tiden i projektet 7. (1p) Vilket av följande alternativ beskriver bäst termen refactoring? A) Uppdelning av programkoden i många små delar (klasser och metoder). B) Förbättring av programkoden utan att programmets yttre funktion ändras. C) Upprepad testning av ett program allteftersom det byggs ut. D) Förbättring av det gränssnitt ett program visar mot användaren med så lite förändringar av programkoden som möjligt. 2

8. (1p) Antag att C1 och C2 är klasser och att I1 och I2 är interface (allt i Java förstås). Vilket av följande sätt är inte en tillåten inledning på en ny deklaration av klass eller interface? A) class C extends C1, C2 B) class C implements I1, I2 C) class C extends C1 implements I1 D) interface I extends I1, I2 9. (2p) Vad blir utskriften från programmet? Svarsalternativ nns efter programkoden. (1p) Förklara hur du kom fram till ditt svar. (1p) class Fraga9 { public static void main (String[] u) { Person pelle = new Person(); Person samanta = new Motionär(); Motionär anna = new Motionär(); pelle.aktivitet(); samanta.aktivitet(); anna.aktivitet(); System.out.println(); class Person { void aktivitet () { System.out.print("Vila "); class Motionär extends Person { void aktivitet () { System.out.print("Träna "); A) Vila Vila Träna B) Vila Träna Träna C) Vila Vila Vila D) Träna Träna Träna 3

10. (2p) Lös koppling mellan programdelar (klasser) eftersträvas ofta i objektorienterad programmering. Om klassen A beror av klassen B, hur kan man lösa upp detta beroende och åstadkomma en lösare koppling mellan klasserna A och B? Svaret kan ges i Javakod eller i UML-klassdiagram. class A { B minb;... class B { <B:s många variabler och metoder> 11.(1p) Vad är JUnit? A) Klass i Java API:n med fysikaliska konstanter i SI-enheter. B) Paket med Java-komponenter speciellt anpassade för Unix-miljön. C) Java Junior training - speciell utvecklingsmiljö för att lära barn programmera i Java. D) Java-ramverk för automatiserad testning som används bl.a. inom XP. 4

del II 12. (16p) Här ska en grask komponent som är liknar en himmel med tindrande stjärnor skissas. Komponenten ärver från Canvas eller JPanel. För att tindrandet ska kunna ske oberoende av komponentens omgivning görs det i en egen tråd. Tindrandet åstadkoms genom att stjärnorna ritas om med jämna mellanrum och genom att ca 20% av stjärnorna ges ändrad diameter före omritningen. Det behöver inte vara samma stjärnor som ändras i varje omritning. Delfrågorna a) e) kan besvaras oberoende av varandra! a) (1p) Hur åstadkoms komponentens egen tråd? Svara kort, två ord räcker! Antag att stjärnhimmelklassen heter Sky och att stjärnorna representeras av många objekt av klassen Star som är en inre klass i Sky. class Star { int x, y; double diameter; Color col; Star (...) {... // konstruktor void draw (...) {... // ritar stjärnan i komponenten i // position (x,y) och med aktuell diameter void changediameter () {... // ändra diametern lagom mycket // för tindrandet // fler metoder Stjärnobjekten är skapade och nns i listan ArrayList<Star> allstars. b) (6p) Skriv den del av klassen Sky som med jämna mellanrum ritar om komponenten och ser till att den tindrar. Du kan ha användning för metoden Math.random() som vid anrop ger ett slumptal på intervallet [0, 1[ samt av metoden Thread.sleep(ms) som låter tråden vänta ms millisekunder. Du behöver inte bry dig om vilka färger som används utan anta att bakgrundsfärgen är satt till något mörkt och att metoden draw() i Star är allt som behövs för att rita en stjärna. All syntax behöver inte vara rätt för att få full poäng. c) (3p) (p) Du ser era möjliga utvidgningar av den tindrande stjärnhimlen: En variant är att låta stjärnorna ändra färg i samband med att de tindrar. En annan är att låta stjärnor försvinna om de blivit små och att låta nya födas. Du kommer fram till att du kan deniera och anropa en eller era tomma metoder i Sky som senare kan fyllas med innehåll för att realisera olika utvidgningar. Vilket designmönster är detta? (1p) När/var ska de icke-tomma metoderna med utvidgningar denieras? (1p) Förklara kort hur mönstret fungerar relaterat till uppgiften eller fristående från uppgiften. (1p) 5

d) (3p) Hur åstadkommer man att tindrandet kan stängas av och sättas på genom att man klickar med musen i komponenten? Ledtråd: Musklick i Canvas eller JPanel genererar ActionEvent. Beskriv i ord eller pseudokod eller Javakod eller kombinera som du vill. e) (3p) Rita komponentens UML-klassdiagram enligt a), b) och d). För full poäng skall du ha med i diagrammet att komponenten är beroende av klassen Graphics fast denna inte nns med i uppgiftslydelsen och inte heller behöver användas i några av lösningarna till a)d). 13. (7p) Träningsföreningen Hurtbullen (konkurrent till F&S) samlar information om sina motionärers aktiviteter i en XML-databas. Följande DTD beskriver aktiviteterna för en enda motionär under en period av några veckor. <!DOCTYPE Träning [ <!ELEMENT Träning (Vecka*)> <!ATTLIST Träning id CDATA #REQUIRED> <!ELEMENT Vecka (Dag+)> <!ATTLIST Vecka nr CDATA #REQUIRED> <!ELEMENT Dag (Pass+)> <!ATTLIST Dag namn CDATA #REQUIRED> <!ELEMENT Pass (#PCDATA)> <!ATTLIST Pass webbbokad (TRUE FALSE) "TRUE")> ]> a) (6p) Skriv en XML-l där medlemmen med id=1231 har tränat följande pass: I vecka 20 blev det Medeljympa på onsdagen och fredagen, i vecka 21 blev det Skivstång och Medelspinning på måndagen, samt Medeljympa på torsdagen och lördagen. Alla pass bokades på webben utom spinningen på måndagen som var en spontanträning. Veckodagarnas namn kan skrivas som må, ti, on, to, fr, lö, sö. Startrad av typen <?xml version="1.0"?> behöver inte vara med. b) (1p) Vad betyder * respektive + som står efter Vecka, Dag och Pass i DTD:n? 6