wiki:MuuttujaAttribuutiksi
Last modified 6 years ago Last modified on 2012-06-26 10:35:11

Apuja ohjelmointiin » Muuttuja attribuutiksi

Tässä ohjeessa käydään läpi mikä on attribuutti, mihin sitä tarvitaan ja kuinka sellainen saadaan luotua tavallisesta muuttujasta.

1. Milloin muuttuja on olemassa?

Tarkempaa tietoa siitä mikä muuttuja on löydät tältä sivulta, lue ensin se jos olet epävarma siitä, mikä muuttuja on tai miksi tarvitsisit sellaista peliisi.

Muuttuja on määritelty (ts. olemassa) vain sitä edeltävän lähimmän aaltosulun ja sen sulkevan vastinparin välissä. Esimerkiksi ohjelma

public class Peli : PhysicsGame
{
   public override void Begin()
   {
      PhysicsObject pallo = new PhysicsObject(40, 40);
      pallo.Shape = Shape.Circle;
   }

   void LiikutaPalloa()
   {
      pallo.Hit(new Vector(200, 100));
   }
}

on virheellinen, sillä aliohjelmassa LiikutaPalloa muuttujaa x ei ole olemassakaan! Vaikka aliohjelmaa kutsuttaisiinkin Beginistä, se ei muuta sitä, että pallo on määritelty vain Begin-aliohjelman aaltosulkujen sisäpuolella.

2. Muuttujan määrittely ja alustus

Muuttuja pallo on määritelty ja alustettu rivillä

PhysicsObject pallo = new PhysicsObject(40, 40);

Määrittely ja alustus voidaan kirjoittaa myös kahdeksi erilliseksi lauseeksi. Tämä saattaa tuntua turhalta, mutta seuraavassa kohdassa se osoittautuu varsin hyödylliseksi.

PhysicsObject pallo;
pallo = new PhysicsObject(40, 40);

3. Attribuutti

Kuinka sitten voitaisiin määritellä muuttuja pallo niin, että se olisi käytettävissä sekä Begin- että LiikutaPalloa-aliohjelmissa? Kuten aiemmin mainittiin, muuttujat ovat olemassa vain sitä edeltävän avaavan aaltosulun { ja sitä vastaavan sulkevan aaltosulun } välissä. Huomaa, että myös rivin

public class Peli : PhysicsGame

jälkeen tulee aaltosulku! Nyt kun muuttujan määrittely ja alustus on kirjoitettu erikseen, voimme siirtää määrittelyn aikaisemman aaltosulun jälkeen.

public class Peli : PhysicsGame
{
   PhysicsObject pallo;

   public override void Begin()
   {
      pallo = new PhysicsObject(40, 40);
      pallo.Shape = Shape.Circle;
   }

   void LiikutaPalloa()
   {
      pallo.Hit(new Vector(200, 100));
   }
}

jolloin pallo on käytettävissä kaikissa aliohjelmissa ja ohjelma toimii. Näin määriteltyä muuttujaa pallo sanotaan peliluokan attribuutiksi.