IV Grupa Flashcards
- Razlika proceduralnog i objektno-orijentisanog programiranja?
→ Proceduralno programiranje je usmereno ka projektovanju metoda. Jezici koje koristimo u proceduralnom programiranju su C, Pascal, Fortran, …
→ Objektno-orijentisano programiranje povezuje podatke i metode u objekte, Ono je usmereno na objekte i operacije nad njima. Jezici koje koristimo u OOP jesu C#, C++, Java, Javascript, Python, Ruby,..
- Vrste veza izmedju klasa, navedite i objasnite.
Postoje 6 veze izmedju klasa
Zavisnost - najlabavija veza izmedju dve klase
Asocijacija - jedan objekat upotrebljava servise drugog
Agregacija - jedan objekat sadrzi u sebi drugi objekat
Kompozicija - vlasnik je odgovoran za kreiranje ili unistavanje delova objekata
Generalizacija - podklasa ima sve karakteristike klase
Realizacija - veza izmedju klase i njenog interfejsa
- Sta je klasa asocijacije?
Klasa asocijacije oznacava da dve klase mogu razmenjivati servise, iako ih poseduje samo jedna klasa. Asocijacije su relacije koje se manifestuju u vreme izvrsavanja time sto dozvoljavaju razmenu poruka izmedju objekata.
- Sta je agregacija, a sta kompozicija?
→ Agregacija je asocijacija izmedju klasa koja oznacava pripadnost jedne klase drugoj, tj. da jedan objekat jedne klase sadrzi objekte drugih klasa.
→ Kompozicija je jak oblik agregacije. Upotrebljava se za aktivne objekte.
- Primena klasa BigInteger i BigDecimal, objasnite.
BigInteger i BigDecimal se mogu koristiti za predstavljanje celih ili decimalnih brojeva bilo koje velicine i preciznosti. One se nalaze u pateku java.math i za kreiranje mozemo koristiti new BigInteger(String) i new BigDecima(String). Kod ovih klasa mozemo koristiti metode add, subtract, multiply, divide, reminder i compareTo.
- Klase StringBuilder i StringBuffer - primena, objasnite.
Klase StringBuilder i StringBuffer su fleksibilnije od klase String i omogucavaju obacivanje ili dodavanje novog sadrzaja u objekte, dok ova funkcija kod klase String nije moguca.
- Sta je nasledjivanje?
Nasledjivanje (generalizacija) predstavlja osobinu gde sve podklase nasledjuju atribute i metode svoje nadklase (roditeljske klase). Nasledjivanje predstavlja jedan od tri osnovna principa objektno orijentisanog programiranja.
- Navedite prednosti i nedostatke nasledjivanja.
→ Prednosti nasledjivanja se ogledaju u tome sto se sprecava dupliranje koda. Sve zajednicke atribute i metode definisemo na jednom mestu, tj. u roditeljskoj klasi, dok podklase samo uzimaju
vrednosti atributa i pozivaju metode te roditeljske klase.
→ Nedostatak predstavlja to sto Java ne omogucava visestruko nasledjivanje, pa samim tim jedna klasa moze naslediti iskljucivo i samo jednu klasu.
- Objasnite odnos superklase i potklase.
Superklasa je klasa cija svojstva nasledjuju njene podklase, koje ih prosiruju svojim specijalizovanim svojstvima.
- Upotreba konstruktora superklase u potklasi - objasnite.
Upotreba konstruktora superklase u podklasi se vrsi pozivom metoda super() ili super(argumenti) koje pozivaju prazan konstruktor superklase ili konstruktor superklase sa argumentima.
- Sta je apstraktna klasa? Kako se kreira apstraktna klasa?
Apstraktna klasa predstavlja klasu koja ne moze kreirati svoje instance tj. objekte, ali moze definisati i posedovati svoje atribute i metode, dok objekte definisu njene potklase koje nasledjuju vec definisane atribute i metode.
- Navedite osobine apstraktne klase.
→ Apstraktna klasa se kreira dodavanjem kljucne reci abstract u potpisu klase. Na primer : public abstract class imeKlase {...}. → Apstraktna klasa ne moze kreirati svoju instancu tj. objekat, moze naslediti samo jednu klasu, moze implementirati vise interfejsa i njeni clanovi mogu biti podeseni na public, private i protected.
- Sta se desava sa apstaktnim metodama superklase u potklasama?
Abstraktne metode superklase u podklasama se mogu redefinisati (override) ili samo pozvati.
- Sta je interfejs? Kako se kreira interfejs?
Interfejs predstavlja klasu koja lici na apstraktnu klasu, ali sadrzi samo metode bez konstruktora. Klase koje implementiraju ovaj interfejs mogu redefinisati i koristiti te metode. Interfejs specificira zajednicka svojstva povezanih klasa ali i nepovezanih klasa.
- Navedite razlike izmedju apstraktne klase i interfejsa?
→ Apstraktna klasa moze imati apstraktne i neapstraktne metode dok interfejs moze imati samo apstraktne metode
→ Unutar interfejsa mogu biti staticke i finale promenljive dok u apstraktnoj klasi mogu biti finale, nefinalne, statice i nestaticke promenljive.
→ Apstraktna klasa se moze prosiriti pomocu kljucne reci extends, a intefejs se moze implementirati pomocu kljucne reci implements.
→ Interfejs moze prosiriti samo drugi interfejs, a apstraktna klasa moze prosiriti drugu apstraktnu klasu i impementriati vise interfejsa.
→ Clanovi intefejsa su javi (public), a apstraktna klasa moze imati clanove koji su public, private i protected.