orijentirano programiranje 3. Klase i objekti Definicija klase (razreda)
• Klasa je nacrt objekta, odnosno predložak po kojem je
određeni objekt stvoren. • Klasa je definicija i opis onoga što predstavlja i sama po sebi nema posebnu funkciju. • Svaka klasa ima dvije ključne stvari, a to su: atributi (polja, članovi) i njeno ponašanje (metode). • Definiraju se uporabom ključne riječi class. • Primjer stvaranja klase Student Definicija objekta i njegovo kreiranje • Objekt je instanca klase i kreiran je na osnovu njene definicije • Objekt je jedan primjerak klase • Kreiranje s ključnom riječi new
• Npr: ImeKlase ImeObjekta = new ImeKlase();
Sistemski stog(eng.stack) i hrpa(eng.heap) • Objekt stvoren pomoću riječi new se stavra na hrpi
• Varijable i reference na objekt se nalaze na sistemskom stogu
Sistemski stog i hrpa (1) Sistemski stog i hrpa (2) Sistemski stog i hrpa (3) Sistemski stog i hrpa (4) Sistemski stog i hrpa (5) java.lang.Object • Klasa Object definirana je u paketu java.lang i predstavlja vršni razred iz kojega direktno ili tranzitivno svi drugi razredi nasljeđuju niz korisnih metoda koje su u njemu definirane. • Metode koje svaki kreirani objekt ima prilikom kreiranja : o clone() o equals(Object obj) o finalize() o getClass() o hashCode() o notify() o notifyAll() o toString() o wait() o wait(long timeout) o wait(long timeout, int nanos) Konstruktori (eng. constructor) (1) • Specijalne „metode” koje služe za inicijalizaciju objekta • Pozivaju se prilikom kreiranja novog objekta • Prema default-u svaka klasa ima konstruktor premda on ne mora biti napisan • Npr: public ImeKlase(){} Konstruktori (eng. constructor) (2) • Mogu imati parametre
• Npr: public ImeKlase(int pParam1, String pParam2){}
Destruktori (eng. destructor) • Destruktori su „metode” zadužene za oslobađanje svih resursa koje je tijekom života zauzeo primjerak klase
• U programskom jeziku Java destruktori ne postoje
• Izbačeni zbog pogreški programera
• Umjesto toga, Java koristi automatsko upravljanje memorijom
uporabom sakupljača smeća (eng. garbage collector) garbage collector Sakupljač smeća (eng. garbage collector) • podsustav koji prati rad programa i periodički oslobađa sve resurse na koje je program izgubio reference.
• dok program ima referencu na objekt zauzet u memoriji, taj
objekt neće biti oslobođen pa je nemoguće pristupati memoriji koja je oslobođena i time načiniti pogrešku.
• jednom kada program izgubi referencu na objekt, objekt
postaje smeće i sakupljač smeća će ga u nekom trenutku reciklirati (odnosno osloboditi memoriju koju je on zauzimao). Modifikatori vidiljivosti (1) • Modifikatorividljivosti ograničavaju pristup (vidljivost, dostupnost)
• može se postaviti ispred klase i taj modifikator smije biti samo
public o bez modifikatora, razred je vidljiv samo unutar paketa o iznimka: unutarnji razredi (o njima naknadno) mogu biti private
• može se postaviti ispred članske varijable i metode
o public, private ili protected o određuju jesu li (i kome) varijable i metode vidljive/dostupne izvan klase o package-private ako nema modifikatora Modifikatori vidiljivosti (2) • Javni pristup: definira se uporabom ključne riječi public.
• Zaštićeni pristup: definira se uporabom ključne riječi
protected.
• Privatni pristup: definira se uporabom ključne riječi private.
• Privatni pristup za paket: definira se nenavođenjem bilo koje
od prethodne tri ključne riječi. Ako se dakle ne navede ništa, podrazumijeva se ovakav pristup. Tablica pristupa • Pravo pristupa varijabli ili metodi neke klase označenoj određenim modifikatorom sažeto je prikazano sljedećom tablicom • Sljedeće predavanje : 4. Svojstva OOP (apstrakcija, nasljeđivanje..)