Laboration 4
Under dagens laboration lär du dig att översätta klass- och sekvensdiagram till körbar kod. Vi gör detta i form av en tävling.
Förberedelser
Ladda hem Python 3.7 och pip om du inte redan har det. Läs igenom föreläsningarna 2, 3 och 4.
Uppgiften
Din uppgift är att skriva den kod som behövs för att delta i en något så när interaktiv tävling. Till din hjälp får du lite källkod och ett gäng UML-diagram. Du slutför uppgiften och deltar i tävlingen genom att följa diagrammen till punkt och pricka. Gör du fel, kommer ditt program inte att fungera.
Deluppgift 1
Börja med att gå in på http://antontibblin.se/oop-labb/. Här ser du den scoreboard som används för att visa att du registrerat dig för spelet. Ladda sedan hem competition.zip. I den hittar du två kataloger: uml och src. Packa upp filen på ett bra ställe. Öppna en terminal (på macOS eller Linux) eller en kommandoprompt (på Windows) och navigera till platsen där du packade upp filen. Skriv följande för att installera de moduler som krävs för att köra applikationen:
> cd src
> pip install pipenv
> pipenv install
Installationen är nu färdig och du kör applikationen genom att köra
> pipenv run python app.py
Om allt fungerat korrekt kommer inget att hända. Detta beror på att du inte påbörjat uppgiften än. Går det fel, kommer du istället att få en felutskrift.
Filen competition.zip
Katalogen src innehåller delvis färdigskriven källkod. Din uppgift är att komplettera denna. Det är viktigt att du enbart förändrar de metoder som inte är implementerade (dvs de som innehåller ordet pass). Förändrar du någon annan metod kommer ditt program inte att fungera. Det är meningen. Du behöver inte heller alltid implementera de metoder som är märkta med pass; en del av uppgiften är att luska ut vilka som faktiskt behöver implementeras. Vid behov får du lov att lägga till attribut till klasser, men ta inte bort eller förändra de attribut som redan finns på plats.
Katalogen uml innehåller de UML-diagram som du behöver för att kunna slutföra din uppgift. Du kommer att se att du saknar två diagram, och det beror på att de dyker upp senare.
Testkör programmet genom att köra det som du gjorde tidigare:
> pipenv run python app.py
En bit in i uppgiften kommer du att bli ombedd om att ange ett filnamn. Du väljer själv detta namn, men se till att komma ihåg det. Du kommer att bli ombedd att använda den här filen många gånger, och tanken är att du använder samma fil flera gånger.
När du slutfört den här delen kommer du att se ditt namn på scoreboarden. När timern bredvid ditt namn startar är du klar med deluppgift 1.
Deluppgift 2
I deluppgift 2 kommer du, om du gör rätt, att få ett uppdrag att lösa. Denna finns inte synlig i källkoden, utan du måste hämta den från servern som nämndes ovan. Du gör detta genom att åter igen följa UML-diagrammen. Lös uppdraget, skicka in ditt svar och gå vidare till deluppgift 3.
Deluppgift 3
I deluppgift 3 får du slutligen hämta ditt pris. Följ diagrammen och gläd dig åt hur bra du är på UML och Python när du är klar med uppgiften.
Lösningsförslag
Lösningsförslag för uppgiften finns att hämta på GitHub.
Lite om UML-diagrammen
Klass- och use case-diagrammen är skapade med programmet Umbrello. Filformatet som används är XMI, vilket gör att du kan öppna filen master.xmi i ett flertal olika program.
Sekvensdiagrammen är skapade med sequencediagram.org. Diagrammen beskrivs med vanlig text som du kan kopiera in direkt i verktyget.