ОО2/Јун 2021 — разлика између измена
(Zadaci sa današnjeg ispita, tekst od Ivana i `<@312922375337410571>`, sa objašnjenjima gde su potrebna) |
м (Dodat 6. zadatak za G4) |
||
Ред 262: | Ред 262: | ||
=== 6. zadatak === | === 6. zadatak === | ||
Navesti koja su tvrđenja tačna za lokalne klase: | |||
<div class="abc-list"> | |||
# <span class="solution">Lokalne klase definisane u nestatičkom okruženju okružujuće klase sadrže pokazivač na objekat okružujuće klase.</span> | |||
# Referenca na lokalnu klasu se može koristiti van bloka u kome je lokalna klasa definisana. | |||
# <span class="solution">Referenca na lokalnu klasu se može proslediti kao povratna vrednost metoda.</span> | |||
# <span class="solution">Referenca na lokalnu klasu se može proslediti kao argument metodu.</span> | |||
</div> | |||
=== 7. zadatak === | === 7. zadatak === |
Верзија на датум 8. јун 2021. у 23:05
- 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:
G1/G2
1. zadatak
Koja od sledećih tvrđenja su tačna za programski jezik Java?
- Moguće je imenovati promenljive u izvornom kodu napisanom na jeziku Java koristeći srpsko ćirilično pismo.
- Veličina primitivnog podatka tipa
char
u programskom jeziku Java je tačno 8 bita. - Izvorni kod napisan na programskom jeziku Java koristeći ASCII način kodiranja translira se pre prevođenja koristeći UTF-16 način kodiranja.
- Java koristi UTF-16 način kodiranja za kodiranje znaka (
char
). - Java koristi isključivo ASCII način kodiranja za kodiranje znaka (
char
).
2. zadatak
Koja od sledećih tvrđenja su tačna za glavni metod (funkciju main
koja predstavlja ulaznu tačku programa) na programskom jeziku Java?
- Glavni metod mora biti javno dostupan.
- Glavni metod mora biti statički metod.
- Glavni metod može da ima proizvoljan broj parametara proizvoljnog tipa.
- Povratna vrednost glavnog metoda mora biti tipa
void
. - Svaka od više klasa koje obrazuju program može da definiše metod
main
, sa odgovarajućom deklaracijom glavnog metoda i različitim telom, od kojih svaki može da bude glavni metod u različitim pokretanjima programa.
3. zadatak
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?
- Paketi rešavaju problem konflikta imena tipova.
- Paketi ostvaruju koncept prostora imena sličan konceptu
namespace
u jeziku C++. - Po konvenciji, imena paketa se pišu isključivo velikim slovima.
- Paket predstavlja skup logički povezanih tipova objekata (na primer, klasa, interfejsa).
- Paketi utiču na pravo pristupa sadržanim tipovima i članovima tipova.
4. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol x
ukoliko se program ne prevodi.
interface I {
static void m() {
System.out.print(1);
}
}
class B {
public static void m() {
System.out.print(2);
}
}
class D extends B implements I {
public D() {
m();
B.m();
}
}
public class Test {
public static void main(String args[]) {
new D();
}
}
Odgovor: 22
Objašnjenje: Poziv m()
poziva nasleđeni metod klase B
jer se statički metod interfejsa mora pozvati eksplicitno preko naziva interfejsa.
5. zadatak
Šta može da stoji umesto #### da bi se sledeći izvorni kod napisan na programskom jeziku Java uspešno preveo?
public class Test {
public static void main(String[] args) {
try {
####
} catch (Exception e) {}
}
}
throw 1;
throw new Throwable();
throw new Exception();
throw;
throw new Object();
Objašnjenje: Izuzetak koji se baca kroz throw
na programskom jeziku Java mora biti izveden iz Throwable
. Bacanje Throwable
se ovde neće prevesti jer metoda ne hvata niti deklariše u throws
klauzuli Throwable
.
6. zadatak
Koja od sledećih tvrđenja su tačna za programski jezik Java?
- Lokalnu klasu moguće je definisati unutar metoda klase.
- Lokalnu klasu moguće je definisati unutar konstruktora klase.
- Lokalnu klasu moguče je definisati unutar inicijalizacionog bloka klase.
- Lokalnu klasu moguće je definisati unutar definicije klase, van bilo kog bloka koda.
- Lokalnu klasu moguće je definisati unutar main funkcije.
7. zadatak
Dat je sledeći programski kod napisan na programskom jeziku Java.
class Brojac {
private int br = 0;
public void inkrement() { br++; }
public int dajBroj() { return br; }
}
public class Test {
public static void main(String args[]) throws InterruptedException {
Brojac brojac = new Brojac();
Thread[] niti = new Thread[10];
for (int i = 0; i < niti.length; i++) niti[i] = new Thread(() -> { brojac.inkrement(); });
for (int i = 0; i < niti.length; i++) niti[i].start();
for (int i = 0; i < niti.length; i++) niti[i].join();
System.out.print(brojac.dajBroj());
}
}
Koje od sledećih tvrdnji su tačne za prikazani kod?
(Izaberite jedan odgovor)
- Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu uvek se ispisuje vrednost 10.
- Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu može se, ali ne mora, ispisati vrednost 10.
- Programski kod se ne prevodi uspešno.
- Programski kod se uspešno prevodi i izvršava. Prilikom izvršavanja programa na standardnom izlazu uvek se ispisuje vrednost 0.
- Programski kod se uspešno prevodi, ali se prilikom izvršavanja emituje izuzetak InterruptedException.
Objašnjenje: Metodi klase Brojac
nisu sinhronizovani, tako da je tehnički moguće da br++
zapravo prvo dohvati vrednost br
, onda bude prekinuta od strane neke druge niti, pa pri povratku uveća pročitanu vrednost za 1 i upiše u br
, time gazeći vrednost koje su prethodne niti posle prekida upisale.
8. zadatak
Klasa Menu
izvedena je direktno iz klase:
MenuContainer
MenuComponent
MenuBar
Component
MenuItem
9. zadatak
Koja od sledećih tvrdnji je tačna?
(Izabrati više odgovora)
- Programi pisani za izvršenje na platformi .NET se prevode u međukod MSIL.
- Jedna od ciljnih karakteristika radnog okvira .NET je integracija sistema korišćenjem otvorenih standarda za razmenu podataka kakav je XML.
- Izvršni sklop (assembly) za .NET može biti u samo jednom ili više fajlova.
- Izvršno okruženje (CLR) radnog okvira .NET izvršava program iz fajla koji sadrži prevedeni C++ program na mašinski jezik računara domaćina.
- Jezik Java je standard međunarodne organizacije za standardizaciju ISO, za razliku od jezika C# koji nije standardizovan.
10. zadatak
Šta ispisuje sledeći program na jeziku C#?
class Program {
static void M1(ref int i) { System.Console.Write(i++ + " "); }
static void M2(ref int i) { System.Console.Write(i/2 + " "); }
static void M3(ref int i) { System.Console.Write(i-- + " "); }
public delegate void Delegat(ref int i);
public static void Main(string[] args) {
Delegat d1 = new Delegat(M1);
Delegat d2 = new Delegat(M2);
Delegat da = d1 + d2;
Delegat d = da + d1;
d += new Delegat(M3) + da;
d -= d1;
d -= d2;
d -= new Delegat(M3);
int i = 3;
d(ref i);
}
}
Odgovor: 3 2 4
Objašnjenje: U d
se pri stvaranju dodaju M1
i M2
(iz da
) pa ponovo M1
. Zatim se dodaju M3
i ponovo M1
i M2
(iz da
). Onda se uklanjaju M1
, M2
i M3
sa kraja liste poziva pa ostaju samo M1
, M2
i M1
u delegatu. Posle izvršavanja prvog M1
ispis je 3 a vrednost je 4, posle M2
ispis je 2 a vrednost ostaje ista, i posle drugog M1
ispis je 4 i vrednost je 3.
G3/G4
1. zadatak
Koje od sledećih tvrđenja je tačno na programskom jeziku Java?
- Veličina tipa
double
je zavisna od implementacije. - Veličina tipa
double
je uvek ista i iznosi 32 bita. - Veličina tipa
double
je uvek ista i iznosi 64 bita. - Veličina tipa
double
je uvek ista i iznosti 128 bita. - ...
2. zadatak
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?
- Potpis funkcije se sastoji iz imena, broja argumenata i njihovih tipova.
- Deklaracija sadrži potpis, tip rezultata i
throws
klauzulu. - U jednoj klasi može postojati više metoda sa istim potpisom.
- Ako se u klasi nađe više metoda sa istom deklaracijom, njihova implementacija se u vreme prevođenja spaja u jednu metodu.
- ...
3. zadatak
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?
- Jedan paket se može prostirati na više fajlova.
- Svaki fajl sa izvornim kodom koji je deo nekog paketa mora sadržati naredbu
package imePaketa;
. - Različite metode sa istom deklaracijom se mogu nalaziti u dva različita paketa.
- Naredba
package imePaketa
mora biti prva naredba u fajlu. - Jedan fajl može biti sadržan u više paketa.
4. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol x
ukoliko se program ne prevodi.
interface I {
static void m() {
System.out.print(1);
}
}
class B {
public static void m() {
System.out.print(2);
}
}
class D extends B implements I {
public D() {
I.m();
B.m();
}
}
public class Test {
public static void main(String args[]) {
new D();
}
}
Odgovor: 12
5. zadatak
Šta može da stoji umesto #### da bi se sledeći izvorni kod napisan na programskom jeziku Java uspešno preveo?
class Izuzetak extends Exception {}
class Klasa {
public m() throws Izuzetak {
####
}
}
throw;
throw 1;
throw new RuntimeException();
throw new Exception();
throw new Izuzetak();
Odgovor: Moguće je baciti Izuzetak
jer je naznačen u throws
klauzuli i RuntimeException
jer je neproveren.
6. zadatak
Navesti koja su tvrđenja tačna za lokalne klase:
- Lokalne klase definisane u nestatičkom okruženju okružujuće klase sadrže pokazivač na objekat okružujuće klase.
- Referenca na lokalnu klasu se može koristiti van bloka u kome je lokalna klasa definisana.
- Referenca na lokalnu klasu se može proslediti kao povratna vrednost metoda.
- Referenca na lokalnu klasu se može proslediti kao argument metodu.
7. zadatak
Isti kao za G1/G2.
8. zadatak
Koje klase su izvedene iz Component
?
BorderLayout
Panel
Graphics
MenuBar
TextField
Checkbox
Choice
Button
9. zadatak
Koje od sledećih tvrdnji su tačne u vezi sa izvršnim okruženjem u .NET (CLR)?
- CLR je odgovoran za sigurnost i zaštitu.
- CLR ne podržava više jezika.
- CLR podržava višenitno izvršavanje.
- CLR ne podržava JIT prevođenje.
- CLR upravlja memorijom programa.
10. zadatak
Neki kod sa delegatima. (Nedostaje tekst zadatka.)