Specialeffekter
och spelutveckling i Java(TM) - Klasser och Objekt
av
Anibal Wainstein
1.3.2 Klasser och Objekt
En klass kan ses som en mall som kan innehålla flera typer
av olika variabler och även andra klasser. Klasser är mallar
för objekt. Objektet är produkten av klassen och det
är med detta som du arbetar med. Anta att vi har en bil och dess
ritning. Ser vi det objektorienterat så är ritningen klassen
och bilen är objektet. Klasser finns normalt på hårddisken
eller servern och de laddas in när du skall skapa ett objekt. Du
skapar ett objekt genom att reservera primärminne åt objektet.
Det kallas att man allokerar minne åt objektet. I ett Java
program så har man alltid minst en klass. I strikt objektorientering
så är det bara funktionerna i en klass som får arbeta
med variablerna i samma klass. I praktiken är dock detta inte alltid
sant. Följande är en klassdefinition av "enBil":
public class Bil {
//variabeln v benämner hastigheten i km/h
public int v;
public void kor()
{
//starta med 10 km/h
v=10;
}
public void stanna()
{
v=0;
}
public void snabbare(int vokning)
{
v+=vokning;
}
public void saktaNer(int vsankning)
{
v-=vsankning;
if (v<0) v=0;
}
}
| Bil |
| v |
| kor() |
| stanna() |
| snabbare() |
| saktaner() |
|
Ovanstående är ett exempel på en klassdefinition. Rutan
under det beskriver vilka variabler (i blått) och vilka metoder (i
cyan) som kommer att finnas i klassen.
reklam
1.3.3 Pekare och att allokera
objekt (new kommandot)
Du kommunicerar med ett objekt genom pekare (eller referens
som man också brukar kalla det). Säg att vi vill skapa ett
objekt att arbeta med. Vi tar "mallen" vi har definerat i avsnitt 1.3.2
och skapar en pekare på följande vis:
Bil enbil;
Pekaren "enbil" pekar ingenstans än så länge så du
kan inte arbeta med den. Nu allokerar vi en bit av minnet åt objektet
"enbil" som kommer att använda klassen "Bil" som mall. Samtidigt som
vi gör det så sätter vi pekaren "enbil" till att peka på
objektet.
enbil = new Bil();
Nu kan vi genom "enbil" nå instansen av klassen "Bil" (en instans
är ett annat ord för objekt):
enbil.kor();
enbil.snabbare(10);
enbil.saktaner(10);
enbil.stanna();
Genom att anropa ovanstående metoder så manipuleras variabeln
"v" som representerar hastigheten inne i Bil-objektet. Vi kan skapa hur
många instanser av klassen Bil som helst:
Bil volvo = new Bil();
Bil ford = new Bil();
volvo.kor();
ford.kor();
//öka hastigheten med 10 km/h
volvo.snabbare(10);
//öka hastigheten med 10 km/h
volvo.snabbare(10);
//öka hastigheten med 30 km/h
ford.snabbare(30);
//minska hastigheten med 20 km/h
ford.saktaner(20);
Vilken bil tror du kommer att ha den högsta hastigheten efter att ha
kört detta? Observera att variabeln "v" i volvo-objektet ändras
inte när du anropar ford-objektets hastighetsmetoder. De båda
objekten är helt oberoende och de har varsitt kopia av "v".
Nästa sida
>>
|