Java: luokan koostaminen olioista

Luokan alusta rakentamisen ja perinnän lisäksi, luokan koostaminen olioista on helppo ja usein myös järkevämpi tapa. Jos ajatellaan, että on luokka MinMaxInt, jolle annetaan argumentteina pienin ja suurin sallittu kokonaisluku. Tämän jälkeen luokan setteri ei aseta liian pieniä tai isoja parametreja.

/* Luokka MinMaxInt
 * Luokan tehtävä on ylläpitää 'arvo' muuttujaa
 * ja huolehtia, ettei sen arvo alita tai ylitä raja-arvoja
 */

public class MinMaxInt {
 private int min;
 private int max;
 private int arvo;
	
 public MinMaxInt() {}

 public void setArvo(int x) {
  if(x >= this.min && x <= this.max) {
   this.arvo = x;
  }
 }

 public void asetaMin(int min) {
  this.min = min;
 }

 public void asetaMax(int max) {
  this.max = max;
 }

 public int getArvo() {
  return this.arvo;
 }
}

Luokka sopii jonkinlaisen hahmon liikuttamiseen ruudulla? Emme halua suunnittelemamme hienon merkkipelin sankarin pystyvän liikkumaan pois kuvaruudulta, joten koostamme luokan Ukko.

/* Luokka Ukko
 * Luokka käyttää luokkaa MinMaxInt
 */
public class Ukko {
 private MinMaxInt x = new MinMaxInt();
 private MinMaxInt y = new MinMaxInt();
	
 public Ukko(int x_min, int x_max, int y_min, int y_max) {
  x.asetaMin(x_min);
  x.asetaMax(x_max);
		
  y.asetaMin(y_min);
  y.asetaMax(y_max);
 }

 public void asetaXY(int xx, int yy) {
  x.setArvo(xx);
  y.setArvo(yy);
 }
 public void asetaX(int xx) {
  x.setArvo(xx);
 }
 public void asetaY(int yy) {
  y.setArvo(yy);
 }
 public int getY() {
  return y.getArvo();
 }
 public int getX() {
  return x.getArvo();
 }
 public String toString() {
  return "(" + getX() + ", " + getY() + ")";
 }
}

Tämän jälkeen voimme luoda olion luokasta Ukko

// Olion luomisen yhteydessä, annetaan minimi- ja maksimiarvot.
Ukko pelihahmo = new Ukko(0, 640, 0, 480);

Nyt meillä on kolme metodia joilla vaihtaa pelihahmon koordinaatteja.

pelihahmo.asetaX(x);
pelihahmo.asetaY(y);
pelihahmo.asetaXY(x, y);

Luokka Ukko koostuu luokasta MinMaxInt joka huolehtii siitä, ettei pelihahmon aseta metodit pysty antamaan koordinaateille arvoja jotka ovat sallittujen arvojen ulkopuolella.

Esimerkki koodi Eclipse projektina LuokanKoostaminenOliosta.zip

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s