ОО1/Фебруар 2021 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(Februarski rok (po sećanju `<@127345521789501440>`))
 
м (Tačne postavke u zadacima 1, 2, 3, 5, 6, 7 i 8 (izvor: `<@443130487989600286>`))
Ред 5: Ред 5:


== 1. zadatak ==
== 1. zadatak ==
Šta najbolje opisuje pojam "apstrakcija":
Koja od navedenih definicija najbolje odgovara ''apstrakciji'' kao elementnu objektno orijentisanog stila programiranja?
<div class="abc-list">
<div class="abc-list">
# Odvajanje ugovora od implementacije
# Odvajanje interfejsa klase od njene implementacije koja se sakriva od korisnika.
# <span class="solution">Izdvajanje i grupisanje zajedničkih osobina</span>
# <span class="solution">Prepoznavanje bitnih svojstava skupova sličnih objekata i opisivanje zajedničkom klasom.</span>
# Kreiranje apstraktnih klasa i metoda
# Mogućnost kreiranja apstraktnih klasa i funkcija članica.
# ...
# Pristupačnost određenim članovima klase navođenjem prava pristupa.
</div>
</div>


== 2. zadatak ==
== 2. zadatak ==
U sledećem programu na programskom jeziku C++, koji je tip promenljive <code>p</code>?
Koji je tip promenljive <code>i</code> u sledećem isečku koda napisanom na jeziku C++?
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
const int k = 1;
const int j = 1;
const auto j = k;
const auto k = j;
auto p = new int + k;
auto i = new int + k;
</syntaxhighlight>
</syntaxhighlight>
<div class="abc-list">
<div class="abc-list">
# <syntaxhighlight lang="cpp" inline>const int*</syntaxhighlight>
# <span class="solution"><syntaxhighlight lang="cpp" inline>int*</syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>int*</syntaxhighlight></span>
# <syntaxhighlight lang="cpp" inline>const int*</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>int</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>int</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>const int* const</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>const int</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>const int</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>const int* const</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>int *const</syntaxhighlight>
</div>
</div>


== 3. zadatak ==
== 3. zadatak ==
U metodi <code>m</code> koji je tip pokazivača <code>this</code>?
U klasi <code>X</code> je definisan metod <code>m</code>.
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
class X
class X {
{
public:
void m() const {};
void m(X *x) const {}
};
};
</syntaxhighlight>
</syntaxhighlight>
Kog tipa je pokazivač <code>this</code> u metodu <code>m</code>?
<div class="abc-list">
<div class="abc-list">
# <span class="solution"><syntaxhighlight lang="cpp" inline>const X * const</syntaxhighlight></span>
# <syntaxhighlight lang="cpp" inline>X*</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>X*</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>const X*</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>X * const</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>X*const</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>X</syntaxhighlight>
# <span class="solution"><syntaxhighlight lang="cpp" inline>const X*const</syntaxhighlight></span>
# <syntaxhighlight lang="cpp" inline>const X *</syntaxhighlight>
</div>
</div>


Ред 54: Ред 57:


== 5. zadatak ==
== 5. zadatak ==
Šta ispisuje sledeći program na programskom jeziku C++? Ukoliko se program ne prevodi uneti NP, a ukoliko dođe do greške pri izvršavanju uneti X.
Šta ispisuje sledeći program na programskom jeziku C++? (Ukoliko smatrate da se program ne prevodi, unesite NP. Ukoliko smatrate da dolazi do greške pri izvršavanju, unesite X)
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
#include <iostream>
#include <iostream>
Ред 60: Ред 63:


int main() {
int main() {
int niz[] = {1, 2, 3};
int brojevi[] = {1, 2, 3};
int* p = niz;
int* pk = brojevi;
p++;
pk++;
int& ref = *p;
int& ref = *pk;
ref++;
ref++;
cout << niz[0] << niz[1] << niz[2];
cout << brojevi[0] << brojevi[1] << brojevi[2];
    return 0;
}
}
</syntaxhighlight>
</syntaxhighlight>
Ред 71: Ред 75:


== 6. zadatak ==
== 6. zadatak ==
Koji je tip argumenta premeštajućeg operatora dodele klase X?
Kog tipa je parametar premeštajućeg operatora dodele za klasu X?


Rešenje: <span class="spoiler">X&&</span>
Rešenje: <span class="spoiler">X&&</span>


== 7. zadatak ==
== 7. zadatak ==
Koji su sve ispravni parametri šablona nespecijalizovane generičke klase ili metode:
Koji od ponuđenih prefiksa opšte (nespecijalizovane) šablonske (genreičke<sup>[sic]</sup>) funkcije ili klase su ispravni?
<div class="abc-list">
<div class="abc-list">
# <syntaxhighlight lang="cpp" inline>template<></syntaxhighlight>
# <span class="solution"><syntaxhighlight lang="cpp" inline>template<typename T></syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>template<typename T></syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>template<typename T, int N></syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>template<int N></syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>template<typename T, typename U></syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>template<typename T, typename U></syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>template<int N></syntaxhighlight></span>
# <syntaxhighlight lang="cpp" inline>template<></syntaxhighlight>
# <span class="solution"><syntaxhighlight lang="cpp" inline>template<typename T, int N></syntaxhighlight></span>
</div>
</div>


