DELPROV1. Objektorienterad programmeringsmetodik, 7.5p 5DV081, 5DV109

Relevanta dokument
Objektorienterad programmering, Java, 5p TDBA63

DELPROV2. Objektorienterad programmeringsmetodik (för ÖI), 7.5p 5DV081, 5DV090

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

TENTAMEN I DATAVETENSKAP

DELPROV 1 I DATAVETENSKAP

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN. Kurs: Applikationsutveckling i Java 5DV135. Ansvarig lärare: Johan Eliasson. HT12 Datum: Tid: kl

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

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

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

Föreläsning 5-6 Innehåll

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

Generisk klass med typparameter Inre klass - ListIterator

PRAKTISKT DELPROV I DATAVETENSKAP PROGRAMMERINGSMETODIK OCH

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

Tentamen i Programmeringsteknik I, ES,

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

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

DELPROV2 OBJEKTORIENTERAD PROGRAMMERING I JAVA

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

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

Tentamen i Grundläggande programmering STS, åk

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.

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

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen, EDAA10 Programmering i Java

Tentamen i Programmeringsteknik I

Tentamen i Programmeringsteknik I

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

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

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

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 i Programmeringsteknik I,, KandMa/Fy,

PROGRAMMERING I ETT OBJEKTORIENTERAT SPRÅK (JAVA), 5P

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.

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ösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

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

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

Tentamen Programmering fortsättningskurs DIT950

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Tentamen, EDA501 Programmering M L TM W K V

Objektorienterad Programkonstruktion. Föreläsning jan 2016

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

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 i Grundläggande programmering STS, åk

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

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

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

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:

DELPROV2 OBJEKTORIENTERAD PROGRAMMERING I JAVA

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Del A (obligatorisk för alla)

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Tentamen ID1004 Objektorienterad programmering April 7, 2015

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

Tentamen i Programmeringsteknik I

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

Tentamen FYTA11 Javaprogrammering

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

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

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

Kopiering av objekt i Java

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

trafiksimulering Intro OU5 trafiksimulering

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

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

OOP Tentamen

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Laboration 1 - Grunderna för OOP i Java

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

DAT043 Objektorienterad Programmering

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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 i Grundläggande Programvaruutveckling, TDA548

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

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

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

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

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.

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

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

Transkript:

UMEÅ UNIVERSITET Datavetenskap 100524 DELPROV1 Objektorienterad programmeringsmetodik, 7.5p 5DV081, 5DV109 Datum : 100524 Skrivtid : 4 timmar Hjälpmedel : Allt. Kommunikation med andra personer (direkt eller indirekt) är dock inte tillåten, som t ex via mail, mobiltelefon, gemensamma kataloger etc. Antal uppgifter : 4 Totalpoäng : 32 (halva poängtalet av Delprov1+Delprov2 krävs normalt för godkänt) Kryssa för de uppgifter du lämnar in på försättsbladet. Tankegången skall vara lätt att följa. Alla antaganden som inte är uppenbara skall redovisas. Namn, personnummer, användarnamn och sökvägen till filen/filerna skall finnas på all källkod som skrivs ut. Källkod skrivs ut i ett ickeproportionellt typsnitt (t.ex. courier). Tips! Försök lösa alla uppgifter! Observera att uppgifterna inte är ordnade efter svårighetsgrad. Det är ditt ansvar att övertyga om att du besitter den kunskap som efterfrågas. Uppgifter kan vara felformulerade, fråga om du är osäker eller tycker att något verkar konstigt. Redovisa dina resonemang så är det lättare att bortse från skrivfel. Det är viktigt att du löser den givna uppgiften! OBS! Kontrollera att din dator fungerar innan du börjar på allvar. Lycka till! Innan du börjar skall du ha skapat en katalog för provet. Katalogen ska heta pp100524 och finnas i katalogen edu/java i er hemkatalog UMEÅ UNIVERSITET 901 87 UMEÅ Johan Eliasson Tel.: 070-2378695 e-mail: johane@cs.umu.se

