Datorsystem EIP

Aftonbladet eller Expressen

Uppgift

Dataypen queue_of_persons är en ordnad mängd av element som kan beskriva en kiosk-kö.

Nytillkomna kunder ställer sig sist i kioskkön och gamla kunder expedieras från början av kön. En person i kön har ett namn, ett ärende och en tid som anger hur lång tid som krävs för expedieringen av ärendet.

En kiosk av typen Drugstore har ett antal egenskaper, däribland:

Skriv en metod till en klass Drugstore. Metoden ska returna den kö som återstår när kiosken stängs.

Varje person i kön betjänas i time sekunder, eller mindre, om en kortare tid räcker för kundens ärende. När personen är färdigexpedierad tas han eller hon bort ur kön. Annars, om ärendet tar längre tid än time ställer sig personen sist i kön igen efter att ha minskat sin ärendetid med time.

Samtidigt närmar man sig stängningsdags. Den kund som expedieras vid stängningsögonblicket, expedieras färdigt, dock som vanligt max time sekunder, varefter luckan obönhörligen stängs. Du kan anta att alla kunder har anlänt när kiosken öppnar.

Ledning

Följande illustration kan kanske vara till din hjälp:

Man kan identifiera exempelvis följande klasser. Många andra lösningsstrategier är möjliga och lämpliga, men på denna uppgift krävs att du använder just dennna idé. Naturligtvis både kan och får du utveckla idén vidare.

Valet av klasser ska vara relevant. En generell listklass ska användas.

Anvisningar

Klassen List finns här i en anpassad version och ska användas under följande förutsättningar:

Redovisning

Redovisningen består av:
  1. lämpligt kommenterad programlistning
  2. en kortfattad beskrivning av den objektorienterade designen med klasser, arvshierarki, datafält och metoder, valda algoritmer och datastrukturer
  3. ett körexempel
Uppgiftslösningen ska i sin helhet spegla en god programmeringssed för Java och tillämpa klassbegreppet på ett meningsfyllt sätt.

Uppgiften får lösas individuellt eller i grupper om två. Om två personer arbetar tillsammans, ska båda aktivt delta i hela utvecklingsarbetet. En ren arbetsdelning, exempelvis programmering mot dokumentation är inte tillåten.



Anders Berglund
Last modified: Tue Oct 12 19:23:51 MET DST 1999