OOP usmeni Flashcards

1
Q

Faze u razvoju C++ programa po redosledu,

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Specifikatori prava pristupa clanovima klase

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Kome su dostupne privatne funkcije?

A

Privatnim funkcijama mogu da pristupe funkcije clanice te klase i prijatelji te klase.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Kog tipa moze biti povratna vrednost konstruktora?

A

Konstruktori nemaju povratni tip cak ni void.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Da li je moguce preklopiti (overload) konstruktor/destruktor?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Koji je max broj argumenata destruktora izvedene klase?

A

0 jer destruktori nemaju argumente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Kada se ne poziva destruktor nekog kreiranog objekta?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Koja je namena :: operatora?

A

Binarni rezolucioni operato:

  • vezuje ime funkcije sa imenom klase
  • jedinstveno identifikuje konkretne klase
  • razlicite klase mogu imati funkcije clanice sa istim imenima
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Inline funkcije.

A

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 ;}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Kako kompajler poziva inline funkcije?

A

Tako sto kopira njihov kod na svakom mestu poziva umesto da generise poziv funkcije.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Poziv konstruktora i destruktora statickih lokalnih i globalnih objekata.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Kada se poziva konstruktor kopije?

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Koji tipovi podataka mogu da predstavljaju povratni tip konstruktora za kopiranje?

A

Konstruktor ne moze imati privatni tip,cak ni void.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Koliko argumenata moze imati konstruktor kopije i sta vazi za njih?

A

Konstruktor kopije moze imati argument tipa XX& ili najcesce const XX&. Ostali eventualni argumenti copy konstruktora moraju imati podrazumevane vrednosti.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Sta mora da ima drugi argument konstruktora kopije?

A

Mora da ima podrazumevanu vrednost.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Navesti osobine relacije prijateljstva.

A
  • prijateljstvo se ne nasledjuje
  • nije tranzitivna trelacija
  • nije simetricna relacija
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

U kom delu klase se definišu šablonske/prijateljske funkcije?

A

Š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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Kako se definiše pokazivač this na objekat klase kojoj je prijatelj

A

Nikako, ne može se definisati.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Koliko maksimalno parametara može imati globalna prijateljska funkcija?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Kako se kreiraju imena operatorskih funkcija?

A

• Operatorske funkcije nose ime operator@, gde je @ neki operator ugrađen u jezik.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Ograničenja u preklapanju operatora?

A

• 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Kako treba realizovati funkciju Ocena operator+ (int rok, Ispit a)?

A

Treba je realizovati kao globalnu operatorsku prijateljsku funkciju klase Ispit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Šta treba da vrate operatori koji menjaju levi operand?

A

• Operatori koji menjaju levi operand (npr. =) treba da vrate referencu na levi operand.
Primer
X& operator = (X& x)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Povratna vrednost operatorskih funkcija preinkrement i predekrement.

A

• Preinkrement i predekrement vraćaju reference na operand

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Navesti operatore za pristup članovima klase?

A

Članovima klase se pristupa pomoću dva operatora:
• Operator tačka (.)
-objekat
-referencu objekta
• Operator dereferenciranja -> - ovim operatorom se pristupa
pointerima.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

. Koji proces je suprotan procesu specijalizacije (ili generalizacije)?

A

Generalizacija je suprotan postupak od specijalizacije.

Specijalizacija je suprotan postupak od generalizacije.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Kako se definiše izvedena klasa?

A

