Hlutir og klasar

Hér er myndband þar sem Daniel Shiffman talar um hluti og klasa.

Hvað eru hlutir og klasar?

Lykillinn að hlutbundinni forritun er að nora hluti og klasa. Þeir eru gagnleg tól til þess að glæða skrifturnar okkar lífi.

Hugsum um Gúmbana, óvini Maríós.

Goomba

Hvernig myndir þú búa slíkann kall til? Hvernig gerirðu marga slíka karla.

Það sem forritari Nintendo hefur væntanlega gert er að búa til klasa, hann gæti heitið Goomba

Klasinn segir til um hvað Gúmbi er, hvernig hann lítur út og hvernig hann hegðar sér.

Þegar forritari vill setja nokkra Gúmba í borð, býr hann þá til eftir uppskriftinni sem er klasinn.

Hver og einn Gúmbi sem er búinn til er hlutur, þeir gætu heitið gúmbi1, jói, gúmbi2 o.s.frv.

Kóðinn sem býr til gúmbana gæti litið einhvern veginn svona út:


var gúmbi1, jói, gúmbi2;

function setup() {
  // Smíðum þrjá hluti af klasanum Goomba.
  gúmbi1 = new Goomba();
  jói = new Goomba();
  gúmbi2 = new Goomba();
}

function draw() {
  // Einhver kóði sem lætur gúmbana gera eitthvað
}

// Skilgreinum klasann Goomba
class Goomba {
  // Kóðinn sem segir hvað Gúmbar eru og hvað þeir geta gert.
}


Lykilorðið new er nýtt og táknar að búa eigi til nýjan hlut af ákveðnum klasa.

Svo við getum orðað þetta einhvernveginn svona:

Sápukúlur

Hér er okkar fyrsta dæmi um klasa:

Prófaðu að bæta við tveimur sápukúlum í viðbót.

Breyttu klasanum þannig að kúlurnar geti verið misstórar.

Aðferðir og smiðir

Aðferðir

Klasa tilheyra yfirleitt aðferðir (e. method), aðferð er ekki annað en fall.

Eins og önnur föll geta aðferðir tekið inn gildi og skilað gildum.

Í dæminu um sápukúlurnar eru aðferðirnar move() og show()

Smiðir

Það er nauðsynlegt að klasi hafi a.m.k. einn smið (e. constructor). Smiður er aðferð sem segir til um hvernig hluturinn er búinn til.

Aðalhlutverk smiða er að setja upp allar breytur sem tilheyra hlutnum.

Í dæminu um sápukúlurnar er smiðurinn constuctor()

Smiðir geta líka tekið inn gildi, og það er eðlilegt að þeir geri það fyrir flestar innbyggða beytur og stilli þær.

Breytur

Oftast tilheyra klasa nokkrar breytur. Inni í klasanum eru þær nefndar venjulegum breytunöfnum nema við setjum this. fyrir framan.

Í dæminu um sápukúlurnar eru breyturnar í Bubble klasaum this.x og this.y

Hlutir

Til að búa til nýjan hlut af ákveðnum klasa þarf að nota orðið new.

Til þess að nota aðgerð á hlut, skrifum við nafnið á hlutnum og svo aðgerðinni með punkti á milli.

Í dæminu um sápukúlurnar er t.d. hluturinn bubble1 hreyfður til með skipuninni bubble1.move()

Ef við viljum nota breytugildi fyrir einhvern hlut. Þá skrifum við með svipuðum hætti nafnið á hlutnum og nafnið á breytunni með punkt á milli.

Ef t.d. við vildum í dæminu um sápukúlurnar nota x hnitið á bubble1 í einhverjum reikningum myndum við fá það gildi með því að skrifa bubble1.x

Dæmi með boltum

Hér er búinn til klasinn Ball og tveir hlutir, ball1 og ball2.

Prófaðu að bæta við tveimur boltum í viðbót.

Prófaðu að breyta klasanum þannig að boltarnir geti verið misstórir.