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, tako možemo stvoriti mnogo predmeta iz klase.



Kreiranje klase u Javi

Klasu u Java možemo stvoriti pomoću ključne riječi class. Pogledajmo 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 new 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, pogledajte 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. Pogledajmo 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. Pogledajmo primjer:

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 smo kreirali objekt unutar metode main() iste klase.