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

Relevanta dokument
Objektorienterad programmering, Java, 5p TDBA63

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

TENTAMEN I DATAVETENSKAP

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

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

DELPROV 1 I DATAVETENSKAP

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

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

PRAKTISKT DELPROV I DATAVETENSKAP PROGRAMMERINGSMETODIK OCH

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

Tentamen, EDAA10 Programmering i Java

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.

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

TENTAMEN OOP

Del A (obligatorisk för alla)

trafiksimulering Intro OU5 trafiksimulering

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

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

DELPROV2 OBJEKTORIENTERAD PROGRAMMERING I JAVA

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.

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

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.

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

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

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Tentamen. Lösningsförslag

PROGRAMMERING-Java TENTAMINA

Tentamen i Programmeringsteknik I

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

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

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

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

Lösningsförslag övning 2.

Chapter 4: Writing Classes/ Att skriva egna klasser.

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 OOP

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

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

Det finns en referensbok (Java) hos vakten 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.

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Tentamen, EDA501 Programmering M L TM W K V

Tentamen FYTA11 Javaprogrammering

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

Exempel på användning av arv: Geometriska figurer

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

Tentamen i Programmeringsteknik I, ES,

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

Tentamen OOP

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

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

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

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. Arv. Arv (forts) Arv och abstrakta klasser

Det finns en referensbok (Java) hos tentavakten 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.

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Generisk klass med typparameter Inre klass - ListIterator

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

Laboration A Objektsamlingar

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

TENTAMEN OOP

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Laboration 1: Figurer i hierarki

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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

DELPROV2 OBJEKTORIENTERAD PROGRAMMERING I JAVA

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

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen i Programmeringsteknik I

Tentamen i Grundläggande Programvaruutveckling, TDA548

Tentamen i Programmeringsteknik I

Malmö högskola 2008/2009 CTS

Lösningsförslag tentamen FYTA11 Java

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.

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Lösningsförslag, tentamen FYTA11 Javaprogrammering

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.

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

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

Classes och Interfaces, Objects och References, Initialization

Malmö högskola 2007/2008 Teknik och samhälle

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

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

Transkript:

UMEÅ UNIVERSITET Datavetenskap 080319 DELPROV2 Objektorienterad programmeringsmetodik (för ÖI), 7.5p 5DV081, 5DV090 Datum : 080319 Skrivtid : 4 timmar (start ca 8:15 alt ca 13:00) 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 pp080319 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/5dv081/vt08/pp/1234.html 2

Uppgift 1. (8 poäng) Implementera en klass Tidtagarur med metoder nollställ, starta, stoppa och avläs. En instans av klassen är en representation av ett tidtagarur (och alltså kan användas för att ta reda på hur lång tid som har förflutit), som kan nollställas, startas, stoppas och avläsas. Du kan anta att avläsningen (som sker mha metoden avläs) alltid sker i millisekunder. Om tidtagaren stoppas och sedan startas igen så ska den bortse från den tid som förflutit då tidtagaren var stoppad, men ta hänsyn till tiden som förflutit innan stoppet. Att starta en tidtagare som redan är startad, eller stoppa en som redan är stoppad, ska inte ha någon effekt. Avläsning av tiden ska bara gå att göra på ett stoppat tidtagarur (metoden ska returnera -1 om någon försöker göra detta). Metoden nollställ ska nollställa tidtagaren (stoppa den och sätta den uppmätta tiden till 0). Ledning: Använd den statiska metoden System.currentTimeMillis(), som returnerar tiden i form av en long som anger antalet millisekunder sedan midnatt 1 januari 1970, för att beräkna hur lång tid som har förflutit. Ex på användning; Tidtagarur t=new Tidtagarur(); t.starta(); //Här skulle sak1 som tar tid kunna stå t.stoppa(); // Här skulle sak2 som tar tid kunna stå t.starta(); // Här skulle sak3 som tar tid kunna stå t.stoppa(); System.out.println(t.avläs()); /*Bör skriva ut sammanlagda tiden som sak1 och sak3 tog 3

