Skapa queue
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
- 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.
Filenmain.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
Skapa en fil med namnet
queue.py
i “queue” mappen. Kopiera koden för en Queue och klistra in i queue.py filen.Skapa en fil med namnet
node.py
i “queue” mappen. Kopiera koden för en Node och klistra in i node.py filen.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 attributetitems
tillhead
i Queue klassen. Användhead
för att referera till första noden i kön.Det är helt OK att lägga till fler metoder/attribut om man vill det i Queue klassen.
Skapa en fil med namnet
errors.py
i “queue” mappen. Här skall du skapa ett eget exception med namnetEmptyQueueException
. Denna skall lyftas när man använderpeek()
ellerdequeue()
på en tom kö.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
- 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.