Redovisning av inlämningsuppgifter



Relevanta dokument
Föreläsning 1 & 2 INTRODUKTION

Tentamen OOP

Tentamen, EDAA20/EDA501 Programmering

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

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket 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.

"if"-satsen. Inledande programmering med C# (1DV402)

Föreläsning 3-4 Innehåll

OOP Objekt-orienterad programmering

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

trafiksimulering Intro OU5 trafiksimulering

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

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

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

Tentaupplägg denna gång

Tentamen i Objektorienterad programmering

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 Programmeringsteknik I

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

Tentamen, EDA501 Programmering M L TM W K V

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

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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Objektorienterad programmering D2

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

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

Tentamen, EDA501 Programmering M L TM W K V

Föreläsning 13 och 14: Binära träd

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

Chapter 3: Using Classes and Objects

OOP Omtenta

Föreläsning 1 & 2 INTRODUKTION

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

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

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

Föreläsning REPETITION & EXTENTA

Editering, Kompilering och Exekvering av Javaprogram

Chapter 4: Writing Classes/ Att skriva egna klasser.

Tentamen, EDAA10 Programmering i Java

Tentamen, EDAA20/EDA501 Programmering

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

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

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

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

Objektsamlingar i Java

Del A (obligatorisk för alla)

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.

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Objektorienterad programmering

Presentation av trafiksimuleringsprojektet

Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

JAVAUTVECKLING LEKTION 7

Övningar Dag 2 En första klass

Tentamen, EDAA20/EDA501 Programmering

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

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

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

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008

Tentaupplägg denna gång

Programmering A. Johan Eliasson

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

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

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

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

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

SMD 134 Objektorienterad programmering

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

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Tentamen FYTA11 Javaprogrammering

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

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

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

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Föreläsning 6: Introduktion av listor

Anvisningar för utformning av sammandrag som mognadsprov

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Del A (obligatorisk för alla)

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

Laboration 10 - NetBeans

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Föreläsning 3.1: Datastrukturer, en översikt

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

Del A (obligatorisk för alla)

Tentamen i Programmering

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

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

2. Betrakta följande program, där fyra heltal läses från tangentbordet och några (ointressanta) beräkningar görs:

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Transkript:

Bilaga B Redovisning av inlämningsuppgifter 1 Rapportens innehåll Varje inlämningsuppgift ska redovisas med en skriftlig rapport. Rapporten ska vara häftad och försedd med ett försättsblad med uppgiftens namn, inlämningsdatum, gruppmedlemmarnas namn, inskrivningsår och student.lu.se-e-postadresser. Rapportens målgrupp är personer som kan programmera i Java men som inte känner till den aktuella uppgiften. Språket i rapporten ska vara korrekt. De tankegångar som redovisas ska vara tydliga och lätta att begripa. Det finns bra regler för detta: en mening ska uttrycka en tanke, nästa mening ska följa av den första, när man börjar på en ny tankegång så börjar man ett nytt stycke, och så vidare. Låt gärna någon annan granska rapporten och komma med synpunkter. Läs åtminstone själva igenom rapporten och försöka tänka er in i hur en läsare som inte känner till uppgiften uppfattar rapporten. När ni lämnar in en ny version av en rapport som inte är godkänd så måste ni naturligtvis ha åtgärdat alla brister som rättaren har påpekat. Följande avsnitt ska finnas i rapporten: 1 Bakgrund Här ska ni ge tillräcklig bakgrund så att läsaren (tänk på målgruppen) kan förstå vad uppgiften rör sig om. Gör det med egna ord; skriv inte av uppgiftstexten. Det gäller att beskriva de mest väsentliga delarna av uppgiften det är naturligtvis inte avsikten att allt som står i uppgiftstexten ska behandlas här. Komplettera det som står i uppgiften med era egna synpunkter och insikter. Om ni har använt andra källor än uppgiftstexten så ska ni ge hänvisningar till dessa. När man läst detta avsnitt ska man vara så väl insatt i problemet att man kan förstå er lösning. 71