Uppgift 2. (8 poäng) I denna uppgift så skall du skriva två stycken klasser, Circle och Rectangle, som skall ärva från klassen Shape nedan (Shape och Uppg2 är också tillgängliga på websidan för provet). Klasserna ska representera en cirkel respektive rektangel med en position och storlek. Klasserna skall vara skrivna så att koden i metoden main-metoden i klassen Uppg2 nedan fungerar. Ni måste själva lista ut vilka attribut och metoder som kan tänkas behövas för att få koden att fungera. import java.awt.point; public class Uppg2 { public static void main(string[] args) { double areasum=0; Shape mycircle = new Circle(new Point(20,20),20); /*Position,radius Rectangle myrectangle =new Rectangle(new Point(20,20),20,10); /*Position,height,width Shape[] myarray=new Shape[2]; myarray[0]=mycircle; myarray[1]=myrectangle; /*Calculate the sum of the areas of the two Shapes for(int x=0;x<2;x++) areasum=areasum+myarray[x].area(); System.out.println(areaSum); System.out.print( Position of the rectangle: ); System.out.println( ( + myarray[1].getposition().x +, + myarray[1].getposition().y+ ) ); //Should print (20,20) import java.awt.point; abstract class Shape { protected Point position; public Shape(Point pos) { position=pos; public Point getposition() { return position; /*-------------------------------------------------- *Abstract method for calculating the area of a shape. *-------------------------------------------------- abstract public double area(); Arean för en: cirkel = π*radien 2, rektangel = bredden*höjden 4

Uppgift 3. (8 poäng) Din kompis har just startat ett företag som hyr ut bilar. Hon behöver köpa mjukvara till företaget som kan hantera verksamheten. Hon ber dig att ta fram ett designförslag för systemet som hon kan använda vid förhandlingar med mjukvaruleverantörerna. Biluthyrningsfirman hanterar uthyrning och återlämnande av fordon. Det finns två typer av kunder, vanliga kunder och affärskunder från företag som får en speciell rabatt. En förare hyr ett fordon för en viss tidsperiod, specificerad via överenskommet datum och klockslag för hämtning respektive återlämning. Fordonet måste återlämnas till uthyrningsstället senast på angiven återlämningstid annars så måste en straffavgift betalas. Fordonen är indelade i olika kategorier (ekonomi, kompakt, standard, mellan, lyx) för vilka olika taxor tillämpas. Hyresavgiften beräknas genom att multiplicera antalet uthyrningsdagar med dagstaxan för aktuellt fordon. Förare under 25 år måste betala en extra försäkringsavgift. Lämna in ett förslag till design som innehåller lämpliga klasser och hur de hänger ihop. För varje klass ska viktiga attribut och metoder finnas med. Du ska beskriva din design genom ett UML-klassdiagram. OBS! I denna designuppgift ska du inte implementera någon kod. Du ska inte heller göra någon design för användargränssnittet till systemet. Lösningen ska innehålla en god objektorienterad ansats. 5

Uppgift 4. (8 poäng) I denna uppgift så ska ni skriva en implementation av en klass som hanterar logiken i mynt-/sedel-hanterare åt en affär. Givet har ni en klass Currency som svarar mot ett mynt eller sedel (finns även tillgänglig på websidan för det praktiska provet). Tillgängliga valörer på mynten/sedlarna är 1, 5,10,50,100,500 och 1000 kronor. Er klass ska ha minst följande publika metoder ArrayList<Currency> pay( ArrayList<Currency> amountpaid) Används för att göra en betalning. Summan av beloppen på mynten/sedlarna i amountpaid bör överstiga beloppet som ska betalas (och som satts med setamounttopay) annars ska ett undantag kastas. Returnerar eventuell växel (som ska tas från de mynt/sedlar som använts vid tidigare betalningar), eller en tom ArrayList om personen som handlade betalade med jämna pengar. Kan växel ej ges (på grund av att mynt/sedlar saknas ska ett undantag kastas). Se algoritm för växelutbetalningen nedan. void setamounttopay(int amounttopay) Sätter beloppet som ska betalas vid nästa betalning till att vara amounttopay minst en konstruktor Växelalgoritm Indata: tillgängliga växlingsmynt/sedlar, växelbelopp 1. Så länge som vi inte betalt tillbaka all växel 1.1. Välj ut ett mynt/sedel av högsta tänkbara valör som är under eller lika med växelbeloppet som är kvar bland de mynt/sedlar vi har till hands 1.2. Minska växelbeloppet med myntets/sedelns valör 1.3. Betala tillbaka myntet i växel Klassen Currency public class Currency implements Comparable<Currency> { private int value; * Konstruktor för Currency * @param value värdet på myntet/sedeln endast värdena * 1,5,10,50,100,500 och 1000 är giltiga. * @throws IllegalArgumentException om felaktigt värde på * parametern public Currency(int value) { if(value==1 value==5 value==10 value==100 value==500 value==1000) { this.value=value; else throw new IllegalArgumentException(""+value); 6

* Metod för att hämta värdet på myntet/sedeln * @return värdet public int getvalue() { return value; * Jämför detta mynt/sedel med ett annat objekt. * Mynt/sedlar med samma valör anses vara lika public boolean equals(object o) { try { Currency c=(currency) o; return value==c.value; catch(classcastexception e) { return false; * Genererar en hashkod för objektet public int hashvalue() { return value; * Storleksjämförelse av mynt. * @return Returnerar:<br> * -1 om parameterobjektet har ett värde som är mindre än * objektet<br> * 0 om objekten har samma värde<br> * 1 om parameterobjektet har ett värde som är större * än objektet vars metod anropades<br> public int compareto(currency c) { if(value>c.value) return 1; if(value<c.value) return -1; return 0; * Konverterar dett mynt/sedel till en sträng * @return Strängrepresentationen av objektet public String tostring() { return value + " kr"; 7