ОО1/Фебруар 2021 — разлика између измена
(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 == | ||
Koja od navedenih definicija najbolje odgovara ''apstrakciji'' kao elementnu objektno orijentisanog stila programiranja? | |||
<div class="abc-list"> | <div class="abc-list"> | ||
# Odvajanje | # Odvajanje interfejsa klase od njene implementacije koja se sakriva od korisnika. | ||
# <span class="solution"> | # <span class="solution">Prepoznavanje bitnih svojstava skupova sličnih objekata i opisivanje zajedničkom klasom.</span> | ||
# | # Mogućnost kreiranja apstraktnih klasa i funkcija članica. | ||
# | # Pristupačnost određenim članovima klase navođenjem prava pristupa. | ||
</div> | </div> | ||
== 2. zadatak == | == 2. zadatak == | ||
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 | const int j = 1; | ||
const auto j | const auto k = j; | ||
auto | 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>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> | # <syntaxhighlight lang="cpp" inline>int *const</syntaxhighlight> | ||
</div> | </div> | ||
== 3. zadatak == | == 3. zadatak == | ||
U | 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> | # <syntaxhighlight lang="cpp" inline>X * const</syntaxhighlight> | ||
# <syntaxhighlight lang="cpp" inline>X | # <syntaxhighlight lang="cpp" inline>X</syntaxhighlight> | ||
# | # <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 | Š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 | int brojevi[] = {1, 2, 3}; | ||
int* | int* pk = brojevi; | ||
pk++; | |||
int& ref = * | int& ref = *pk; | ||
ref++; | ref++; | ||
cout << | cout << brojevi[0] << brojevi[1] << brojevi[2]; | ||
return 0; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Ред 71: | Ред 75: | ||
== 6. zadatak == | == 6. zadatak == | ||
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 | 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"> | ||
# <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> | ||
# | # <syntaxhighlight lang="cpp" inline>template<></syntaxhighlight> | ||
</div> | </div> | ||
== 8. zadatak == | == 8. zadatak == | ||
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: | # <syntaxhighlight lang="cpp" inline>class B : protected public A {...};</syntaxhighlight> | ||
# <syntaxhighlight lang="cpp" inline>class B: | # <syntaxhighlight lang="cpp" inline>class B : override A {...};</syntaxhighlight> | ||
# <span class="solution"><syntaxhighlight lang="cpp" inline>class B: | # <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?
- Odvajanje interfejsa klase od njene implementacije koja se sakriva od korisnika.
- Prepoznavanje bitnih svojstava skupova sličnih objekata i opisivanje zajedničkom klasom.
- Mogućnost kreiranja apstraktnih klasa i funkcija članica.
- 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;
const int*int*intconst int* constconst intint *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?
const X * constX*X * constXconst X *
4. zadatak
Koji od sledećih tvrđenja su tačni za statičke metode klase X:
- Nemaju pokazivač
this - Imaju pravo pristupa svim članovima X
- Imaju javno pravo pristupa nezavisno od sekcije u kojoj se nalaze
- Mogu da pristupaju statičkim atributima i funkcijama prostim imenovanjem
- 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?
template<typename T>template<typename T, int N>template<int N>template<typename T, typename U>template<>
8. zadatak
Na koje sve načine je moguće definisati klasu B izvedenu iz klase A?
class B : virtual A {...};class B : protected public A {...};class B : override A {...};class B : A {...};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