1/39
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Objekti i klase
Klasa je Ŕablon ili plan prema kome pravimo objekte. Ona definiŔe atribute (podatke) i metode (ponaŔanja). Objekat je konkretan primerak klase, tj. instanca. ViŔe objekata može nastati iz iste klase, svaki sa svojim vrednostima atributa.
Apstrakcija, enkapsulacija i sakrivanje informacija
Apstrakcija znaÄi da od kompleksnog sistema izdvajamo samo ono Å”to je važno za korisnika. Enkapsulacija podrazumeva spajanje podataka i metoda u jednu celinu (klasu). Skrivanje informacija znaÄi da neke delove klase uÄinimo nedostupnim spolja (privatni Älanovi), a pristup im dajemo kroz metode.
Agregacija i kompozicija klasa
Agregacija oznaÄava vezu "ima" gde jedan objekat sadrži drugi, ali oba mogu postojati nezavisno (npr. univerzitet i studenti). Kompozicija je jaÄa veza gde objekat ne može postojati bez onog drugog (npr. kuÄa i sobe).
Promenljive referencijalnog tipa, referenca this
Promenljive referencijalnog tipa Äuvaju adresu objekta u memoriji, a ne sam objekat. ReÄ this je referenca na trenutni objekat i koristi se da jasno razlikujemo atribute objekta od parametara metode, ili da pozovemo konstruktor iste klase.
Konstruktori i operator new
Konstruktor je specijalna metoda koja se poziva kada pravimo novi objekat i služi za inicijalizaciju atributa. Operator new pravi prostor u memoriji za objekat i poziva konstruktor da ga podesi.
StatiÄki atributi i metodi, singleton patern
StatiÄki atributi i metodi pripadaju klasi, a ne pojedinaÄnim objektima. To znaÄi da postoji samo jedna kopija statiÄkog Älana za celu klasu. Singleton patern koristi statiÄke Älanove da bi osigurao da postoji taÄno jedan objekat klase u programu, npr. za pristup bazi podataka.
Konstruktori i nasleÄivanje
Kada klasa nasleÄuje drugu, prvo se poziva konstruktor nadklase pa tek onda konstruktor podklase. Ako eksplicitno ne navedemo koji konstruktor nadklase da se pozove, automatski se poziva njen podrazumevani konstruktor.
Redefinisanje nasleÄenih atributa i metoda
NasleÄeni atributi i metode mogu se redefinisati. Kada redefiniÅ”emo metodu, pravimo novu implementaciju u podklasi. Ako redefiniÅ”emo atribut, sakrivamo onaj iz nadklase, iako oba postoje u memoriji ā ali pristupa im se u zavisnosti od tipa reference.
NasleÄivanje, Liskov princip supstitucije i dinamiÄko vezivanje
Liskov princip kaže da objekat podklase treba da se može koristiti svuda gde se koristi objekat nadklase, bez problema. DinamiÄko vezivanje znaÄi da se metoda koja se poziva odreÄuje u vreme izvrÅ”avanja na osnovu stvarnog tipa objekta, a ne tipa reference.
instanceof operator i eksplicitne konverzije referenci
Operator instanceof proverava da li je objekat primerak neke klase ili njene podklase. Eksplicitna konverzija reference (cast) omoguÄava da promenljivu tipa nadklase tretiramo kao objekat podklase, ali je bezbedno koristiti tek ako instanceof potvrdi tip.
Klasa Object
Object je osnovna klasa iz koje nasleÄuju sve druge klase u Javi. Ona obezbeÄuje metode koje imaju svi objekti, kao Å”to su toString() za prikaz objekta kao teksta, equals() za poreÄenje, hashCode() za rad sa kolekcijama, i clone() za pravljenje kopije objekta.
Apstraktne klase
Apstraktna klasa je klasa koja ne može da se instancira direktno, veÄ samo preko njenih podklasa. Može imati apstraktne metode (bez tela) koje podklase moraju da implementiraju, ali i obiÄne metode i atribute.
Modifikatori vidljivosti
Modifikatori odreÄuju pristup Älanovima klase:
public ā svuda dostupan,
protected ā vidljiv u istoj klasi, paketu i podklasama,
bez modifikatora (package-private) ā dostupan samo unutar paketa,
private ā dostupan samo u istoj klasi.
Inicijalizacija statiÄkih atributa klase
StatiÄki atributi se inicijalizuju kada se klasa uÄita u memoriju, pre stvaranja bilo kog objekta. Mogu se inicijalizovati direktno pri deklaraciji ili unutar statiÄkog inicijalizacionog bloka.
Inicijalizacija nestatiÄkih atributa klase
NestatiÄki atributi se inicijalizuju prilikom pravljenja svakog novog objekta. To se može uraditi direktno u deklaraciji, u konstruktoru ili u inicijalizacionom bloku bez oznake static.
Ugnježdene statiÄke klase
StatiÄka ugnježdena klasa definiÅ”e se unutar druge klase i oznaÄava se sa static. Ona nema pristup nestatiÄkim atributima spoljne klase, veÄ samo statiÄkim. NajÄeÅ”Äe se koristi kada klasa ima smisla samo u okviru druge klase, ali nije vezana za njen objekat.
UnutraŔnje klase
UnutraÅ”nja klasa je definisana unutar druge klase bez oznake static. Ona ima pristup svim atributima i metodama spoljne klase, Äak i privatnim. Za njeno koriÅ”Äenje mora postojati instanca spoljne klase.
Lokalne i anonimne klase
Lokalne klase se definiÅ”u unutar metoda i dostupne su samo unutar tog metoda. Anonimne klase su bezimene i definiÅ”u se āu letuā kada želimo da napravimo jedinstvenu implementaciju interfejsa ili apstraktne klase, najÄeÅ”Äe za dogaÄaje ili kratke zadatke.
Interfejsi
Interfejs je ugovor koji sadrži samo potpis metoda (i eventualno konstante). Klasa koja implementira interfejs mora da definiÅ”e sve njegove metode. Interfejsi omoguÄavaju viÅ”estruko ānasleÄivanjeā ponaÅ”anja jer klasa može implementirati viÅ”e interfejsa.
NasleÄivanje interfejsa
Interfejs može nasleÄivati drugi interfejs i tako preuzeti njegove metode. Klasa koja implementira novi interfejs automatski mora da implementira i metode svih njegovih roditeljskih interfejsa.
Nabrojivi tipovi (enumi)
Nabrojivi tip (enum) predstavlja skup unapred definisanih konstanti. Svaka vrednost enuma je zapravo objekat te enum klase. Enum može imati atribute, metode i konstruktore, Å”to ga Äini moÄnijim od obiÄnih konstanti.
Klasa String, informativne metode
Klasa String ima metode koje daju informacije o tekstu, na primer: length() vraÄa dužinu, charAt(i) vraÄa znak na odreÄenoj poziciji, indexOf() pronalazi prvi indeks podstringa, equals() poredi dva stringa. Ove metode ne menjaju sadržaj stringa.
Klasa String, transformativne metode
Transformativne metode vraÄaju novi string kao rezultat. Na primer: toLowerCase() i toUpperCase() menjaju veliÄinu slova, trim() uklanja praznine sa krajeva, replace() menja znakove ili podstringove, substring() izdvaja deo stringa.
Regularni izrazi i transformativne metode klase String
Regularni izrazi omoguÄavaju napredno pretraživanje i zamenu teksta. Metode poput matches(), split(), i replaceAll() koriste regularne izraze da provere da li string zadovoljava obrazac, podele string ili zamene delove stringa.
Klasa StringBuilder
StringBuilder je klasa za rad sa promenljivim tekstom. Za razliku od String, njegov sadržaj se može menjati bez pravljenja novih objekata. OmoguÄava efikasne operacije dodavanja (append()), brisanja (delete()), umetanja (insert()) i obrtanja teksta (reverse()).
Izuzeci i vrste izuzetaka
Izuzeci su posebni objekti koji oznaÄavaju greÅ”ke ili nepredviÄene situacije u programu. Dve glavne vrste su: checked (moraju se obraditi ili deklarisati, npr. IOException) i unchecked (runtime izuzeci, npr. NullPointerException). Postoji i posebna klasa Error za ozbiljne greÅ”ke koje program ne može kontrolisati.
Obrada i prosleÄivaje izuzetaka
Izuzeci se obraÄuju pomoÄu try-catch-finally bloka. Ako se izuzetak ne obradi u metodi gde nastaje, on se prosleÄuje (propagira) metodama koje su je pozvale. Tako program može da se zaustavi ili da viÅ”i nivo preuzme kontrolu.
Generisanje i definisanje izuzetaka
Izuzetak se generiÅ”e naredbom throw new ExceptionType(). Definisanje izuzetka podrazumeva kreiranje nove klase koja nasleÄuje Exception ili RuntimeException, Äime pravimo svoje specifiÄne tipove greÅ”aka.
BrojaÄ linija tekstualnog fajla
Program za brojanje linija otvara fajl pomoÄu klasa poput BufferedReader, Äita liniju po liniju i za svaku uveÄava brojaÄ. Na kraju vraÄa ukupan broj linija.
Kopiranje tekstualnog fajla
Kopiranje se radi tako Å”to se fajl otvori za Äitanje i pisanje. Linije se Äitaju iz izvornog fajla i odmah upisuju u novi fajl, obiÄno uz pomoÄ BufferedReader i BufferedWriter.
Balansirane zagrade
Problem balansiranih zagrada proverava da li svaka otvorena zagrada ima odgovarajuÄu zatvorenu i da li su pravilno ugnježdene. NajÄeÅ”Äe se reÅ”ava pomoÄu steka: pri susretu sa otvorenom zagradom dodajemo je na stek, a pri susretu sa zatvorenom skidamo odgovarajuÄu. Ako na kraju stek nije prazan, zagrade nisu balansirane.
Paketi i jedinice prevoÄenja
Paket je skup klasa i interfejsa koji Äine logiÄku celinu i olakÅ”avaju organizaciju koda. Jedinica prevoÄenja je jedan .java fajl koji sadrži definicije klasa ili interfejsa, zajedno sa deklaracijom paketa i import naredbama.
Definicija jedinice prevoÄenja
Jedinica prevoÄenja je osnovna datoteka u Javi koja ima ekstenziju .java. U njoj može postojati najviÅ”e jedna javna klasa, a ime fajla mora da odgovara imenu te klase.
Imenovanje i dizajn paketa
Po konvenciji, imena paketa piŔu se malim slovima i prate strukturu domena organizacije unazad, npr. rs.uns.ac.rs.projekat. Dobro osmiŔljen dizajn paketa podrazumeva visoku povezanost unutar paketa i nisku zavisnost od drugih paketa.
Struktura JavaFX aplikacije, tipovi okana
JavaFX aplikacija nasleÄuje klasu Application i mora redefinisati metodu start(Stage primaryStage). Osnovno okno (Stage) predstavlja glavni prozor aplikacije, dok scene (Scene) odreÄuju raspored elemenata. Postoje razliÄita rasporedna okna (Pane, BorderPane, GridPane, HBox, VBox) za organizaciju grafiÄkih komponenti.
Tipovi i obrada dogaÄaja
U JavaFX-u dogaÄaji su akcije koje korisnik ili sistem pokreÄu, kao Å”to su klik miÅ”em ili pritisak tastera. Obrada dogaÄaja se radi tako Å”to se komponenti dodeli āosluÅ”kivaÄā (event handler), koji je objekat klase ili lambda izraz koji implementira interfejs EventHandler.
Interfejsi Collection i Map
Collection je osnovni interfejs za rad sa grupama objekata i obuhvata skupove, liste i redove. Map Äuva parove kljuÄāvrednost i omoguÄava brzo pronalaženje vrednosti na osnovu kljuÄa. Ova dva interfejsa Äine osnovu Java kolekcija.
Skupovi ā interfejsi i klase
Skup (Set) je kolekcija koja ne dozvoljava duplikate. NajÄeÅ”Äe implementacije su HashSet (brz, bez poretka), LinkedHashSet (pamti redosled ubacivanja) i TreeSet (Äuva elemente sortirane).
Liste ā interfejsi i klase
Lista (List) je kolekcija koja Äuva elemente u odreÄenom redosledu i dozvoljava duplikate. NajÄeÅ”Äe implementacije su ArrayList (efikasna za pristup po indeksu) i LinkedList (efikasna za dodavanje i brisanje elemenata).
Mape ā interfejsi i klase
Mapa (Map) Äuva podatke u vidu parova kljuÄāvrednost, gde je kljuÄ jedinstven. NajÄeÅ”Äe implementacije su HashMap (brza pretraga, bez poretka), LinkedHashMap (pamti redosled umetanja) i TreeMap (sortira kljuÄeve).