OOP usmeni Flashcards
Faze u razvoju C++ programa po redosledu,
Editovanje- Program je kreiran u editoru i zapamcen na disku
Preprocesiranje- Preprocesor program procesira programski kod
Compajliranje- Compajler kreira object kod i smesta ga na disk
Linkovanje- Linker linkuje object Code fajlove sa bibliotekama i kreira a.out fajl i smesta ga na disk
Ucitavanje- Loader ucitava program u memoriju
Izvrsavanje- CPU uzima instrukciju po instrukciju i izvrsava ih i pamti medjurezultate
Specifikatori prava pristupa clanovima klase
public: Pristup omogucen svuda gde objekat klase ima scope
private: Pristup omogucen samo u funkcijama clanicama
protected: Pristup omogucen u funkcijama clanicama klase, kao i u izvedenim klasama
Kome su dostupne privatne funkcije?
Privatnim funkcijama mogu da pristupe funkcije clanice te klase i prijatelji te klase.
Kog tipa moze biti povratna vrednost konstruktora?
Konstruktori nemaju povratni tip cak ni void.
Da li je moguce preklopiti (overload) konstruktor/destruktor?
Konstruktor je moguce preklopiti. Moze se definisati vise konstruktora za jednu klasu ukoliko se razlikuju po broju parametra ili tipu parametra. Destruktor nije moguce preklopiti jer klasa moze imati samo jedan destruktor.
Koji je max broj argumenata destruktora izvedene klase?
0 jer destruktori nemaju argumente.
Kada se ne poziva destruktor nekog kreiranog objekta?
GLOBALNI OBJEKTI :
destruktor se ne poziva ako se program zavrsava sa abort
AUTOMATSKI LOKALNI OBJEKTI:
destruktor se ne poziva ako se program zavrsava sa exit ili abort
STATICKI LOKALNI OBJEKTI :
destruktor se ne poziva ako se program zavrsava sa abort
Koja je namena :: operatora?
Binarni rezolucioni operato:
- vezuje ime funkcije sa imenom klase
- jedinstveno identifikuje konkretne klase
- razlicite klase mogu imati funkcije clanice sa istim imenima
Inline funkcije.
Inline funkcije ispred funkcije sadrze kljucnu rec inline. Dobro za funkcije koje se cesto koriste (na primer prosledjuju argumente drugim funkcijama), a cije je telo kratko. Inline funkcije stede vreme izvrsavanja programa na taj nacin sto prevodilac njihov kod umece u kod u svakoj tacki poziva. Na taj nacin se umanjuje broj poziva funkcija. Takodje kompajler moze da ignorise inline.
pr:
inline double cube (const double s)
{ return sss ;}
Kako kompajler poziva inline funkcije?
Tako sto kopira njihov kod na svakom mestu poziva umesto da generise poziv funkcije.
Poziv konstruktora i destruktora statickih lokalnih i globalnih objekata.
Konstruktore i destruktore implicitno poziva kompajler.
Redosled poziva konstruktora i destruktora:
• Globalni objekti
o konstruktori - pre bilo koje druge funkcije (uključujući i main)
o destruktori - kada se main završi (ili je pozvana funkcija exit)
o destruktor se ne poziva ako se program završava sa abort
• Automatski lokalni objekti
o konstruktori - kada se objekti definišu (svaki put kada u toku izvršenja dobiju scope)
o destruktori - kada objekti prestaju da važe, tj. kada izgube scope (kada se završi blok
u kome je objekat definisan)
o destruktor se ne poziva ako se program završava sa exit ili abort
• Statički lokalni objekti
o konstruktori - tačno jedanput kada se dođe do mesta gde je objekat definisan
o destruktori - kada se main završi ili kada se pozove funkcija exit
o destruktor se ne poziva se ako se program završava sa abort
Kada se poziva konstruktor kopije?
- prilikom inicijalizacije objekata (pomocu operatora = ili sa zagradama)
- prilikom prenosa argumenata u funkciju (kreira se lokalni automatski objekat)
- prilikom vracanja vrednosti iz funkcije (kreira se privremeni objekat)
Koji tipovi podataka mogu da predstavljaju povratni tip konstruktora za kopiranje?
Konstruktor ne moze imati privatni tip,cak ni void.
Koliko argumenata moze imati konstruktor kopije i sta vazi za njih?
Konstruktor kopije moze imati argument tipa XX& ili najcesce const XX&. Ostali eventualni argumenti copy konstruktora moraju imati podrazumevane vrednosti.
Sta mora da ima drugi argument konstruktora kopije?
Mora da ima podrazumevanu vrednost.
Navesti osobine relacije prijateljstva.
- prijateljstvo se ne nasledjuje
- nije tranzitivna trelacija
- nije simetricna relacija
U kom delu klase se definišu šablonske/prijateljske funkcije?
Šablonske funkcije se definišu u .h (header) datotekama i uključuju tamo gde se koriste. Mana je to
što korisnik vidi celu implementaciju, a ne samo interfejs.
Prijateljske funkcije mogu da budu članice drugih klasa ili globalne funkcije. Nevažno je da li se
deklaracija navodi u privatnom ili javnom delu.
Kako se definiše pokazivač this na objekat klase kojoj je prijatelj
Nikako, ne može se definisati.
Koliko maksimalno parametara može imati globalna prijateljska funkcija?
Može imati maksimalno dva parametra od kojih je bar jedan argument tipa korisničke klase. Unarni
operator ima samo jedan operand; binarni ima dva.
Kako se kreiraju imena operatorskih funkcija?
• Operatorske funkcije nose ime operator@, gde je @ neki operator ugrađen u jezik.
Ograničenja u preklapanju operatora?
• Postoje neka ograničenja u preklapanju operatora:
o ne mogu da se preklope operatori ., .*, ::, ?: i sizeof, dok svi ostali mogu;
o ne mogu da se redefinišu značenja operatora za primitivne (standardne) tipove
podataka;
o ne mogu da se uvode novi simboli za operatore;
o ne mogu da se menjaju osobine operatora koje su ugrađene u jezik: n-arnost, prioritet i
asocijativnost.
Kako treba realizovati funkciju Ocena operator+ (int rok, Ispit a)?
Treba je realizovati kao globalnu operatorsku prijateljsku funkciju klase Ispit.
Šta treba da vrate operatori koji menjaju levi operand?
• Operatori koji menjaju levi operand (npr. =) treba da vrate referencu na levi operand.
Primer
X& operator = (X& x)
Povratna vrednost operatorskih funkcija preinkrement i predekrement.
• Preinkrement i predekrement vraćaju reference na operand
Navesti operatore za pristup članovima klase?
Članovima klase se pristupa pomoću dva operatora:
• Operator tačka (.)
-objekat
-referencu objekta
• Operator dereferenciranja -> - ovim operatorom se pristupa
pointerima.
. Koji proces je suprotan procesu specijalizacije (ili generalizacije)?
Generalizacija je suprotan postupak od specijalizacije.
Specijalizacija je suprotan postupak od generalizacije.
Kako se definiše izvedena klasa?
Izvedena klasa se definiše navođenjem sledeće konstrukcije između identifikatora klase i znaka { :
private \: -> virtual -> protected -> osnovna klasa ---> public
Nacrtati i objasniti sintaksni dijagram za definisanje izvedene klase.
tabela
Koji je podrazumevani način izvođenja klase?
Podrazumevani tip nasleđivanja je private.
Šta nasleđuje izvedena klasa?
Nasleđuje osobine osnovne klase. Sadrži sve članove podatke i članove funkcije iz osnovne klase
Šta ne nasleđuje izvedena klasa?
Izvedena klasa ne nasleđuje privatne atribute, funkciju članicu operator=, konstruktore ni
destruktore osnovne klase.