Info Draft Processing suomeksi

Objektit

Oliot

Olio-ohjelmoinnissa ohjelma rakennetaan elementeistä, jotka ovat olemassa ohjelmassa (luodit, seinät, hahmot...). Olio on malli, joka voidaan kopioida, ja jonka jokainen kopio on yksilöllinen, ne ovat sovelluksen rakennuspalikoita. Olio rakentuu ominaisuuksista ja metodeista. Jokainen olion instanssi omaa erilaiset ominaisuudet, mutta sillä on käytössään samat metodit. 

Tässä luvussa näytämme objektien käsittelyn ja piirrämme kaksi palloa (yksinkertaista ympyrää) ruudulle Tässä esimerkissä on pallon malli (olio) ja sen kopiot (instanssit), joista jokaisella on erilaiset oinaisuudet.

Pallon malli rakentuu ominaisuuksista (muuttujista) seuraavasti:

  •     x - sijainti x-akselilla.
  •     y - sijainti y-akselilla.
  •     col - värit.


Malli sisältää seuraavan pallon toiminnon (metodin).

  •     display() - pallo näkyviin. 


Olion luominen

Kuinka voidaan piirtää joukko palloja ruudulle? Selkein selitys on palloa esittävien muuttujien kopiointi. Lisäksi tarvitaan ohjeet pallojen näyttämistä ja hallintaa varten. Koodin koko on suhteessa ruudulla oleviin kohteisiin. Kaksi ongelmaa ilmenee: jos tahtoo muuttaa tai monimutkaistaa kohdetta, koodi täytyy kopioida yhtä monta kertaa kuin kohteita on. Pian koodia on mahdoton pitää järjestyksessä ja se vaatii uutta rakennetta.

Välttääksemme tämän ongelman me muunnamme oliota pallo. Kun olento ohjelmassasi muuttuu liian monimutkaiseksi tai sen täytyy olla olemassa lukemattomina kopioina, sen täytyy olla olio.

Luo olio

Olion luominen tapahtuu kahdessa askeleessa:

  1. Oliomallin määrittely
  2. Yhden olion kopion (instanssin) luominen.

 

Malli

Processing käyttää avainsanaa class määrittelemään olion. Sitä käytetään metodin määritelmänä: class (objektinNimi). Kaikki toiminnot ja ominaisuudet kirjoitetaan sen sisälle. Yleisesti ottaen kirjoitamme olion määritelmän koodimme lopussa. Varsinkin jos olio on monimutkainen, kannattaa luoda uusi välilehti, joka on erillään muusta koodista.

 

class Pallo {
}

Instanssi

Kun malli on määritelty, meidän täytyy luoda yksittäinen kopio tästä mallista. Processing käyttää avainsanoja luodakseen uuden instanssin oliosta: new objektinNimi(). Tämä olio pitäisi varastoida muuttujaan, jotta sitä voidaan manipuloida myöhemmin. 

Listen
Read phonetically
Pallo myPallo = new Pallo();

Edellisessä esimerkissä julistamme muuttujan myPallo, joka on kopio oliosta Pallo. myPallo viittaa tähän olioon ja voi toimia myöhemmin ohjelmassa. Jotta tämä olio on käytettävissä koko ohjelmassa, laitamme sen julistuksen ohjelman alkuun. 

Ominaisuudet

Olioilla on ominaisuuksia, jotka määrittelevät ne ja tekevät niistä ainutlaatuisia. Nämä ovat muuttujia, jotka tehdään objektin alussa. 

 
class Pallo {
  //Pallon parametrien julistus
  float x;
  float y;
  color col;
}

Editoidaksesi ominaisuutta objektin luomisen jälkeen täytyy edetä seuraavaksi: instanssinNimi.ominaisuudenNimi = arvo. Esimerkiksi: 

 myPallo.x = 100;

Konstruktori

Konstruktori on metodi, jota kutsutaan oliota luotaessa. Sitä vastaa metodi setup (). Sillä on edelleenkin sama nimi kuin oliolla. Konstruktori ottaa joukon muuttujia ja laittaa ne olion parametriin: 

 
class Pallo {
  //Pallon parametrien julistus 
  float x;
  float y;
  color col;

  Pallo (float newX, float newY, color newColor) {
    x      = newX;
    y      = newY;
    col    = newColor;
  }
}

Kun luomme olion instanssin, annamme sille suoraan sen omat ominaisuudet parametreinä. Esimerkki alla luo valkoisen pallon, joka on sijainnissa 100, 100. 

myPallo = new Pallo(100, 100, color(255));

Varoitus! Meidän täytyy vain luoda kopio olion mallista. Sitä ei vielä näytetä ruudulla. 

Toiminnot

Olion toiminnot edustavat eri asioita, joita olio voi tehdä. Nämä metodit julistetaan olion sisällä. Olion instanssin kutsu toimintaan on seuraava: instanssinNimi.metodinNimi();

Pallollamme on vain yksi toiminto: olla näkyvillä. Käytämme komentoja fill() ja ellipse() piirtääksemme sen. 

 
class Pallo{
  //Pallon parametrien julistus
  float x;
  float y;
  color col;

  Pallo (float newX, float newY, color newColor) {
    x      = newX;
    y      = newY;
    col    = newColor;
  }

  void display() {
    fill(col);
    ellipse(x, y, 40, 40);
  }
}

Katsoaksemme palloamme voimme kutsua metodia display() sen kopiosta ohjelman metodissa draw().

void draw() {
  myPallo.display();
}

Lopullinen ohjelma

Balle 

//Pallon instanssin ja parametrien julistus
Pallo myPallo = new Pallo(100, 100, color(255));

void setup() {
  smooth();
  size(400, 200); //Ikkunan koko
}

void draw() {
  background(0); //Mustan taustan julistus 
  noStroke(); //Ei ääriviivoja

  myPallo.display(); //Pallo näkyviin
}

class Pallo {
  //Pallon parametrien julistus
  float x;
  float y;
  color col;

  //Pallon luominen
    Pallo (float newX, float newY, color newColor) {
    x      = newX;
    y      = newY;
    col    = newColor;
  }

  //Pallon näyttäminen
  void display() {
    fill(col);
    ellipse(x, y, 40, 40);
  }
}

Monta palloa

Luo toinen pallo julistamalla se esimerkiksi nimellä myPallo2 ja laita se näkyville. 

Balle2 

//Kahden pallo-instanssin julistus
Pallo myPallo1 = new Pallo(100, 100, color(255));
Pallo myPallo2 = new Pallo(200, 100, color(128));

void setup() {
  smooth(); 
  size(400, 200); //Ikkunan koko
}

void draw() {
  background(0); //Mustan taustan julistus 
  noStroke(); //Ei ääriviivoja 

  myPallo1.display(); //Pallo 1 näkyviin
  myPallo2.display(); //Pallo 2 näkyviin
}

class Pallo {
  //Pallo-luokan parametrien julistus 
  float x;
  float y;
  color col;

  //Pallon konstruktori 
  Pallo (float newX, float newY, color newColor) {
    x      = newX;
    y      = newY;
    col    = newColor;
  }

  //Pallo näkyviin
   void display() {
    fill(col);
    ellipse(x, y, 40, 40);
  }
}