Programski jezik Java jedan je od najpopularnijih jezika na svijetu, a njegova snaga leži u objektno-orijentiranom pristupu (OOP – Object-Oriented Programming). Za svakoga tko započinje putovanje u svijet Jave, razumijevanje koncepata klasa i objekata predstavlja ključni korak. Bez ovih temelja nemoguće je razumjeti kako moderni softver funkcionira, jer se gotovo svaki element u Javi tretira kao objekt.
U ovom članku detaljno ćemo istražiti što su zapravo klase, kako se od njih stvaraju objekti i zašto su određena pravila pisanja koda važna za održivost i čitljivost aplikacija. Cilj je pružiti vam jasnu sliku o tome kako strukturirati podatke i ponašanje unutar vašeg programa.
Sadržaj...
Što je zapravo klasa u Javi?
Najjednostavnije rečeno, klasa je nacrt, predložak ili “recept” za stvaranje objekata. Zamislite klasu kao tehnički crtež kuće. Crtež nije sama kuća, on ne zauzima prostor u stvarnom svijetu i u njemu ne možete stanovati, ali on precizno definira gdje će biti zidovi, koliko će biti prozora i gdje se nalazi ulaz. Slično tome, klasa u Javi definira kakve podatke će objekt imati i što će taj objekt moći raditi.
Klasa se sastoji od dva glavna elementa: polja (varijabli) i metoda (funkcija). Polja predstavljaju stanje ili karakteristike objekta, dok metode predstavljaju njegovo ponašanje.
Primjer iz stvarnog života bio bi klasa Osoba. Svaka osoba ima određene zajedničke karakteristike kao što su ime, prezime i osobni identifikacijski broj (JMBG). To su polja. S druge strane, svaka osoba može obavljati određene radnje, poput promjene imena ili provjere ispravnosti svojih podataka. To su metode.
Enkapsulacija: Getteri i Setteri
U profesionalnom programiranju u Javi, dobra praksa je koristiti koncept enkapsulacije. To znači da podatke unutar klase ne ostavljamo otvoreno dostupnim svima (ne koristimo javne varijable), već ih označavamo kao private. Time sprječavamo da neki drugi dio programa slučajno ili namjerno postavi neispravne podatke u naš objekt.
Kako bismo ipak mogli pristupiti tim privatnim podacima, koristimo posebne metode koje nazivamo getteri i setteri:
- Setteri: Metode koje služe za postavljanje vrijednosti polja. One su izuzetno korisne jer nam omogućuju da uvedemo validaciju. Na primjer, prije nego što postavimo JMBG, setter metoda može provjeriti ima li unos točno 13 znakova. Ako nema, program može izbaciti pogrešku (Exception) i spriječiti spremanje neispravnog podatka.
- Getteri: Metode koje nam omogućuju da dohvatimo trenutnu vrijednost privatnog polja bez mogućnosti da ga izravno promijenimo.
Korištenjem ove metode, programer ima potpunu kontrolu nad tim kako se podaci mijenjaju, što drastično smanjuje broj pogrešaka u većim sustavima.
Objekti kao instance klase
Dok je klasa samo teorijski nacrt, objekt je stvarna instanca te klase. Kada u kodu napišemo naredbu za kreiranje objekta, Java u memornom prostoru računala rezervira mjesto za sve podatke koje je klasa definirala.
Proces kreiranja objekta u Javi obavlja se pomoću ključne riječi new. Na primjer, ako imamo klasu Osoba, kreiranje konkretne osobe (objekta) izgledalo bi ovako: Osoba marko = new Osoba();. U ovom trenutku, marko postaje objekt koji ima svoje vlastito ime, prezime i JMBG, neovisno od bilo kojeg drugog objekta iste klase.
Kada jednom imamo objekt, možemo pozivati njegove metode kako bismo upravljali njegovim stanjem. Ako želimo postaviti ime za objekt marko, koristit ćemo metodu marko.setIme("Marko");, a ako želimo saznati koje je ime zapisano, pozvat ćemo marko.getIme();.
Ključna riječ ‘this’ i standardi imenovanja
Često ćete u Java kodu primijetiti ključnu riječ this. Ona se koristi unutar klase kako bi se jasno naglasilo da se referiramo na polje instance, a ne na lokalnu varijablu ili argument metode. To je posebno važno u setter metodama gdje se argument metode i polje klase često zovu isto (npr. oba se zovu ime). Pomoću this.ime = ime; kažemo Javi: “Postavi vrijednost polja ove instance na vrijednost koja je proslijeđena kao argument”.
Osim tehničkih detalja, Java zajednica prati stroge konvencije imenovanja koje pomažu programerima u suradnji:
| Element | Pravilo imenovanja | Primjer |
|---|---|---|
| Klase | Počinje velikim slovom (PascalCase) | Osoba, KorisnickiKonto |
| Metode | Počinje malim slovom, svaka nova riječ velikim (camelCase) | setIme(), provjeriJmbg() |
| Varijable/Polja | Sve malim slovima, obično jedna riječ (camelCase) | ime, prezime, jmbg |
Zaključak
Razumijevanje razlike između klase i objekta temeljna je vještina za svakog Java programera. Klasa definira strukturu i pravila, dok objekt predstavlja konkretnu implementaciju tih pravila u memoriji. Primjena enkapsulacije kroz gettere i settere osigurava da naš kod ostane siguran i predvidljiv, dok pridržavanje standarda imenovanja čini naš rad profesionalnim i razumljivim drugima.
Krenite u vježbu tako što ćete pokušati definirati vlastite klase za stvari iz svakodnevnog života – poput klase Automobil, Knjiga ili Proizvod. Definirajte njihova polja, kreirajte metode za validaciju i vježbajte instanciranje objekata. To je najbrži put do savladavanja objektno-orijentiranog programiranja.
Česta pitanja (FAQ)
Pitanje: Može li jedna klasa imati više objekata?
Odgovor: Da, apsolutno. Jedna klasa služi kao predložak za neograničen broj objekata. Svaki objekt ima svoje vlastite vrijednosti u poljima, iako svi dijele istu strukturu definiranu u klasi.
Pitanje: Zašto ne koristiti javne varijable (public) umjesto settera?
Odgovor: Korištenje javnih varijabli omogućuje bilo kojem dijelu programa da postavi bilo kakvu vrijednost, čak i onu koja je logički nemoguća (npr. negativna starost ili JMBG od jednog znaka). Setteri omogućuju kontrolu i validaciju podataka prije nego što oni uđu u objekt.
Pitanje: Što se događa ako ne koristim ključnu riječ ‘this’?
Odgovor: Ako se argument metode i polje klase zovu isto, Java će dati prednost lokalnoj varijabli (argumentu). U tom slučaju, polje klase neće biti ažurirano, što