Izvedena klasa se definiše navođenjem sledeće konstrukcije između identifikatora klase i znaka { :

                   private \: -> virtual ->  protected -> osnovna klasa --->
                   public
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Nacrtati i objasniti sintaksni dijagram za definisanje izvedene klase.

A

tabela

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Koji je podrazumevani način izvođenja klase?

A

Podrazumevani tip nasleđivanja je private.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Šta nasleđuje izvedena klasa?

A

Nasleđuje osobine osnovne klase. Sadrži sve članove podatke i članove funkcije iz osnovne klase

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Šta ne nasleđuje izvedena klasa?

A

Izvedena klasa ne nasleđuje privatne atribute, funkciju članicu operator=, konstruktore ni
destruktore osnovne klase.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Nacrtati tabelu prava pristupa elementima izvedene klase u zavisnosti od načina izvođenja.

A

tabela

33
Q

Navesti redosled poziva konstruktora pri kreiranju objekta izvedene klase

A

inicijalizuje se podobjekat osnovne klase, pozivom konstruktora osnovne klase
• konstruktori članova klase, po redosledu deklarisanja
• izvršava se telo konstruktora izvedene klase

34
Q

Kako je potrebno definisati izvođenje da bi izvedena klasa posedovala samo jedan podobjekat
indirektne osnovne klase?

A

Potrebno je definisati ga kao virtual.

35
Q

Koji objekti se mogu dodeliti objektu osnovne klase?

A
Objektu osnovne klase se mogu dodeliti objekat osnovne klase i objekat izvedene klase.
Primer
Osnovna b;
Izvedena d;
b=d;
36
Q

Šta je polimorfizam?

A

Polimorfizam omogućava da klasa saopšti da ima isti interfejs kao i osnovna klasa, ali da je
ponašanje izvedene klase različito od ponašanja osnovne klase. Omogućava da izvedene klase imaju
svoje ‘’verzije’’ funkcija deklarisanih u osnovnoj klasi. Postiže se deklarisanjem željenih funkcija osnovne
klase virtualnim.

37
Q

Kako se definišu virtuelne funkcije kao statičke članice klase?

A

Virtuelne funkcije ne mogu biti statičke članice svojih klasa, ali mogu biti prijatelji drugih klasa.

38
Q

Kako se definiše virtuelna statička funkcija za vraćanje vrednosti celobrojnog atributa neke klase?

A

Virtuelne funkcije ne mogu biti statičke članice svojih klasa

39
Q

Kada se aktivira virtuelni mehanizam?

A

Virtuelni mehanizam se aktivira samo ako se objektu pristupa preko reference ili pokazivača.

40
Q

Šta je čista virtuelna funkcija?

A

• Virtuelna funkcija koja nije definisana za osnovnu klasu naziva se čistom virtuelnom funkcijom.
• Deklaracija čiste virtuelne funkcije u osnovnoj klasi sadrži umesto tela =0
Primer
virtual void cvf () = 0; // čista virtuelna funkcija
virtual void vf (); // obična virtuelna funkcija

41
Q

Šta je apstraktna klasa?

A

Apstraktna klasa je klasa koja sadrži barem jednu čistu virtuelnu funkciju. Ona ne može imati
instance (objekte), već se iz nje mogu samo izvoditi druge klase.
Mogu da se formiraju pokazivači i reference na apstraktnu klasu, ali oni mogu da ukazuju samo na
objekte izvedenih konkretnih klasa. Ukoliko se i u izvedenoj klasi ne navede definicija neke čiste
virtuelne funkcije iz osnovne klase, onda je i izvedena klasa takođe apstraktna.

42
Q

Pomoću kojih operatora se može pristupiti objektima apstraktnih klasa?

A

• Apstraktna klasa ne može imati instance (objekte), već se iz nje samo mogu izvoditi druge klase.
• Pokazivači i reference na apstraktnu klasu mogu da ukazuju samo na objekte izvedenih
konkretnih klasa.

43
Q

Na koliko načina može da se definiše virtuelni konstruktor?

A

Ni na jedan način. Konstruktor ne može biti virtuelna funkcija (jer se poziva pre nego što se
objekat kreira).

44
Q

. Navesti redosled poziva konstruktora pri kreiranju objekta kod višestrukog nasleđivanja.

A

Konstruktori osnovnih klasa se pozivaju pre konstruktora članova izvedene klase i konstruktora
izvedene klase.
• Konstruktori osnovnih klasa se pozivaju po redosledu deklarisanja.

45
Q

Sintaksni dijagram za definisanje šablona.

A

tabela

46
Q

Načini za generisanje funkcija iz šablonskih funkcija.

A

Funkcije na osnovu zadatog šablona se generišu:
1. automatski - kad se naiđe na poziv generičke funkcije sa stvarnim argumentima koji mogu da se
uklope u šablon bez konverzije tipova argumenata.
2. na zahtev programera - navođenjem deklaracije (prototipa) za datu generičku funkciju sa željenim
argumentima.

47
Q

U kojim situacijama se generiše funkcija iz šablona?

A

Kada naiđe na poziv funkcije za koju ne postoji definicija, a postoji odgovarajuća generička funkcija,
prevodilac generiše odgovarajuću definiciju funkcije

48
Q

Šta mogu biti formalni argumenti šablonske klase?

A
Formalni argumenti šablona klase mogu biti: tipovi (class T) ili prosti objekti (koji će biti
konkretizovani konstantnim izrazima).
49
Q

Kojom naredbom se kreira izuzetak

A

Izuzetak se kreira naredbom throw izraz, gde izraz svojim tipom određuje koji hendler će biti
aktivan. Vrednost izraza se prenosi hendleru kao argument.

50
Q

Nacrtati i objasniti sintaksni dijagram za obradu izuzetaka.

A

tabela

51
Q

Iz kojih funkcija se mogu izazvati izuzeci?

A

• Izuzetak se može izazvati iz bloka ili iz bilo koje funkcije direktno ili indirektno pozvane iz bloka
naredbe try.
• Funkcije iz kojih se izaziva izuzetak mogu biti i članice klasa, operatorske funkcije, konstruktori i
destruktori.

52
Q

Kako se navodi spisak tipova izuzetaka koje funkcija izaziva?

A

Navođenje spiska tipova izuzetaka se postiže pomoću

throw (niz_identifikatora) iza liste argumenata

53
Q

Koja je namena funkcije set_terminate?

A

To je handler funkcija koja se automatski poziva kada se proces handlovanja izuzetaka mora
obustaviti iz nekog razloga. Ovo se dešava kada ne postoji catch handler za bačeni izuzetak.

54
Q

Koja je namena klasa fstream i strstream?

A

• fstream, za rad sa datotekama
o ifstream - ulaz
o ofstream - izlaz
o fstream – ulaz i izlaz
• strstream, za rad sa nizovima (eng. strings, tj. tokovima u operativnoj memoriji)
o istrstream - za uzimanje podataka iz tokova
o ostrstream - za smeštanje podataka u tokove
o strstream - za uzimanje i smeštanja podataka u/iz tokova

55
Q

Od čega zavisi koliko se maksimalno može kreirati standardnih tokova?

A

Ne mogu se kreirati standardni tokovi jer ti koji postoje, postoje kao globalni statički objekti, i ne
može nijedan više da se kreira.

56
Q

Koliko maksimalno cin/cout objekata je moguće kreirati u main() funkciji?

A

Nijedan.

57
Q

Navesti redosled poziva destruktora pri uništavanju objekta izvedene klase.

A
Pri uništavanju objekta, redosled poziva destruktora je uvek suprotan redosledu poziva
konstruktora. Dakle:
• destruktor izvedene klase
• destruktor članova klase
• destruktor osnovne klase
58
Q

Kako je potrebno definisati izvođenje da bi izvedena klasa posedovala samo jedan podobjekat
indirektne osnovne klase?

A

Potrebno je definisati ga kao virtual.

59
Q

Koliko objekata standardnih tokova je moguće kreirati u main()?

A

Objekti standardnih tokova ne mogu da se kreiraju jer su globalni statički objekti; kreiraju se
prilikom pokretanja svake C++ aplikacije.

60
Q

Koliko globalnih statičkih objekata(standardnih tokova) možemo da kreiramo?

A

Ima ih 4, ne možemo.

61
Q

Na koji način se mogu slati poruke objektima?

A

Funkcije članice se aktiviraju kao odgovori na poruke. Pomoću njih se komunicira s objektima.

62
Q

Koje je značenje vrednosti ios::trunc parametra dosmode?

A

tabela

63
Q

Koliko maksimalno blanko znaka može da sadrži ulazni podatak ako se za ulaz koristi operator&raquo_space;?

A

Operator&raquo_space; pamti ulazne podatke samo do prvog unetog blanko znaka.

64
Q

Koje je dejstvo operacije seekg?

A

Tokovi datoteka pamte pokazivač na poziciju u fajlu koja ce biti pročitana sledeća.
Vrednost tog pokazivača se može odrediti pomoću operacije seekg:
ifstream is(“plata.dat”, ios::binary|ios::nocreate);
is.seekg(8); //8 bajtova da se procita

65
Q

Šta je namespace? Navesti primer.

A

Namespace je okruženje izrađeno da sadrži logično grupisanje jedinstvenih indentifikatora.Std je jedan primer namespace-a.

66
Q

Kako se pristupa elementima kontejnerskih klasa definisanih u std?

A

Da bismo ih uključili i direktno koristili u programu, treba iskoristiti direktivu using namespace std.
Bez nje bismo morali da navodimo punu putanju do deklarisanog imena npr. std::cout&laquo_space;umesto
cout

67
Q

Koliko maksimalno neimenovanih namespace može biti definisano u jednom fajlu?

A

Jedan.

68
Q

Kakva je priroda generičkog mehanizma?

A

Statička jer se instance šablona prave tekstualnom zamenom u toku prevođenja.

69
Q

Šta predstavljaju instance klase iterator?

A

Instance klase iterator predstavljaju pozicije elemenata u različitim kontejnerskim klasama.

70
Q

Koje osobine operatora ne mogu da se menjaju?

A

One koje su ugradjene u jezik:

  • n-arnost
  • prioritet
  • asocijativnost
71
Q

Na koliko nacina je moguce kreirati ulazni tok vezan za neku datoteku?

A

Moguce je napraviti na tri nacina:

  • Koriscenjem konstruktora bez argumenata
  • Konstruktorom sa argumentima, tj navodjenjem naziva datoteke I odgovarajucih parametara
  • Navodjenjem deskriptora datoteke.
72
Q

Koji header file je potrebno ukljuciti da bi mogli da koristimo f-ju find nad objektom kontejnerske klase list?

A

include

73
Q

Parametrizovani tipovi.

A

Genericke klase predstavljaju parametrizovane tipove. Tipovi podataka koji su parametri sablona menjaju se konkretnim tipovima podataka.

74
Q

Koliko ce biti “usteda” u broju poziva inline rekurzivne f-je FIB(int n) kojom se racuna n-ti element Fibonacijevog niza ako je n=7? (Fibonacijev niz: 1,1,2,3,5,8,13,21,…)

A

Nece biti ustede jer kompajler ignorise inline kada se radi o rekurzivnoj funkciji, jer ne zna koliko bi puta trebalo da iskopira kod funkcije.

75
Q

Kada se nece izvrsiti destructor jedne klase?

A

Destruktor osnovne klase se uvek izvrsava. Ili kao jedini ili posle destruktora izvedene klase. Njega ne treba pozivati, implicitno se poziva. Destruktor nece biti pozvan onda kada se program zavrsava sa abort.

76
Q

Ako konstruktor kopije ime 3 argumenata kakav je treci argument?

A

Ukoliko konstruktor kopije ima vise od jednog argumenta koji je tipa XX& ili najcesce const XX&, onda ti ostali argumenti moraju imati podrazumevane vrednosti.

77
Q

Kako treba organizovati kolekciju objekata da bi se iskoristio polimorfizam?

A

Da bi se poštovala semantika i iskoristio polimorfizam, kolekcije objekata treba
realizovati kao kolekcije pokazivača na objekte a ne kao kolekcije objekata.

78
Q

Objasniti virtuelno izvodjenje.

A

• Osnovna klasa može biti virtuelna – treba je deklarisati kao virtuelnu sa virtual
• Ako je osnovna klasa virtuelna onda se podobjekti osnovne klase unutar objekta
Izvedene klase dele sa svim podobjektima koji imaju istu osnovnu klasu kao virtuelnu
• Obraćanje članu osnovne klase nije dvosmisleno ako postoji samo jedan primerak
tog člana bez obzira na način pristupa
• Ako je potrebno da izvedena klasa poseduje samo jedan podobjekat indirektne
osnovne klase onda osnovnu klasu treba deklarisati kao virtuelnu !!!

79
Q

Opisati delovanje funkcije write u radu sa izlaznim tokovima.

A

Funkcija write se koristi za upis bloka memorije u
izlazni tok. Ona ima dva argumenta: prvi, char
pokazivač i drugi, broj bajtova za upis. Treba
napomenuti da je obavezna konverzija u char* pre
adrese strukture ili objekta. Funkcija write se koristi i za
binarne datoteke.