Fiktiv Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java

Relevanta dokument
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 29 november 2003 kl , sal D34.

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

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Klasser och objekt i C#

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Objektorienterad programmering i Java

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

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

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

Tentamen i Programmering grundkurs och Programmering C

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Skriva B gammalt nationellt prov

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

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

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

OOP Objekt-orienterad programmering

Objektorienterad programmering D2

Lab5 för prgmedcl04 Grafik

Du ska nu skapa ett litet program som skriver ut Hello World.

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

Hur skapar man formula r

Övningar Dag 2 En första klass

TIMREDOVISNINGSSYSTEM

2D1339 Programkonstruktion för F1, ht 2003

Laboration 1 - Grunderna för OOP i Java

Mera om generik. Innehåll. Generik och arv Wildcards Vektorer och generik Generiska metoder. EDA690 (Mera om generik) HT / 24

Introduktion till arv

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

729G04 - Hemuppgift, Diskret matematik

Programmera en NXT Robot

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

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

Gissa det hemliga talet

ELEV- HANDLEDNING (Ansökan via webben)

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

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Tentamen OOP

Distribuerade Informationssystem VT-04

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

PROGRAMMERINGSTEKNIK TIN212

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

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

Vi skall skriva uppsats

Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck

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

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

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

Laboration 3, uppgift En klass för en räknare

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

Arbeta bäst där du är Dialect Unified Mi

Träning i bevisföring

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

Ha det kul med att förmedla och utveckla ett knepigt område!

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Webb-bidrag. Sök bidrag på webben Gäller från

Lathund till Annonsportalen

Tentamen i Objektorienterad programmering

Två konstiga klockor

Malmö högskola 2008/2009 CTS

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

Handbok Ämnesprov 2016 Lärarinmatning I Dexter Åk 3. Uppdaterad: /HL Version: IST AB

Individuellt Mjukvaruutvecklingsprojekt

OOP Omtenta

Laborationspecifikation

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

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

Design by. Manual Jossan.exe. Manual. till programmet. Jossan.exe. E-post:

Kurs: HF1012, Matematisk statistik Lärare: Armin Halilovic Datum: Måndag 30 mars 2015 Skrivtid: 8:15-10:00

Datorövning 2 Statistik med Excel (Office 2007, svenska)

Objektsamlingar i Java

Arbetsbeskrivning, att förbereda för studenternas registrering kommande termin. 1. Studenter antagna på fristående kurs 2

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

HT 2011 FK2004 Tenta Lärare delen 4 problem 6 poäng / problem

Sammanfatta era aktiviteter och effekten av dem i rutorna under punkt 1 på arbetsbladet.

Snabbslumpade uppgifter från flera moment.

2D1310, 2D1311 Programmeringsteknik Tentamen (1p) 3 maj 2001, kl

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

Objektorienterad programmering

Objektorienterad programmering

Tränarguide del 1. Mattelek.

JAVA Mer om klasser och objektorientering

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

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

Menys webbaserade kurser manual för kursdeltagare. Utbildningsplattform: Fronter

HI1007, Objektorienterad programmering med Java

Lathund, procent med bråk, åk 8

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Examensarbete är det en kurs? Inst. för Samhällsbyggnad 2009

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Laboration 1: Figurer i hierarki

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Transkript:

Fiktiv Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java 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 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 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 34 poäng och för betyg 5 krävs 43 poäng. Teoridel T1) (4p) Förklara kort följande grundläggande begrepp inom objektorienterad programmering: a) Klass b) Instans c) Arv d) Inkapsling T2 (2p) a)vad menas med att en klass är abstrakt (abstract i Java) respektive att en metod är abstrakt? b) Vad använder man abstrakta klasser till inom objektorienterad programmering? Ge gärna ett exempel (helst utan programkod), det krävs dock inte. T3 (2p) a) Vad menas med multipelt arv? Beskiv i ord i en mening och rita ett UMLdiagram. b) Vissa OO-språk, t.ex. Java har inte multipelt arv. Då kan man använda s.k. komposition i stället. Beskriv denna teknik. T4 (2p) a) Förklara kort vad designmönster är. b) Nämn minst två fördelar med att använda designmönster. 1

Frågorna 5 14 är flervalsfrågor, skriv alla svar på ett blad! T5) Antag att klassen Model har instansmetoden doit. Efter satserna Model m1 = new Model(); Model m2 = m1; vad gäller för metodanropen m1.doit(); respektive m2.doit();? A) Endast m1.doit(); är tillåtet. m2.doit(); ger exekveringsfel. B) Endast m2.doit(); är tillåtet. m1.doit(); ger exekveringsfel. C) Både m1.doit(); och m2.doit(); är tillåtna och de två alternativen har exakt samma effekt. D) Både m1.doit(); och m2.doit(); är tillåtna men eftersom m1 och m2 refererar till olika Model - objekt så är arbetar doit med olika data i de två fallen. T6. Ett objekt som lyssnar efter händelser i en inmatningsruta, en TextField, i ett Javaprogram måste vara instans av en klass som A) ärver från en av klasserna Frame eller JFrame B) ärver från en av klasserna Panel eller JPanel C) definierar metoden actionperformed D) implementerar gränssnittet ActionPerformed T7) Vilket av följande påståenden om Javas interface är sant? A) Ett interface kan ärva från ett annat interface B) Ett interface kan ärva från en klass. C) Ett interface kan innehålla vanliga klassvariabler och instansvariabler D) Ett interface måste ha en konstruktormetod. T8) Vi sätter modifieraren private på konstruktorn till en klass som vi vill ha instanser av. Vi har bara skrivit en konstruktor. Vilket av följande påståenden är sant? A) Detta är fel, det kommer jualdrig att gå att anropa konstruktorn och därmed inte heller skapa några instanser av klassen. B) private på en konstruktor ignoreras av kompilatorn och det kommer att gå att anoropa konstruktorn ändå. C) En konstruktor med private kan inte anropas men vi kan jualltid skapa instanser m.h.a. den parameterlösa konstruktorn som alltid finns tillgänglig. D) private på en konstruktor används i implementationen av vissa designmönster, t.ex. om man vill begränsa hur många objekt av en klass som får skapas. T9) Javas paket awt för grafiska komponenter är uppbyggt enligt designmönstret A) Singleton B) Composite C) Template D) Abstract Factory 2

T10) Ett av följande påståenden om variabler och metoder är falskt. Vilket? A) I en parameterlös klassmetod får man använda klassens klassvariabler. B) I en parameterlös klassmetod får man använda klassens instansvariabler. C) I en parameterlös instansmetod får man använda klassens klassvariabler. D) I en parameterlös instansmetod får man använda klassens instansvariabler. T11) Vilket av följande påståenden om trådar i Java är sant? A) När man ska skapa en tråd själv måste man skriva en klass som ärver från Thread och implementerar gränssnittet Runnable B) När man vill starta en tråd så anropar man klassmetoden start() C) När man vill starta en tråd så anropar man instansmetoden start() D) Trådar kan endast användas i grafiska program, dvs skapas subklasser till klasser ut awt eller swing. T12) Vilket av följande påståenden om arbetsmetodiken Extreme Programming, XP är falskt? A) Programmerarna arbetar parvis. B) Skriv testprogram för en klass innan själva klassen skrivs. C) Använd allmänt gällande standard för namngivning av variabler och metoder, för fortmattering o.s.v. D) Tänk alltid på vilka ändringar av programmet som kan förväntas och försök programmera dessa i förväg. T13) Metoden ritafigur ritar en intressant figur. Metoden deklareras i en Applet och skall ha en skalfaktor, x- och y-värden för dess position samt ett Graphics - objekt som parametrar: void ritafigur (int skala, int xpos, int ypos, Graphics g) { // Här finns de satser som ritar figuren. I vilket av följande alternativ görs ett korrekt anrop av metoden ritafigur? Vi antar i samtliga fall att g är definierad där anropet sker och refererar till ett Graphics-objekt. Metodanropen görs i paint-metoden i den Applet där ritafigur är deklarerad. A) Figur f = ritafigur(20, 100, 200, g); B) int skala = 30; int xpos = 250; int ypos = 100; ritafigur(g); C) for (int x = 100; x <= 800; x +=50) ritafigur(40, x, 200, g); D) for (int x = 100; x <= 800; x +=50) ritafigur(g, 40, x, 200); 3

T14) Studera följande klasser. Vad blir utskriften från main-metoden? class X { void m () { System.out.print("Hej "); class Y extends X { void m () { System.out.print("Hopp "); class Test { public static void main (String[] a) { X x1 = new X(); X x2 = new Y(); Y y = new Y(); x1.m(); x2.m(); y.m(); System.out.println(); A) Hej Hej Hopp B) Hej Hopp Hopp C) Hej Hej Hej D) Hopp Hopp Hopp 4

Problemdel Uppgifterna är inte ordnade efter svårighetsgrad P1) (4p) Rita ett klassdiagram efter följande beskrivning: En skola består av (med komposition) en eller flera avdelningar. Varje avdelning tillhör precis en skola. En avdelning kan inte existera utan en skola. På en skola kan det gå noll eller flera studenter. Varje student går på precis en skola. En kurs är knuten till en eller flera avdelningar. En student följer noll eller flera kurser, en kurs läses av noll eller flera studenter. Varje avdelning har en eller flera lärare. En lärare kan tillhöra flera avdelningar men kan inte existera utan minst en avdelning. Chefslärare är en subklass till lärare. En chefslärare är chef för varje avdelning. Namn och riktningar på associationerna krävs inte men multipliciteter ska anges. Attribut och metoder behövs inte heller anges. 5

P2) DesignmönstretSingleton används som bekant när man vill ha en klass av vilken det endast finns en instans och det ska vara omöjligt för användare av klassen att skapa flera intstanser. I denna uppgift skall idén från Singleton användas för att skapa en klass Dvarg med precis 7 element (för att t.ex. använda i Sagospelet Snövit och de sju dvärgarna). Endast en dvärgegenskap behöver implementeras, dvärgens namn eller nummer. Välj själv! a (6p) Skriv klassen Dvarg. Det skall inte gå att skapa element av klassen med new. Klassen skall ha klassmetoden getdvarg(i) som ger en referens till objekt nr i för i =0, 1,..6. För alla andra värden på i ska metoden ge null. Instansmetoden tostring() skall ge en presentation av dvärgen i stil med "Jag är Glader". Klassen ska kunna testas med följande två program. DvargTest1 skall inte gå att kompilera därför att konstruktorn (med rätt parameter) ej går att anropa utifrån. class DvargTest1 { public static void main (String[] x) { Dvarg d = new Dvarg("Glader"); // eller new Dvarg(3); Testprogrammet class DvargTest2 { public static void main (String[] x) { for (int i=-1; i<= Dvarg.N; i++) System.out.println(Dvarg.getDvarg(i)); skall ge en utskrift liknande (det går bra med siffror i stället för namnen) null Jag är Blyger Jag är Butter Jag är Glader Jag är Kloker Jag är Prosit Jag är Toker Jag är Trötter null b) (2p)IDvarg klassen antar vi juatt antalet instanser är 7, klassvariabeln Dvarg.N har värdet 7. Hur kan man göra om man i en annan liknande klass vill att en användare ska kunna bestämma vilket antal instanser klassen ska ha innan man börjar använda instanserna? Antalet skall bara kunna sättas en gång. 6

P3) Städer har alltid ett namn och ett antal invånare. Vissa städer (t.ex. Falun och Örebro) är residensstäder där det bor en landhövding. Andra städer (t.ex. Skara och Strängnäs) är stiftsstäder och i varje sådan bor en biskop. a) (6p) Antag tills vidare att inga städer kan vara kombinerade stifts- och residensstäder. Denna situation kan beskrivas i Java med följande tre klasser. Skriv Javakod för de tre klasserna. Klasserna ska ha lämpliga konstruktorer. tostring() metoden ska för varje klass returnera ett String - objekt med all information: Först namn och antal invåndare. För residensstad skrivs dessutom t.ex. "residensstad, landshövding är Ingegerd Wernersson" och för stiftsstad skrivs t.ex. "stiftsstad, biskop är Hans Stiglund". Tänk på att inte upprepa kod! Stad private int antalinvanare private String namn public String tostring() Residensstad private String landshovding public String tostring() Stiftsstad private String biskop public String tostring() Om det i en annan klass finns ett array - objekt deklarerat Stad[] stad; som innehåller en blandning av vanliga städer, residensstäder och stiftsstäder så skall det vara möjligt att med skriva ut information om samtliga städer med for (int i=0; i< stad.length; i++) System.out.println(stad[i]); Utskriften skall bli olika för de olika typerna av städer. b) (1p) När satsen System.out.println(stad[i]); utförs anropas automatiskt metoden tostring(). Men det är olika metoder som anropas beroende på vilken typ objektet stad[i] har. Vad kallas detta? c) (1p) Skulle det vara bättre att låta klassen Stad vara abstrakt? Motivera svaret! 7

