Uppgift 2
Betyg: G, detta är en individuell uppgift.
Introduktion
Syftet med uppgift 2 är att ni ska öva på den praktiska biten, dvs. att implementera någonting genom objektorienterad programmering med Python. I denna uppgift ska ni själva välja någonting att modellera (ni kan givetvis fråga och/eller bolla tankar med oss lärare som är inblandade). Efter ni valt detta är uppgiften uppdelad i två huvudsakliga delar - att skapa ett klassdiagram baserat på ert val och därefter implementera detta (så ni har ett körbart program). Utöver detta ingår det ett mindre dokument där ni kan beskriva vad ni valt att modellera och vilka lärdomar ni tagit från processen.
Nedan presenteras även ett exempelcase för att få igång tankarna.
Uppgift
Nedan listas de krav som ställs på uppgiften
Del 1
Klassdiagram med följande innehåll:
- Attribut med tillhörande typ
- Metoder samt vilka typer dessa returnerar och/eller tar emot
- Minst fem stycken klasser ska finnas
- Relationer mellan klasser (minst två av dessa ska vara i form av arv)
Del 2
Tänk på att allt som görs i klassdiagramet ska givetvis återspeglas i er kod.
Körbar kod med följande innehåll:
- Koden ska dokumenteras med
docstringsi klasserna och metoderna, samt övriga kommentarer där ni finner det nödvändigt - All kod ska skapas genom klasser, dvs. inga globala variabler och funktioner ska användas för att kunna köra ert program
- En Pythonklass per fil, vilket innebär att ni behöver använda er av
importi de olika filerna ni har
Del 3
Kort beskrivning över vad ni valt att modellera och varför. Här kan ni även kort beskriva vilka lärdomar ni tagit, vilka problem ni stött på och hur ni valt att lösa dessa.
Exempelcase
Ett program som hanterar hjältar och skurkar. Både hjältar (Hero) och skurkar (Villain) ska ha sin egen klass och ska ärva egenskaper och metoder från en karaktärsklass (Character), samt utöver detta givetvis ha egna metoder och egenskaper. Karaktärsklassen ska ha egenskaper för namn, kraft och evil (dvs. om karaktären är ond eller god), samt get och set metoder för alla dessa egenskaper. När vi skapar en instans av en hjälte eller skurk ska evil automatiskt sättas till god respektive ond.
Klassen för hjältar ska ha egenskaper för fiender och allierade (listor), vilket innebär att metoder för att lägga till och ta bort fiender och allierade behöver finnas. Klassen för skurkar ska ha egenskapen huvudmotståndare (“antagonist”) som ska vara ett objekt av hjälteklassen, vilket innebär att vi behöver ha en metod för att kunna ange huvudmotstånader hos en skurk.
Ytterligare funktioner (som kan behöva formuleras i nya klasser) kan exempelvis vara att
- kunna lista alla karaktärer (med respektive information)
- kunna begränsa listningen till endast hjältar eller skurkar
- kunna visa en enskild hjälte eller skurk
- kunna lista alla karaktärer som har en viss egenskap
- kunna se om en hjälte kan vinna över en skurk genom att jämföra krafter
- kunna lägga till/ta bort nya karaktärer
- kunna redigera en karaktär
Inlämning
Inlämningen består av fyra delar (men lämna in alla som en zip-fil) och lämnas in på Canvas.
- Ett komplett klassdiagram i formatet
pngellerjpg - Ett dokument med beskrivning över vad ni valt att modellera, lärdomar och de problem ni stött på - som en
pdf - Er källkod till programmet
- En muntlig redovisning av uppgiften (tider för redovisning kommer upp när deadline närmar sig)