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



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

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

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

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

PROGRAMMERINGSTEKNIK TIN212

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

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad programmering

Föreläsning 13 Innehåll

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.

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

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

Föreläsning 5-6 Innehåll

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

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

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

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

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

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

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

Kurskod D0010E Datum Skrivtid 5tim

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

TENTAMEN I DATAVETENSKAP

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Tentamen Programmering fortsättningskurs DIT950

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

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

Tentamen i Algoritmer & Datastrukturer i Java

Arv och polymorfism i Java

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Exempel på användning av arv: Geometriska figurer

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

DAT043 Objektorienterad Programmering

Tentamen i EDA011 Programmeringsteknik för F, E, I, π och N

Tentamen i Objektorienterad modellering och design

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen i Grundläggande programmering STS, åk 1 fredag

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

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

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Tentamen Datastrukturer, DAT037 (DAT036)

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

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

2D1339 Programkonstruktion för F1, ht 2003

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Föreläsning 8: Exempel och problemlösning

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

Repetition av viktiga begrepp inom objektorienterad programmering

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

Tentamen, EDAA10 Programmering i Java

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Algoritmer och datastrukturer 2012, fo rela sning 8

Tentamen i Grundläggande programmering STS, åk

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

1 Repetition av viktiga begrepp inom objektorienterad programmering

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

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

Tentamen i Programmeringsteknik I, ES,

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen ID1004 Objektorienterad programmering April 7, 2015

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

Datastrukturer. föreläsning 3. Stacks 1

Tentamen, Algoritmer och datastrukturer

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

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

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

Objektorienterad programmering, Java, 5p TDBA63

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Designmönster. Kapitel Kommandomönstret

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

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

Laboration 1: Figurer i hierarki

CHALMERS TENTAMEN. 2012/2013, lp 1 DAT042. Uno Holmer. Java API (utdelas av skrivningsvakten) Erland Holmström tel besöker tentamen

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

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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.

Information. Computer

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

Geometrimattan Uppdrag 2. Geometrimattan Uppdrag 1. Geometrimattan Uppdrag 4. Geometrimattan Uppdrag Aima din Sphero. 1. Aima din Sphero.

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

OOP Tentamen

