Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

9.2.2 Ensimmäinen olio-esimerkki

Muutetaanpa Aikalisa kunnon luokaksi ja olioksi:

olioalk\Aika.java - kunnon olioksi

	/**
	 * Ensimmäinen kunnon olioesimerkki
	 * @author  Vesa Lappalainen
	 * @version 1.0, 01.02.2003
	 */
	public class Aika {
	
	  private int h=0, m=0;
	
	  /**
	   * Alustaa ajan
	   * @param h tunnit
	   * @param m minuutit
	   */
	  public Aika(int h,int m) { // Muodostaja
	    this.h = h;
	    this.m = m;
	  }
	
	  /**
	   * Tulostaa ajan muodossa 15:05
	   */
	  public void tulosta() {
	    System.out.println("" + h + ":" + (m<10?"0":"")+m);
	  }
	
	  /**
	   * Lisää aikaan valitun minuuttimäärän
	   * @param lisa_min lisättävä minuuttimäärä
	   */
	  public void lisaa(int lisa_min)  {
	    int yht_min = h * 60 + m + lisa_min;
	    h = yht_min / 60;
	    m = yht_min % 60;
	  }
	
	  public static void main(String[] args) {
	    Aika a1 = new Aika(12,15);
	    Aika a2 = new Aika(13,16);
	    Aika a3 = new Aika(14,25);
	    a1.lisaa(55);    a1.tulosta();
	    a2.lisaa(27);    a2.tulosta();
	    a3.lisaa(39);    a3.tulosta();
	  }
	
	}

Siinäpä se! Ovatko muutokset edelliseen nähden suuria? Siis iso osa koko olio-ohjelmoinnista (ja tietotekniikasta muutenkin) on markkinahenkilöiden huuhaata ja yleistä hysteriaa "kaiken ratkaisevan" teknologian ympärillä. No, tosin olio-ohjelmoinnissa on puolia, joita emme vielä ole nähneetkään, joiden ansiosta olio-ohjelmointia voidaan pitää uutena ohjelmointia ja ylläpitoa helpottavana teknologiana. Näitä ovat mm. perintä ja polymorfismi (monimuotoisuus), joihin emme valitettavasti tällä kurssilla ehdi perehtyä kovinkaan syvällisesti.

No takaisin esimerkkiimme. Uutta on lähinnä se, että metodien (no sanotaan tästä lähtien funktioita metodeiksi) parametrilistat ovat lyhentyneet. Itse olion tietoja ei tarvitse enää viedä parametrina, koska metodit ovat luokan sisäisiä ja tällöin luokkaa edustava olio kyllä tuntee itse itsensä.

	...
	  public void lisaa(int lisa_min)  {
	    int yht_min = h * 60 + m + lisa_min;
	    h = yht_min / 60;
	    m = yht_min % 60;
	  }
	...

Metodia kutsutaan ilmoittamalla olion nimi ja metodi, jota kutsutaan

	a1.lisaa(55);  a1.tulosta();

Tällekin on keksitty oma nimi: välitetään oliolle viesti "tulosta" ( message passing). Tässä kuitenkin jatkossa voi vielä lipsahtaa ja vahingossa sanomme kuitenkin, että kutsutaan metodia tulosta, vaikka ehkä pitäisi puhua viestin välittämisestä.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys