Skapa queue

By . Latest revision .

Vi ska bygga om datastrukturen “queue”.
Utgå från koden för en Queue från övningen om datastrukturer och skriv om den så den inte använder Pythons inbyggda lista utan istället använder Node objekt för att hålla datan.

Så här kan det se ut när det är färdigt.

#Förkunskaper

Du har läst artikeln “Exceptions”.
Du har läst artikeln “Datastrukturer”.

#Krav

  1. Börja med att kopiera koden som ligger i example/queue. Mappen innehåller två filer, den viktiga är tests.py där alla tester behöver passera för att uppgiften skall bli godkänd.
    Filen main.py är ett färdigt cli program som kan användas för att hjälpa till med felsökningen, det är ingenting vi kommer att kolla på under rättningen.
# Ställ dig i kurskatalogen
# börja med att uppdatera mappen med senaste exempelkoden
dbwebb update
cp -ri example/queue me/kmom04/
cd me/kmom04/queue
  1. Skapa en fil med namnet queue.py i “queue” mappen. Kopiera koden för en Queue och klistra in i queue.py filen.

  2. Skapa en fil med namnet node.py i “queue” mappen. Kopiera koden för en Node och klistra in i node.py filen.

  3. Pythons inbyggda lista ska inte användas längre. Varje element i kön ska ligga i ett Node objekt och bilda en list struktur.
    Byt namn på instans attributet items till head i Queue klassen. Använd head för att referera till första noden i kön.

  4. Det är helt OK att lägga till fler metoder/attribut om man vill det i Queue klassen.

  5. Skapa en fil med namnet errors.py i “queue” mappen. Här skall du skapa ett eget exception med namnet EmptyQueueException. Denna skall lyftas när man använder peek() eller dequeue() på en tom kö.

  6. Se till att Queue klassen passerar alla tester.

# Ställ dig i kurskatalogen
#dbwebb validate list
dbwebb publish queue

Rätta eventuella fel som dyker upp och validera igen. När det ser grönt ut så är du klar.

#Extrauppgift

  1. Skapa ett klassdiagram över Queue klassen. Spara det som “klass.png” i “queue” mappen.

#Tips från coachen

Validera ofta. Så slipper du en massa valideringsfel i slutet av övningen.

Lycka till och hojta till i forumet om du behöver hjälp!

#Revision history

  • 2021-02-02: (D, moc) Uppdaterade kraven till att gå igenom tester.
  • 2019-02-01: (C, aar) Tog bort extrauppgiften om sekvensdiagram.
  • 2018-01-25: (A, lew) First version.

Document source.

Category: oopython.