Lathund för klassdesign
Klasser
Vilka SAKER finns i programmet/spelet?
Spelarkaraktär, Fiender, Powerups, Andra objekt, Level/spelplan, Grafiska knappar
Varje klass ska ha namn i singular, även om det finns flera i programmet/spelet.
Powerup, Player, Enemy, Football, BaseballBat
Varje klass beskriver en kategori av saker.
Underkategorier
Är det liten skillnad mellan sakerna? Använd olika instanser av samma klass.
Är det stor skillnad, framför allt i metoderna? Skapa nya klasser och använd arv.
Variabler
Vilka EGENSKAPER hos de olika sakerna är relevanta för spelet?
Position, Styrka, intelligens, Hit points
En egenskap som bara är ett enkelt värde (int, strint, float etc) bör vara en variabel.
Exempel: namn, hit points
En egenskap som är mer komplex, och i sig har en massa egenskaper/funktionalitet bör vara en referens till en instans av en klass.
Exempel: ett svärd, som har skadevärde, vikt etc
Variabler kan leda till djupa hierarkier.
I en instans av klassen Game finns en instans av Scene, i instansen av Scene finns en instans av Player…
Metoder
Vilken kod hör samman med varje SAK?
Vilken kod använder enbart eller mestadels variabler som tillhör klassen?
Vad ska varje SAK kunna göra?
Metoder = verb, saker man kan göra med en instans eller som instansen kan göra.
Public/private/protected
Public, private och protected används för att skapa gränssnittet ut mot världen.
Saker som ska kunna kommas åt utifrån – public.
Variabler – helst inte public alls. Använd properties istället.
Saker som bara ska kunna påverkas från metoder som tillhör den här klassen – private.
Saker som ska kunna påverkas av metoder som tillhör den här klassen och klasser som ärver från den – protected.
Last updated