Hem E-böcker Specialeffekter och spelutveckling i Java Klasser och Objekt

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 >>