72 Rapportens form 2 Modell Beskriv de klasser som finns i er modell. Beskriv sambanden mellan klasserna, vilka datastrukturer som används och vilken (viktig) information som skickas mellan klasserna. Använd gärna figurer för att förklara. Figurer ska förses med text som förklarar vad figuren beskriver. Informationen i detta avsnitt ska underlätta studiet av programkoden. Det är inte meningsfullt att beskriva sådant som en läsare (som ju behärskar Java) direkt kan utläsa ur koden. 3 Brister och kommentarer Kommentera sådant som kanske inte blev så bra och sådant som ni skulle gjort annorlunda om ni skulle gjort om uppgiften. Beskriv också sådant som kan verka som avsteg från uppgiften. Om ni har gjort sådana så måste ni motivera dem utförligt. Om ni har konstruktiva synpunkter på uppgiften eller på uppgiftens formulering så bör ni ta upp dem i detta avsnitt. 4 Programlistor Utskrift av alla klasser som ni skrivit. Varje klass och varje metod ska ha en dokumentationskommentar. Parametrarna till metoderna ska beskrivas, liksom metodernas resultat. Ni ska inte skriva kommentarer i programkoden. Om ni tycker att det är nödvändigt att kommentera programkoden så bör ni först undersöka om det inte är möjligt att förenkla koden så att den blir begriplig utan kommentarer. Man kan naturligtvis tänka sig andra sätt att strukturera; detta är bara en rekommendation. Avsnittet Brister och kommentarer behöver till exempel inte vara med om ni inte har några kommentarer. 2 Rapportens form Rapporten ska vara snygg och välformaterad och framställd med lämpligt ordbehandlingsprogram. Vi rekommenderar starkt att ni använder LATEX, men ni får använda valfritt program. Eftersom det blir ganska små rapporter så behövs ingen innehållsförteckning. Eventuella figurer ska vara ritade på dator. Samtliga sidor, utom försättsbladet, ska vara numrerade. Använd breda marginaler som i LATEX standardmall. Detta gör texten mera lättläst och underlättar för rättaren som skriver kommentarer i rapporten. Använd rak högermarginal. Det är viktigt för läsbarheten att man väljer bra typsnitt. Programkod och specifikationer ska skrivas med tecken som alla är lika breda. I LATEX bör du använda VerbatimInput (paketet fancyvrb) för att inkludera programkoden i rapporten (se datorlaboration 3 i Datorer och datoranvändning). All programkod ska vara korrekt formaterad och indragningarna ska vara korrekta. Programrader ska få plats på en rad (cirka 70 tecken). Blir raderna längre måste ni bryta dem på lämpliga ställen och sedan göra en korrekt indragning av det brutna resultatet. 3 Exempel på rapport I de följande avsnitten följer ett exempel på en rapport. Avsnittet Programlistor har förkortats för att spara plats. Försättsbladet ska vara en egen sida, men för att spara plats har vi här skrivit den som ett inledande avsnitt.

Exempel på rapport 73 Försättsblad Simulering av biltvätt Inlämningsuppgift 0, Programmeringsteknik för D/C Författare: Xerxes Yngvesson, D14 (dat14xyn@student.lu.se) Yasmin Kafai, C14 (dic14yka@student.lu.se) Inlämnad: 2014 09 21 1 Bakgrund Verksamheten vid en biltvättfirma som har två tvättstationer med något olika kapacitet ska simuleras. I den första tvättstationen tar en biltvätt 8 minuter, i den andra tar den 10 minuter. Bilarna anländer till anläggningen enligt en slumpmässig fördelning och ställer sig i en kö i väntan på att bli tvättade. Från kön körs bilarna in i en ledig tvättstation (om båda stationerna är lediga väljs den snabbaste). När en bil är färdigtvättad körs den ut ur tvättstationen och lämnar systemet. Skiss över anläggningen: Infart Kö av bilar Tvättstation 1 Tvättstation 2 Utfart Bilar anländer under 60 minuter. Simuleringen ska pågå så länge det finns någon bil i ankomstkön. Resultatet av simuleringen ska vara en tabell med bilnummer (1 för den första bilen som anländer, 2 för nästa, osv), ankomsttid, avgångstid och tvättstation för varje bil. Bilarnas ankomster ska beskrivas av en Poisson-process (se till exempel Rydén och Lindgren, Markovprocesser, Lund 2000, eller annan lärobok i matematisk statistik). 2 Modell Modellen av anläggningen innehåller följande klasser: SimWash CarWash WashingStation Car Entry Exit Queue Clock Innehåller main-metoden som skapar de permanenta objekten och utför simuleringen. Simuleringstiden och medelvärdet för antalet bilar som ankommer per minut läses in från tangentbordet när programmet startas. Beskriver biltvätten. Dirigerar bilarna till och från tvättstationerna. Beskriver en tvättstation. Håller reda på en bil som tvättas. Beskriver en bil. Samlar också statistik om bilen, till exempel ankomst- och avgångstid. Infarten till biltvätten, där smutsiga bilar anländer (under simuleringen anländer inte bilarna utifrån, utan de skapas av denna klass). Utfarten från biltvätten, där rena bilar lämnar systemet. Kön i vilken bilarna väntar på tvättning. Kön är implementerad med hjälp av en ArrayList. Håller reda på tiden i systemet, i minuter.

