OO2/K 2024
Kolokvijum 2024. godine na RTI (i ostalim ER odsecima) održan je 20. aprila u 15:30h i trajao je 20 minuta. Od oblasti došli su uvod, pregled, klase, paketi, izvođenje, interfejsi, izuzeci i ugnježdeni tipovi na programskom jeziku Java.
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
1. zadatak
Koje od sledećih tvrdnji su tačne za programski jezik Java?
- Ispravno je da se prosledi izuzetak tipa
T
na spoljašnji nivo blokatry
iz koda rukovaocacatch(T i) {<kod>}
navedenog iza blokatry
iz kog je bačen izuzetak - Ispravno je da postoji
try
blok kojeg ne sledi ni jedancatch
blok - Ispravno je da se baci izuzetak primitivnog tipa (npr.
int
) - Ispravno je da se u jednom rukovaocu (
catch
grani) obrađuje više tipova izuzetaka - Ispravno je da rukovalac (
catch
grana) osnovnog tipa izuzetka bude naveden pre (ispred) rukovaoca izvedenog tipa izuzetka
2. zadatak
Na jeziku Java moguće je stvoriti:
- Niz koji sadrži po referenci podatke klasnog tipa i nalazi se na steku.
- Niz koji sadrži po referenci podatke klasnog tipa i nalazi se u memoriji za dinamičku alokaciju (heap)
- Niz koji sadrži po referenci podatke prostog (primitivnog) tipa i nalazi se u memoriji za dinamičku alokaciju (heap)
- Niz koji sadrži po vrednosti podatke prostog (primitivnog) tipa i nalazi se na steku.
- Niz koji sadrži po vrednosti podatke klasnog tipa i nalazi se na steku.
- Niz koji sadrži po vrednosti podatke klasnog tipa i nalazi se u memoriji za dinamičku alokaciju (heap).
- Niz koji sadrži po referenci podatke prostog (primitivnog) tipa i nalazi se na steku.
- Niz koji sadrži po vrednosti podatke prostog (primitivnog) tipa i nalazi se u memoriji za dinamičku alokaciju (heap)
3. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol NP 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();
I.m();
}
}
public class Test {
public static void main (String args[]){
new D();
}
}
Odgovor: 21
4. zadatak
Neka je dat sledeći program koji se nalazi u fajlu Main.java.
//fajl Main.java
public class Main{
public static void main (String args[]) {
System.out.print("Pozdrav!");
}
}
Šta je sve od navedenog tačno?
- Prevođenjem fajla Main.java dobija se fajl Main.class koji sadrži mašinski kod računara.
- Prevođenjem fajla Main.java dobija se fajl Main.class koji sadrži bajtkod.
- Komandom
javac Main.java
zadatom iz komandne linije pokreće se Javina virtuelna mašina koja prevodi dati fajl. - Komandom
java Main
zadatom iz komandne linije pokreće se Javina virtuelna mašina koja izvršava prevedeni program. - Fajl Main.java sadrži bajtkod.
5. zadatak
Koja od sledećih naredbi na jeziku Java može da se smatra ispravnom definicijom simboličke konstante (compile time constant) koja ne zahteva dodelu memorije u vreme izvršenja?
- Lokalna promenljiva metoda:
static final int i = 100; - Lokalna promenljiva metoda:
final int i = 100; - Član klase:
public final int i = 100; - Član klase:
public static int i = 100; - Član klase:
public static final int i = 100;
6. zadatak
Šta može da stoji umesto ### da bi se sledeći izvorni kod napisan na jeziku Java uspešno preveo?
interface I{
int add (int a, int b);
}
public class Test {
public static void main (String args[]) {
####
}
}
I c = int a, int b -> a + b;
I c = (int a, int b) -> a + b;
I c = (a, b) -> a + b;
I c = a, b -> a + b;
I c = (int a, b) -> a + b;
7. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Upisati simbol NP ukoliko se program ne prevodi.
class B {
public void m(B x) {
x.f();
}
public void f(){
System.out.print(1);
}
}
class D extends B {
public void f(){
System.out.print(2);
}
}
public class Main{
public static void main (String args[]){
B b = new B();
b.m(b);
b = new D();
b.m(b);
}
}
Odgovor: 12
8. zadatak
Koje od sledećih tvrdnji su tačne za programski jezik Java?
- Ugnežđeni interfejsi su uvek statički
- Ugnežđena klasa ne može da bude označena metodom
abstract
- Ugnežđena klasa može da proširi proizvoljnu klasu
- Tipovi ugnežđeni u interfejse su uvek statički
- Ugnežđenom tipu je moguć pristup samo unutar tipa u koji je ugrađen
9. zadatak
Napisati naredbu kojom se uvoze svi statički članovi klase Klasa iz paketa paket
Odgovor: import static paket.Klasa.*;
10. zadatak
Šta može da stoji umesto #### da bi se sledeći kod napisan na programskom jeziku Java uspešno preveo?
class B{
B b1;
static B b2;
public static void s_m(){}
public void m() {}
public static void test(){
####
}
}
B.test();
Object o = this.b2;
s_m();
Object o = new B();
this.m();