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.
#Förkunskaper
Du har läst artikeln “Exceptions”.
Du har läst artikeln “Datastrukturer”.
#Krav
Alla kraven är för de som jobbar i grupp och ensamma. Det är inga specifika krav för de som jobbar i grupp.
- Börja med att kopiera koden som ligger i example/queue. Filen
main.py
är ett färdigt cli program som redan är implementerat och använder Pythons inbyggda kö. För att förstå hur programmet är uppbyggt kan ni kolla på Skapa en menu loop utan if-satser.
# Ställ dig i kurskatalogen
# börja med att uppdatera mappen med senaste exempelkoden
dbwebb update
cp -ri example/queue me/kmom05/
cd me/kmom05/queue
mkdir src
Skapa en fil med namnet
src/queue.py
i “queue” mappen. Kopiera koden för en Queue och klistra in i queue.py filen.Skapa en fil med namnet
src/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 liststruktur.
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
src/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ö.Byt ut så att
main.py
använder er egna Queue istället för Pythons.
# Ställ dig i kurskatalogen
dbwebb test queue --extra
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
- 2023-02-10: (A, aar) Första versionen.