74 Exempel på rapport Simuleringen implementeras genom att programmet under hela simuleringstiden varje minut undersöker vad som ska ske. Följande händelser kan inträffa: En bil anländer till systemet. Detta hanteras av klassen Entry, som varje minut drar ett Poisson-fördelat slumptal som anger antalet bilar som anländer. En bil börjar tvättas (flyttas från kön till en tvättstation). Detta hanteras av klassen CarWash. En bil är färdigtvättad (flyttas från en tvättstation till utfarten). Också detta hanteras av klassen CarWash. En bil lämnar systemet. Detta hanteras av klassen Exit. De nämnda aktiva klasserna har alla en metod tick() som anropas varje minut. Även klassen Clock, som håller reda på tiden i systemet, har en sådan metod. Bilarna (Car-objekten) är helt passiva och skickas bara runt i systemet av de aktiva klasserna. Klasserna Queue och WashingStation är också passiva. Deras uppgift är att hålla reda på Carobjekt under tiden bilarna står i kö eller tvättas. 3 Brister och kommentarer Eftersom utskriften för varje bil sker när bilarna lämnar systemet kan det inträffa att bilarna inte skrivs ut i nummerordning. Det kan till exempel se ut på följande vis (bilnummer, ankomstminut, avgångsminut, tvättstation): 4 5 24 2 5 7 25 1 7 21 33 1 6 17 34 2 Uppgiften har lösts enligt specifikationen med två tvättstationer i biltvätten. Det innebär dock inga större svårigheter att ändra lösningen så att den klarar av ett godtyckligt antal tvättstationer. Tiden som simuleringen ska pågå (i uppgiften var det 60 minuter) läses in när programmet startas, liksom medelvärdet för antalet bilar som ankommer per minut. 4 Programlistor Klasserna finns i filer med samma namn som klasserna, till exempel finns klassen SimWash i filen SimWash.java. Samtliga filer finns i samma katalog som huvudprogrammet. 4.1 SimWash import java.util.scanner; /** SimWash innehåller main-metoden i biltvättsprogrammet */ public class SimWash { /** Läser in simuleringstiden och antalet bilar som kommer per minut, utför simuleringen */ public static void main(string[] args) { System.out.println("Hur länge ska simuleringen pågå?"); Scanner scan = new Scanner(System.in); int stoptime = scan.nextint(); System.out.println("Hur många bilar kommer per minut?"); double carsperminute = scan.nextdouble(); Clock clock = new Clock(); Exit exit = new Exit(); CarWash carwash = new CarWash(clock, exit); Entry entry = new Entry(carsPerMinute, carwash); while (clock.gettime() < stoptime) { clock.tick();

Exempel på rapport 75 entry.tick(); carwash.tick(); exit.tick(); while (carwash.moretodo()) { clock.tick(); carwash.tick(); exit.tick(); 4.2 CarWash /** Klassen CarWash beskriver tvättanläggningen */ public class CarWash { private Queue queue; // kön av väntande bilar private WashingStation[] stations; // tvättstationerna private Clock clock; // klockan private Exit exit; // utfarten /** Skapar en tvättanläggning med klockan clock och utfarten exit */ public CarWash(Clock clock, Exit exit) { this.clock = clock; this.exit = exit; queue = new Queue(); stations = new WashingStation[2]; stations[0] = new WashingStation(8, clock); stations[1] = new WashingStation(10, clock); /** Registrerar att bilen car ankommer, placerar den sist i kön */ public void cararrives(car car) { car.registerarrivaltime(clock.gettime()); queue.insert(car); /** Utför det som ska göras under aktuell minut: flyttar färdigtvättade bilar till utfarten, kör in väntande bilar i tvättstationerna */ public void tick() { // Bilarna måste flyttas till utfarten innan man // kan köra in väntande bilar i tvättstationerna for (int i = 0; i < stations.length; i++) { if (stations[k].carready()) { Car c = stations[i].getcar(); c.registerexittime(clock.gettime()); exit.carleaves(c); for (int i = 0; i < stations.length; i++) { if (!queue.empty() && stations[i].free()) { Car c = queue.first(); queue.removefirst(); c.registerwashingstation(i); stations[i].wash(c);

76 Checklista /** Undersöker om det finns bilar i kön eller i någon av tvättstationerna */ public boolean moretodo() { return!(queue.empty() && stations[0].free() && stations[1].free());... osv, liknande programlistor för samtliga klasser. 4 Checklista Kontrollera nedanstående punkter innan ni lämnar in en rapport. Texten är begriplig för personer i målgruppen Uppgift 1 Uppgift 2 Språket är korrekt och på rätt nivå för målgruppen Stavningen är korrekt Någon har läst rapporten och kommit med synpunkter Alla avsnitt finns med i rapporten Det finns korrekta hänvisningar till alla källor Avsnitten i rapporten är numrerade Uppgiftens namn, inlämningsdatum, våra namn, inskrivningsår och e-postadresser finns på försättsbladet Alla sidorna utom försättsbladet är numrerade Alla papper är ihophäftade Programmet löser den givna uppgiften enligt anvisningarna i uppgiften Varje klass och varje metod har en dokumentationskommentar Dokumentationskommentarerna ger all information som behövs Programlistorna och specifikationerna har rätt typsnitt Indragningarna i samtliga programlistor och specifikationer är korrekta Raderna i programlistorna är lagom långa Om det är en ny version av en inte godkänd rapport: alla brister som rättaren har påpekat har åtgärdats och den ej godkända rapporten bifogas