Regler för det praktiska provet Detta är en del av examinationen och skall alltså ske under tentamensliknande förhållanden. Examinationen är individuell och betygsgrundande. Detta får följande konsekvenser: o Man är personligt ansvarig för de lösningar som lämnas in o Om man hittar lösningar eller delar av lösningar på nätet eller i litteraturen bör detta tydligt anges. Du är fortfarande skyldig att själv vara fullständigt insatt i den lösning du redovisar och på uppmaning ska du kunna svara för innehåll och funktion i hela eller delar av lösningen. o Självklart får man inte söka eller hämta kod från någon av de övriga tentanderna, detta betraktas som fusk och handläggs som sådant Några riktlinjer för hur lösningarna bedöms: o Koden skall följa god programmeringsmetodik, vilket t.ex. innebär konsekvent indenterad och lämpligt kommenterad källkod. o Lösningen behöver inte gå att kompilera för att ge full poäng, så låt inte troliga syntaxfel ta för mycket tid i anspråk om du känner dig övertygad om att du löst det givna problemet. o Det räcker därför inte att en lösning fungerar för att ge full poäng, även här måste man på ett rimligt sätt underordna sig kravet på god programmeringsmetodik Källkod till några av uppgifterna finns tillgängligt på websidan: http://www.cs.umu.se/kurser/5dv109/vt10/pp/3467.html 2

