Java - Klase i objektis


Java je objektno orijentisani programski jezik. Osnovni koncept objektno orijentiranog pristupa je razbijanje složenih problema na manje objekte. Objekt je bilo koji entitet koji ima stanje (eng. state) i ponašanje (eng. behavior). Prije nego što naučimo o objektima, prvo saznajmo o klasama u Javi.



Java Klase (Class)

Klasa je nacrt objekta. Prije nego stvorimo objekt, prvo moramo definisati klasu. O klasi možemo razmišljati kao o skici (prototipu) kuće. Sadrži sve detalje o podovima, vratima, prozorima itd. Na osnovu ovih opisa gradimo kuću. Kuća je objekt. Budući da se mnoge kuće mogu napraviti od istog opisa, možemo stvoriti mnogo predmeta iz klase.



Kreiranje klase u Javi

Klasu u Java možemo stvoriti pomoću ključne riječi class. Na primjer:

class ClassName {
  // polje
  // metode
}

Ovdje polja (varijable, eng. variables) i metode predstavljaju stanje i ponašanje objekta.

  • polja - se koriste za pohranu podataka
  • metode se koriste za izvođenje nekih operacija

Za naš biciklistički objekt možemo stvoriti klasu kao:

class Bicycle {

  // stanje ili polje
  private int gear = 5;

  // ponašanje ili metoda
  public void braking() {
    System.out.println("Rad kočenja");
  }
}


Java objekti

Objekt se naziva instancom klase. Na primjer, pretpostavimo da je Biciklo klasa, pa se MountainBicycle, SportsBicycle, TouringBicycle itd. mogu smatrati objektima klase.



Kreiranje objekta u Javi

Evo kako možemo kreirati objekt klase u Javi.

className object = new className();

// za Bicycle klasu
Bicycle sportsBicycle = new Bicycle();

Bicycles touringBicycle = new Bicycle();

Koristili smo novu ključnu riječ zajedno s konstruktorom klase za stvaranje objekta. Konstruktori su slični metodama i imaju isto ime kao i klasa. Na primjer, Bicycle() je konstruktor klase Bicycle. Da biste saznali više, posjetite lekciju Java konstruktori.

Ovdje su sportsBicycle i touringBicycle nazivi predmeta. Pomoću njih možemo pristupiti poljima i metodama klase. Kao što vidite, stvorili smo dva objekta klase. U Javi možemo stvoriti više objekata jedne klase.



Pristupanje članovima klase

Možemo koristiti ime objekata zajedno sa tačka (.) operatorom za pristup članovima klase. Na primjer:

class Bicycle {

  // polje klase
  int gear = 5;

  // metoda klase
  void braking() {
    ...
  }
}

// kreiranje objekta
Bicycle sportsBicycle = new Bicycle();

// pristupanje polju ili metodi
sportsBicycle.gear;
sportsBicycle.braking();

U gornjem primjeru stvorili smo klasu pod nazivom Bicycle. Sadrži polje nazvano gear i metodu nazvanu braking(). Primijetite izjavu:

Bicycle sportsBicycle = new Bicycle();

Ovdje smo kreirali objekt Bicycle pod nazivom sportsBicycle. Zatim koristimo objekt za pristup polju i metodi klase.

  • sportsBicycle.gear - pristupite polju gear
  • sportsBicycle.braking() - pristupite metodi braking()

Već smo nekoliko puta spomenuli riječ metoda. O Java metodama detaljno ćete naučiti u sljedećim lekcijama. Sad kad razumijemo što je klasa i objekt. Pogledajmo kompletan primjer u praksi.


Primjer: Java klasa i objekti

class Lamp {
  
  // pohranjuje vrijednost za svjetlost
  // tačno (true) ako svijetli lampica
  // netačno (false) ako je svjetlo isključeno
  boolean isOn;

  // metoda za uključivanje svjetla
  void turnOn() {
    isOn = true;
    System.out.println("Želite upaliti svjetlo? " + isOn);

  }

  // metoda za gašenje svjetla
  void turnOff() {
    isOn = false;
    System.out.println("Želite ugasiti svjetlo? " + isOn);
  }
}

class Main {
  public static void main(String[] args) {

    // kreiranje objekta led i halogen
    Lamp led = new Lamp();
    Lamp halogen = new Lamp();

    // upalite svjetlo do
    // pozivanje metode turnOn()
    led.turnOn();

    // ugasi svjetlo do
    // pozivanje metode turnOff()
    halogen.turnOff();
  }
}

U gore navedenom programu stvorili smo klasu pod nazivom Lamp. Sadrži varijablu: isOn i dvije metode: turnOn() i turnOff(). Unutar klase Main stvorili smo dva objekta: led i halogen klase Lamp. Zatim smo koristili objekte za pozivanje metoda klase.

  • led.turnOn() - Postavlja varijablu isOn na true i ispisuje izlaz.
  • halogen.turnOff() - Postavlja varijablu isOn na false i ispisuje izlaz.

Varijabla isOn definisana unutar klase naziva se i varijablom instance. To je zato što kada kreiramo objekt klase, on se naziva instancom klase i svaka instanca će imati svoju kopiju varijable.


Primjer: Stvorite objekte unutar iste klase

Imajte na umu da smo u prethodnom primjeru stvorili objekte u drugoj klasi i pristupili članovima iz te klase. Međutim, možemo kreirati i objekte unutar iste klase.

class Lamp {
  
  // pohranjuje vrijednost za svjetlost
  // tačno (true) ako svijetli lampica
  // netačno (false) ako je svjetlo isključeno
  boolean isOn;

  // metoda za uključivanje svjetla
  void turnOn() {
    isOn = true;
    System.out.println("Želite upaliti svjetlo?? " + isOn);

  }

  public static void main(String[] args) {
    
    // kreiranje objekta od Lamp
    Lamp led = new Lamp();

    // pristup metodi korištenjem objekta
    led.turnOn();
  }
}

Ovdje kreiramo objekt unutar metode main() iste klase.