d) (2p, svår) Det finns städer som är både stifts- och residensstad, t.ex. Stockholm, Luleå, Växjö m.fl. I språk med multipelt arv kan för dessa skrivas en fjärde klass StiftsOchResidensstad som ärver från både Stiftsstad och Residensstad. Detta kan man inte göra i Java. Försök hitta på ett sätt att modellera alla stadstyperna så att typen Stad kan referera till objekt av alla 4 typerna någon typ kan referera till Residensstad samt StiftsOchResidensstad någon kan referera till Stiftsstad samt StiftsOchResidensstad typen StiftsOchResidensstad kan bara referera till objekt som är både Stiftsstad och Residensstad P4a) (7p) I ett program som används för bokning av bio- eller teaterbiljetter kan man ha användning för en klass om visar en plan över salongen med en numrerad ruta per plats och visar om platsen är bokad eller ej. Skriv en klass Salong som kan användas som en första prototyp för detta. Klassen ska visa upp en bild av salongen med namnet överst Vi antar lite förenklat att platserna kan representeras av en matris av objekt av Button eller en subklass till Button. När man skapar ett objekt ska salongens namn och antalet rader samt antalet platser per rad anges till konstruktorn. Platserna ska numreras enligt exemplet nedan. Platserna ska visas i en färg, t.ex. grönt, från början. Genom att klicka på en plats skall den anses bokad och markeras i annan färg, t.ex. rött. Om man klickar på en bokad (röd) plats ska den avbokas, dvs klickning ska i denna första version av klassen alltid betyda färgbyte. Numreringen av platserna ska göras så här: 33 34 35 36 37 38 39 40 32 31 30 29 28 27 26 25 17 18 19 20 21 22 23 24 16 15 14 13 12 11 10 9 1 2 3 4 5 6 7 8 För knapparnas färgbyten kan man ha nytta av metoderna setbackground(c) och getbackground() som båda finns i klassen Component. Den senare metoden returnerar en referens av typ Color P4b) (3p) Skriv ett program som testar klassen Salong genom att i ett Frame - objekt lägga in två salonger med olika namn och storlek. 8