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

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

Kurskod D0010E Datum Skrivtid 5tim

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

Länkade strukturer, parametriserade typer och undantag

Föreläsning 10. ADT:er och datastrukturer

Sammansatta datatyper Generics: Parametrisk polymorfism

Objektorienterad programmering D2

ID1004 Laboration 4, November 2012

LULEÅ TEKNISKA UNIVERSITET

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

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

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

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Objektorienterad programmering i Java I

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

Laboration 1: Figurer i hierarki

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

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

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

Tentamen TEN1 HI

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

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

Classes och Interfaces, Objects och References, Initialization

TENTAMEN OOP

TENTAMEN I DATAVETENSKAP

Objektsamlingar i Java

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Laboration A Objektsamlingar

Arrayer (fält)

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen Datastrukturer (DAT037)

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

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

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

Tentamen i Introduktion till programmering

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.

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

PROGRAMMERINGSTEKNIK TIN212

LÖSNINGSFÖRSLAG TENTAMEN

Tentamen, EDAA10 Programmering i Java

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Tentamen i Algoritmer & Datastrukturer i Java

Programmering för språkteknologer I, VT2012. Rum

Kopiering av objekt i Java

Tentamen TEN1 HI

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

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

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

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

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

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. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

TENTAMEN OOP

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Tentamen TEN1 HI

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

TUTORIAL: KLASSER & OBJEKT

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

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 8: Exempel och problemlösning

Tentamen i Objektorienterad programmering

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning 2. Länkad lista och iterator

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

OOP Objekt-orienterad programmering

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

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

Föreläsning 4 Innehåll

Design av en klass BankAccount som representerar ett bankkonto

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

Föreläsning 3 Datastrukturer (DAT037)

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

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

Föreläsning 2. Länkad lista och iterator

Statistik över heltal

Objektorienterad programmering i Java

Observera. Tentamen Programmeringsteknik II Skrivtid:

Information. Computer

tentaplugg.nu av studenter för studenter

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

TDDC77 Objektorienterad Programmering

Tillämpad Programmering (ID1218) :00-13:00

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Tentamen ID1004 Objektorienterad programmering April 7, 2015

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

Transkript:

LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Tomas Johansson, 491000 Resultatet anslås senast 08-05-16 i A-huset. Tillåtna hjälpmedel: Inga Kurskod D0010E Datum 08-05-02 Skrivtid 5 tim Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det). 1. Teori och begrepp a) Man brukar säga att arv är en av de saker som skiljer objektorienterad programmering från annan programmering. Vad är arv och varför är det en fördel att använda arv när man programmerar? (2p) b) Vad är en typ och varför finns det typade programmeringsspråk? (2p) c) Ge en väsentlig anledning till att undantag (exceptions) bör finnas i programmeringsspråk. 2. Programmering a) Vad är skillnaden i funktion mellan en variabel som är statisk och en som inte är det? b) Dokumentering av datorprogram görs på olika sätt beroende på vad syftet är och för vem den skrivs. Hur dokumenterar du lämpligen ditt Javaprogram för... (a)... dig själv och andra som ska kunna ändra implementationen? (0.5p) (b)... andra programmerare som ska använda din kod utan att ändra i implementationen? (0.5p) (c)... företagets marknadsavdelning som ska sälja ditt program? (0.5p) (d)... din chef som ska övertyga företagets styrelse om att det projekt som ditt program är del av ska få fortsatt finansiering? (0.5p) c) Skriv en iterativ metod som beräknar produkten av elementen i en heltalsarray. d) Skriv en rekursiv metod double multiply(double x, int k) som returnerar kx beräknat som x + x +... + x }{{} k för k 0 dvs utan andra aritmetiska operatorer än addition. Om k = 0 är produkten noll. Annars kan resultatet beräknas med x + x +... + x = x + (x + x +... + x). }{{}}{{} k k 1 Du får anta att k 0 alltid gäller. 3. Spelläge I laboration 4 förekom ett kvadratiskt spelbräde representerat som ett objekt av typen GameGrid. I denna klass var spelplanen en 2-dimensionell heltalsarray private int[][] board (5p)

vars element endast kunde innehålla någon av heltalskonstanterna EMPTY, ME eller OTHER. Uppgift: Skriv en metod public int number(int n) till GameGrid som först kontrollerar att n är antingen EMPTY, ME eller OTHER (kastar undantag om inte) och sen beräknar antalet element i board som innehåller värdet n. Arrayen board är alltid kvadratisk och innehåller minst en rad (och kolumn). 4. Ändliga dubbeländade listor En lista är dubbeländad om man kan sätta in och ta bort element i både början och slutet, men inte inuti den. Den är ändlig om man, då den skapas, anger ett positivt heltal k och den sedan aldrig innehåller fler än k element. a) Skriv en klass FiniteList som implementerar ändliga dubbeländade listor. (3p) Operationerna insertfirst och removefirst ska sätta in respektive ta bort ett element först i listan, insertrear och removerear ska göra motsvarande sist i listan, och size ska slutligen ge antalet element i listan. Tips: Att implementera en länkad lista är onödigt krångligt. Du får dock inte använda Vector eller motsvarande ur Javas standard bibliotek. Vad bör hända om man försöker ta ut ett element ur en tom lista? Visst fungerar din implementation om man i olika ordning, och både i början och i slutet, totalt sätter in och tar bort långt fler än k stycken element utan att listan någon gång blir full eller tom? b) Inkludera i din listklass en metod public Iterator iterator() som ger tillbaka en iterator beskriven av gränssnittet Iterator nedan. Om någon av metoderna i a) anropas på listan efter att en iterator skapats, ska iteratorns metoder därefter enbart kasta undantag. Detsamma gäller om metoden remove anropas (metoden ska aldrig ha någon effekt annat än att den kastar ett undantag). (2p) 5. Filsystem (5p) <<abstract>> Item #name: String #parent: Directory +parent(): Directory +equals(ob:object): boolean Directory #list: FiniteList +Directory(name:String,parent:Directory) +add(f:item) +find(s:string): Item +tostring(): String File -content: Object +File(name:String,data:Object,parent:Item) +getdata(): Object +tostring(): String RootDirectory +RootDirectory(name:String) Figure 1: UML-diagram för Uppgift 5. Din uppgift är att skriva klasser som representerar objekt i en filstruktur, närmare bestämt följande klasser:

Den abstrakta klassen Item, som representerar generella filobjekt som kan finnas i filstrukturen. Alla filobjekt har ett namn, i form av en sträng, som alltid anges då ett filobjekt skapas. Varje filobjekt har en plats de ligger i, en s.k. förälder, som är en katalog. Metoden Director parent() ska returnera den katalogen. Filobjekt ska kunna jämföras med varandra. Två filobjekt är lika om och endast om de har samma namn. Det betyder att Item måste överskugga equals-metoden. Klassen File, som ärver Item. En fil innehåller data i form av ett Object, som anges i konstruktorn. Metoden Object getdata() returnerar datat. När en fils tostring-metod anropas ska filens namn returneras. Klassen Directory, som ärver Item. En katalog kan innehålla godtyckligt många filobjekt. När en katalog skapas är den tom. För att representera innehållet får du använda dig av klassen Finitelist från uppgift 4, även om du inte gjort den uppgiften. Metoden add(item f) lägger till ett filobjekt i katalogen. Om det redan finns ett filobjekt med samma namn ska undantaget RunTimeException kastas. Metoden Item find(string s) ska hitta filobjektet med namnet s som ligger i katalogen, och returnera det. Om det inte finns något objekt med det namnet ska undantaget RunTimeException kastas. När en katalogs tostring-metod anropas ska strängen som returneras innehålla katalogens namn, följt av innehållet i katalogen. Med andra ord ska strängen, förutom katalogens eget namn, innehålla strängrepresentationen av alla objekt som finns i katalogen. Det betyder att strängrepresentationen av en katalog dir innehåller strängrepresentationen av alla kataloger som ligger i dir. Klassen RootDirectory, som ärver Directory. Rotkatalogen ligger inte i någon annan katalog, vilket betyder att föräldern inte behöver anges i konstrueraren. Om man kör en rotkatalogs parent()-metod ska rotkatalogen själv returneras.

Errata (D0010E, 08-05-02) No errors found so far.

Existing suggested solutions (D0010E, 08-05-02) None.