Uppgift 1. (8 poäng) Sjöfartsverket vill förbättra säkerheten till sjöss och vill därför införa ett varningssystem som kan upptäcka när risk för att två fartyg ska kollidera föreligger. Klasserna Ship, Speed2D och Position2D som representerar olika fartyg och deras position och hastighet har redan blivit utvecklade (Dessa klasser finns tillgängliga på websidan för praktiska provet och ni behöver alltså ej skriva dem). Kollisionsrisk mellan två fartyg antas föreligga om någon av fartygens position inom någon av de närmsta 10 minutrarna (det räcker att kolla båtarnas förväntade position för varje hel minut under dessa 10 minutrar) skulle komma inom 100 meter från varandra givet deras nuvarande position och fart. Du ska skriva en klass som till sin konstruktor tar in en array med fartyg. Klassen ska även ha en metod checkcollitionwarning som när den anropas så ska undersöka mellan vilka fartyg bland dem som man fick in till konstruktorn som kollisionsrisk föreligger. Metoden ska ha följande signatur: java.util.list<ship> checkcollitionwarning() och ge tillbaka en lista med alla fartyg som riskerar att kollidera med något annat fartyg (varje fartyg ska bara finnas med en gång i listan). public class Ship { private Position2D pos; //position i koordinatsystemet private Speed2D speed; private int id; public Ship(Position2D pos, Speed2D speed,int id) { try { this.pos=(position2d) pos.clone(); catch(clonenotsupportedexception e) { throw InternalError(e.toString()); this.speed=speed; this.id=id; public int getid(){ return id; //Flytta fram fartygets position givet nuvarande fart public void move() { pos.move(speed.getdx(),speed.getdy()); public void updatespeed(speed2d speed) { this.speed=speed; //Ger tillbaka fartygets förväntade position givet 3

//nuvarande fart och position minutes minuter efter //nuvarande tid. public Position2D estimatedfutureposition(int minutes) { Position2D p; try { p=(position2d) pos.clone(); catch(clonenotsupportedexception e) { throw new InternalError(e.toString()); p.move(minutes*speed.getdx(), minutes*speed.getdy()); return p; public class Speed2D { private int dx; private int dy; public Speed2D(int dx, int dy) { this.dx=dx; this.dy=dy; public int getdx() { return dx; public int getdy() { return dy; public class Position2D implements Clonable{ private int x; private int y; public Position2D(int x, int y) { this.x=x; this.y=y; public int getx() { return x; public int gety() { return y; 4

public void move(int dx, int dy) { x+=dx; y+=dy; //Calculate the distance in meters between 2 positions public double distance(position2d other){ double d=math.sqrt((other.x-x)* (other.x-x) + (other.y-y)* (other.y-y)); return d; public Object clone() throws CloneNotSupportedException { return super.clone(); 5

Uppgift 2. (8 poäng) Definiera en klass SkyddadArray vars instanser kan användas på ett liknande sätt som arrayer av int-värden, med den skillnaden att det inte är möjligt att ändra värdet på en position sedan man tilldelat den ett värde första gången (oberoende av vad värdet sates till). Låt klassens konstruktor ta en parameter som bestämmer längden på arrayen och initiera den så att alla värden i början är 0 (noll). Metoden void setvalue(int pos,int value) ska sätta värdet på positionen pos i arrayen till värdet value (om detta inte redan är gjort vid något tidigare tillfälle). Om setvalue inte får sätta om värdet (pga att det redan är gjort en gång för den positionen) ska ett undantag kastas (tex ett RuntimeException). Förutom denna metod ska klassen ha ytterligare en metod int getvalue(int pos) som returnerar vilket värde en viss position har. Ev. övriga attribut och metoder som ni behöver för att åstadkomma beteendet hos dessa två får ni lägga till vid behov. Uppgift 3. (8 poäng) Ett företag har två typer av anställda. Dels finns det personer som är anställda med timlön (HourlyWorker) och dels finns det personer med månadslön (SalariedWorker). Systemet identifierar varje anställd genom ett id-nummer och deras namn. Företaget vill utveckla ett system för att beräkna de sammanlagda månadsutgifterna för personalens löner. Din uppgift är att skriva de klasser som ska representera de olika typerna av arbetare. Dina klasser ska fungera tillsammans med nedanstående test (finns även tillgängligt på websidan för det praktiska provet) public class ComputeWagesBill { public static void main(string[] args) { Worker[] staff = { // ID Namn Lön Timmar new HourlyWorker (12, Bender, 190.0, 200), new SalariedWorker(34, Fry, 25000.0), new HourlyWorker (56, Zoidberg,5.50, 60), new SalariedWorker(78, Leela, 32000.0) ; double sum=0.0; for (int i=0; i<staff.length; i++) { //Ska skriva ut id namn och månadsinkomst System.out.println(staff[i]); sum+=staff[i].monthlywage(); System.out.println( Total monthly wage bill is +sum); 6

Uppgift 4. (8 poäng) Tag fram ett förslag på design till ett bokningssystem för gruppträningspass på IKSU. Beskrivning av systemet: På IKSU finns flera typer av träningspass, där varje typ av pass ges några gånger per vecka. På ett pass kan ett begränsat antal motionerande delta och det maximala antalet deltagare varierar mellan passtyperna. För att boka in sig på ett pass måste man ha ett träningskort. Träningskorten finns i flera olika utföranden. Den motionär som innehar ett lyxkort får boka alla passtyper, medan den som köpt budgetkortet bara får boka vissa typer av pass. En motionerande får ha maximalt 10 inbokade pass åt gången och dessutom är det inte möjligt att boka ett pass som ligger mer än en vecka framåt i tiden. Kortägarna ska ha en möjlighet att avboka ett pass, men får senast göra detta 24 timmar innan passet ska börja. Dyker man inte upp på ett inbokat pass så får inte kortinnehavaren boka några fler pass till dess att man betalat en straffavgift på 50kr. Minst följande funktionalitet ska finnas i systemet: Nya kortinnehavare ska kunna registreras Kortinnehavare ska kunna boka pass Man ska kunna lägga till nya pass Systemet ska kunna lista pass där det finns lediga platser Man ska kunna ta fram en deltagarlista för ett pass Man ska kunna avaktivera kort för deltagare som ej dykt upp på ett pass Samt återaktivera kort för motionär som har haft sitt kort avstängt, men som betalat straffavgiften Observera att uppgiften går ut på att modellera (ej implementera) bokningssystemet. Du behöver heller inte fundera över något som rör användargränssnittet. Lämna in en beskrivning av designen som innehåller alla klasser och hur de hänger ihop i form av ett UML klassdiagram. För varje klass ska alla viktiga attribut och metoder finnas med. Motivera era designval väl! Designen kan ni göra antingen i valfritt program, eller direkt på papper. 7