== 8. zadatak ==
== 8. zadatak ==
Koji su pravilni načini izvođenja klase B iz klase A?
Na koje sve načine je moguće definisati klasu B izvedenu iz klase A?
<div class="abc-list">
<div class="abc-list">
# <span class="solution"><syntaxhighlight lang="cpp" inline>class B: A {...};</syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>class B : virtual A {...};</syntaxhighlight></span>
# <syntaxhighlight lang="cpp" inline>class B: override A {...};</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>class B : protected public A {...};</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>class B: private protected A {...};</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>class B : override A {...};</syntaxhighlight>
# <span class="solution"><syntaxhighlight lang="cpp" inline>class B: private A {...};</syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>class B : A {...};</syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>class B: public A {...};</syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>class B : public A {...};</syntaxhighlight></span>
</div>
</div>



Верзија на датум 18. фебруар 2021. у 01:27

  • Za pitanja sa više odgovora, tačni odgovori su podebljani i uokvireni.
  • Za pitanja za koje se odgovori unose, tačni odgovori su podvučeni i sakriveni: ovako.
  • Pritisnite na sledeće dugme kako biste ih sakrili ili otkrili:

1. zadatak

Koja od navedenih definicija najbolje odgovara apstrakciji kao elementnu objektno orijentisanog stila programiranja?

  1. Odvajanje interfejsa klase od njene implementacije koja se sakriva od korisnika.
  2. Prepoznavanje bitnih svojstava skupova sličnih objekata i opisivanje zajedničkom klasom.
  3. Mogućnost kreiranja apstraktnih klasa i funkcija članica.
  4. Pristupačnost određenim članovima klase navođenjem prava pristupa.

2. zadatak

Koji je tip promenljive i u sledećem isečku koda napisanom na jeziku C++?

const int j = 1;
const auto k = j;
auto i = new int + k;
  1. const int*
  2. int*
  3. int
  4. const int* const
  5. const int
  6. int *const

3. zadatak

U klasi X je definisan metod m.

class X {
public:
	void m(X *x) const {}
};

Kog tipa je pokazivač this u metodu m?

  1. const X * const
  2. X*
  3. X * const
  4. X
  5. const X *

4. zadatak

Koji od sledećih tvrđenja su tačni za statičke metode klase X:

  1. Nemaju pokazivač this
  2. Imaju pravo pristupa svim članovima X
  3. Imaju javno pravo pristupa nezavisno od sekcije u kojoj se nalaze
  4. Mogu da pristupaju statičkim atributima i funkcijama prostim imenovanjem
  5. Moraju se definisati van tela klase

5. zadatak

Šta ispisuje sledeći program na programskom jeziku C++? (Ukoliko smatrate da se program ne prevodi, unesite NP. Ukoliko smatrate da dolazi do greške pri izvršavanju, unesite X)

#include <iostream>
using namespace std;

int main() {
	int brojevi[] = {1, 2, 3};
	int* pk = brojevi;
	pk++;
	int& ref = *pk;
	ref++;
	cout << brojevi[0] << brojevi[1] << brojevi[2];
    return 0;
}

Rešenje: 133

6. zadatak

Kog tipa je parametar premeštajućeg operatora dodele za klasu X?

Rešenje: X&&

7. zadatak

Koji od ponuđenih prefiksa opšte (nespecijalizovane) šablonske (genreičke[sic]) funkcije ili klase su ispravni?

  1. template<typename T>
  2. template<typename T, int N>
  3. template<int N>
  4. template<typename T, typename U>
  5. template<>

8. zadatak

Na koje sve načine je moguće definisati klasu B izvedenu iz klase A?

  1. class B : virtual A {...};
  2. class B : protected public A {...};
  3. class B : override A {...};
  4. class B : A {...};
  5. class B : public A {...};

9. zadatak

Šta ispisuje sledeći program na programskom jeziku C++?

#include <iostream>
using namespace std;

class A {
private:
    int a;
public:
    A(int aa=0) : a(aa) {}
    void m() { cout << 1; }
    friend ostream& operator<<(ostream& os,const A& a) { return os << a.a; } 
};

class B: public A{
private:
    int a;
public:
    B(int aa) : a(aa) {}
    int m() { cout << 2; return 2; }
};

int main() {
    A a(5);
    B b(7);
    A* ap = &b;
    a.m();
    b.m();
    ap->m();
    cout << a << b;
}

Rešenje: 12150

10. zadatak

Šta ispisuje sledeći program na programskom jeziku C++? Zanemariti upozorenja prevodioca

#include <iostream>
using namespace std;

class IzuzO {};
class IzuzI : public IzuzO {};

int main() {
	try
	{
		try
		{
			throw new IzuzI();
		}
		catch (IzuzI&) { cout << 1; }
		catch (IzuzO&) { cout << 2; }
		catch (...) { cout << 3; throw; }
	}
	catch (IzuzO*) { cout << 4; }
	catch (IzuzI*) { cout << 5; }
	catch (...) { cout << 6; }
	return 0;
}

Rešenje: 34