Transkript:

Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.00, sal D31 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel tillåtna och på problemdelen är alla skriftliga hjälpmedel tillåtna. Man löser teoridelen först, lämnar in den, hämtar problemdelen och tar sen fram sina böcker m.m. Använd absolut inte mer än 2 timmar till teoridelen! Teoridelen har 20 poäng och problemdelen har 32 poäng. Dessutom kan man få tentapoäng för avklarade laborationer. 1-2 labmoment klara ger 1 bonuspoäng, 3-4 labmoment klara ger 2 bonuspoäng och om man gjort samtliga labmoment så får man 4 bonuspoäng som läggs till det man erhåller på tentan. Preliminära betygsgränser: För godkänt krävs 25 poäng varav minst 10 poäng från problemdelen, för betyg 4 krävs 35 poäng och för betyg 5 krävs 45 poäng. Problemdel Uppgifterna är inte ordnade efter svårighetsgrad. Delvis riktiga lösningar kan alltid ge poäng. Försök därför lösa uppgifter även om du inte förstår till 100%. Om en uppgift ser ut att bygga på en annan är det alltid tillåtet att försöka lösa den även om man inte löst den föregående. Poängavdrag kan göras för klumpiga lösningar, även om de fungerar. Poängavdrag görs inte för små syntaxfel eller skrivfel. P1) (4p) Ett gränssnitt för en kö kan se ut så här: interface IQueue { public boolean isempty(); public void put(object o); public Object get (); Kön kan förstås implementeras på flera olika sätt men vi tänker oss här att den implementeras som en enkellänkad lista. Köobjektet har referenser till sitt första och sitt sista element (first och last) och varje element har en referens till nästa i kön. Varje element (eller nod) i kön har dessutom en referens (info) till det som skall stå i kön. I denna kö ska endast stå objekt av klassen Person, varje person har ett förnamn och ett efternamn, båda av typ String. Rita ett UML-klassdigram över kön inklusive IQueue. Metodnamn behöver inte vara med i diagrammet. 1

P2) (16p) Designmönstret Composite skall användas i ett program som hanterar geometriska figurer och grupper av sådana figurer. En grupp kan som medlem ha både grupper och enkla figurer så att en hierarkisk struktur kan åstadkommas, allt enligt mönstret Composite. I uppgiften beaktar vi bara klasserna Figure, Rectangle, Square och Group och vi implementerar dem inte fullständigt. Följande är givet: abstract class Figure { int x1, y1; // övre vänstra hörnet int x2, y2; // nedre högra hörnet Figure owner; // sätts om figuren tillhör en grupp Figure () { Figure (int x1, int y1, int x2, int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; void setowner (Figure f) { owner = f; void add (Figure f) { void remove(figure f) { void ungroup () { void ungroupr () { class Rectangle extends Figure { Rectangle (int x1, int y1, int x2, int y2) { super(x1,y1,x2,y2); void setwidth (int w) { x2 = x1 + w; void setheight (int h) { y2 = y1 + h; // fler metoder class Square extends Rectangle { Square (int x1, int y1, int x2) { super(x1,y1,x2,y1 + (x2-x1)); // fler metoder 2

Variablerna x1, y1, x2, y2 antas innehålla koordinater för figurens övre vänstra och nedre högra hörn. Kontroller av dessa variabler behöver inte göras, antag att de ges riktiga värden! Uppgifterna a och b kan lösas helt utan kunskaper om designmönster. P2a) (2p) Metoderna setwidth och setheight definieras i klassen Rectangle och ärvs av klassen Square. Metoderna gör det möjligt att oberoende ändra bredd och höjd på rektangeln vilket är rimligt för en rektangel men inte för en kvadrat. Definiera om dessa metoder i klassen Square så att de kan anropas för Square objekt men säkerställer att de två sidorna hos ett Square objekt alltid är lika långa. P2b) (svår)(2p)dendefinitionavsquare som vi gjort i uppgift a kan ge problem i vissa situationer. Kan du beskriva någon sådan situation och hur problemet kan åtgärdas? Svara helst med mer resonemang än programkod! P2c) (9p)VarjeFigure objekt som är med i en grupp skall ha en referens till sin ägare, instansvariabeln owner. Denna är null så länge objektet inte tillhör någon grupp. Se till att denna sätts riktigt i uppgifterna nedan! Skriv klassen Group enligt Composite-mönstret. Den skall ha följande metoder: add för att lägga till ett Figure objekt(2p) remove för att ta bort ett visst element ur gruppen (1p) ungroup (avgruppera) för att lösa upp gruppen och lägga alla dess medlemmar på den nivå där själva gruppobjektet låg. Gruppobjektet ska bort och inte ligga kvar som en tom grupp. Gör metoden så att den endast avgrupperar i ett steg, ev grupper i gruppen ska inte avgrupperas. Se exempel på nästa sida! För en grupp utan owner ska metoden inte göra något alls. (4p) ungroupr utvidga ungroup så att den avgrupperar alla grupper i gruppen, dvs en grupp som är komplicerad hierarkisk struktur av figurer ska bli en grupp med bara icke-grupp-medlemmar som alla är på samma nivå, se exempel på nästa sida! (1p) För klassen Group utöver metoderna ovan ges 1p. P2d) (3p) Skriv satser som skapar en grupp sammansatt som G2 nedan. Uppgiften går utmärkt att lösa även om man inte löst P2c alls! G2 Rec Rec _ G3 Sq Sq Rec 3

G1 G1 _ G2 Sq Rec Rec Rec Sq Rec _ G3 Rec Rec _ G3 Sq Sq Rec Sq Sq Rec Avgruppering i ett steg med ungroup av G2 i strukturen ovan till vänster skall ge det som visas ovan till höger. Figurobjekten får hamna i en annan ordning efter avgruppering, det väsentliga är att de ligger på rätt nivå. Avgruppering av G1 på någon av strukturerna skall inte ge någon ändring alls. Avgruppering med ungroupr av G2 ovan skall ge strukturen nedan: Ordningen mellan objekten i gruppen G1 får vara en annan än den som visas här. G1 _ Rec Rec Sq Sq Rec Sq Rec 4

P3) (12p) Skriv ett fristående program (application) som simulerar ett vanligt trafikljus med en röd, en gul och en grön lampa som tänds och släcks. Tänd först den röda, efter en stund den gula (båda ska vara tända ett tag), släck därefter både röd och gul och tänd den gröna. Efter en tid med grönt, börja om igen med röd lampa och upprepa detta så länge programmet är igång. Man skall kunna starta simuleringen med en knapp med det krävs inte att den går att stoppa. Se figuren! Skriv först en klass Lampa som används för tre lampobjekt med olika färg. En startknapp under de tre lamporna skall starta simuleringen. Använd lämpliga Layoutmanagers för att få den struktur som bilden visar. En eller flera trådar skapade av användaren skall användas för simuleringen. Uppgiften går att lösa genom att ge varje lampobjekt en egen tråd som sköter dess simulering eller låta en enda tråd sköta simulering av alla tre. Med en tråd per lampobjekt så bör man egentligen se till att trådarna väntar in varandra så att t.ex. den röda och den gröna lampan inte råkar vara tända samtidigt. Detta krävs dock inte för full poäng. Utan tråd, halva poängen För ett program som inte simulerar trafikljuset men ritar upp en svart rektangel med en start-knapp under, och efter tryck på startknappen visar en röd, en gul och en grön lampa som alla är objekt av klassen Lampa, ges maximalt 6p. 5