Skapa objekt efter UML-diagram
Nu ska du testa vingarna och skapa några objekt efter ett färdigt UML-diagram.
#Förkunskaper
Du har läst artiklarna: “Vad är UML?” och “Kom igång med objekt” samt “Klass relationer”.
#Introduktion
Du ska skapa klass-filer för respektive klass i diagrammet. Spara alla filerna i mappen kmom02/deck som ligger i kursrepot. Var noga med att döpa filerna, variablerna och metoderna enligt anvisningarna i diagrammet. Det handlar om att skapa en komplett kortlek.
För filerna använder du namnen:
1. deck.py
2. hand.py
3. card.py
Använd sedan en fil kallad “main.py” för att skapa objekt och testa koden.
#Krav
Starta med att skapa filerna:
# Ställ dig i kurskatalogen
cd me/kmom02/deck
touch deck.py hand.py card.py main.py
Namngivning ska ske enligt diagrammet.
I Card ska
names
vara en statisk lista som innehåller namnen på alla kort, ex. “Ace, 2, 3… Jack, Queen, King”. Ett tips är att ha None på index 0, då kan du använda värdet påvalue
som index för namnet på kortet.
suits
ska också vara en statisk lista som innehåller alla färger ett kort kan ha, “Spades, Hearts, Diamonds, Clubs”.
value
är en integer för värdet på kortet, 1-13. Kan användas som index förnames
.
suit
är index för vilken färg kortet har, 0-3.I Deck ska
cards
initieras med 52 kort.
I metodentakeCard
ska kortet som tagits returneras och inte längre finnas icards
listan.I Hand ska
cards
initieras till en tom lista.I varje klass ska det finnas en överlagrad
__str__()
-metod som skriver ut allt om objektet på ett godtyckligt sätt. Relationerna ska stämma med diagrammet ovan.Card
ska skriva ut information om sig själv, vilken färg (suit) den har och namn.Hand
ska skriva ut information om sig själv och använda__str__()
-metoden på alla kort i handen.Deck
ska skriva ut information om sig själv och använda__str__()
-metoden på alla kort i kortleken.
I din main.py ska du skapa en kortlek och en hand. Döp din kortlek till
deckOfCards
och din hand tillhand
. Använd din shuffle metod på kortleken och ta sedan 5 kort fråndeckOfCards
och lägg ihand
. Avsluta med:print(DeckOfCards)
ochprint(hand)
.
# Ställ dig i kurskatalogen
dbwebb validate deck
dbwebb publish deck
Rätta eventuella fel som dyker upp och validera igen. När det ser grönt ut så är du klar.
#Extrauppgift
Gör om så att Hand
ärver från Deck
. Hand
ska inte längre innehålla några metoder men du kan ändra i metoderna i Deck
. Du kan lägga till fler så länge de är logiska och passar för båda klasserna.
#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
- 2017-01-11: (D, aar) Tog bort str().
- 2016-12-20: (C, aar) Uppdaterade uppgift.
- 2016-12-19: (B, lew) Ny uppgift.
- 2016-04-12: (A, lew) Första versionen.