OO2/K 2023
Kolokvijum 2023. godine na RTI (i ostalim ER odsecima) održan je 22. arpila U 9:15 časova (postojala je samo jedna grupa). Od oblasti došli su uvod, pregled, klase, paketi, izvođenje, interfejsi, izuzeci i ugnježdeni tipovi na programskom jeziku Java.
- 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, tako da se prikažu kada izaberete taj tekst (primer: ovako)
- Pritisnite levo dugme ispod za sakrivanje i otkrivanje svih odgovora, ili desno dugme za uključivanje i isključivanje interaktivnog režima:
1. zadatak
Kojom komandom se sledeći programski kod napisan u fajlu sa imenom "Pozdrav.java" prevodi i kreira bajtkod "Pozdrav.class"?
// Pozdrav.java
public class Pozdrav {
public static void main(String[] args) {
System.out.print("Zdravo!");
}
}
java Pozdravjava Pozdrav.javajavac Pozdrav.javajavac Pozdrav.class
2. zadatak
Koja od sledećih tvrđenja su tačna za programski jezik Java?
gotoje rezervisana reč i ne može se koristiti za ime promenljive.foreachje rezervisana reč i koristi se u instrukciji petlje za obilazak svih elemenata niza.finalje rezervisana reč i ne može se koristiti za ime promenljive.constje rezervisana reč i ne može se koristiti za ime promenljive.constje rezervisana reč koja može da se koristi alternativno sa rezervisanom rečjufinal.
3. zadatak
Ne uzimajući u obzir ugnježdene i obuhvatajuće (spoljašnje) klase, spojiti navedene modifikatore prava pristupa sa njihovim odgovarajućim opisom na programskom jeziku Java?
- (bez modifikatora, podrazumevano) Član je dostupan samo u kodu datog paketa
privateČlan je dostupan samo u klasi u kojoj je definisanpublicČlan je dostupan na svim mestima na kojima se može pristupiti i tipu u kojem je član definisanprotectedČlan je dostupan samo u izvedenim potklasama i kodu celog paketa u kojem se nalazi klasa u kojoj je član definisan
4. zadatak
Koja od sledećih tvrđenja su tačna za ključnu reč this na programskom jeziku Java?
- Može da se koristi za poziv drugog konstruktora iste klase.
- Može da se prosledi kao stvarni argument nekom metodu.
- Koristi se implicitno (bez navođenja) kao referenca na tekući objekat prilikom direktnog imenovanja nestatičkih članova klase.
- Može da se koristi kao referenca unutar statičkih metoda.
- Predstavlja referencu na objekat kome se upravo pristupa.
5. zadatak
Koja od sledećih tvrđenja su tačna na programskom jeziku Java?
- U nekom fajlu sa izvornim kodom jednog programa može da postoji deklaracija
package p.sp;iako ni u jednom fajlu istog programa ne postoji deklaracijapackage p; - Moguće je definisati tip
Аu paketupukoliko je istoimeni tip već definisan u paketup.sp. - Ukoliko postoje paketi
pip.spuvođenjem svih članova paketapnaredbomimport p.*;uvode se i svi članovi paketap.sp. - Tipovi podataka u izvornoj datoteci bez deklaracije paketa biće smeštani u bezimeni (default) paket.
- Moguće je pristupiti članu sa paketski pravom pristupa klase
Аdefinisane u paketupiz metoda klaseВdefinisane u paketup.sp.
6. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Upisati NP ako se program ne prevodi.
class B {
public void f(B x) {
System.out.println(1);
}
}
class D extends B {
public void f(D x) {
System.out.println(2);
}
}
public class Test {
public static void main(String args[]) {
B b = new B();
b.f(new D());
b = new D();
b.f(new D());
}
}
Odgovor: 11
Objašnjenje: Ovde se primenjuje overloading, a ne overriding.
7. zadatak
Šta ispisuje sledeći program na programskom jeziku Java? Upisati NP ako se program ne prevodi.
interface I {
static void f() {
System.out.println(1);
}
}
class B {
public void f() {
System.out.println(2);
}
}
class D extends B implements I {
public D() {
I.f();
f();
}
}
public class Test {
public static void main(String args[]) {
new D();
}
}
Odgovor: 12
8. zadatak
Za svaki od sledećih programa na jeziku Java navesti da li se prevodi ili ne.
- Ne prevodi se
public class Main { public static void f() { throw new Exception(); } public static void main(String args[]) { f(); } }
- Ne prevodi se
public class Main { public static void f() { throw new Exception(); } public static void main(String args[]) { try { f(); } catch (Exception e) {} } }
- Prevodi se
public class Main { public static void main(String args[]) { try { throw new Exception(); } catch (Exception e) {} } }
9. zadatak
Koje definicije ugnježdenih tipova na jeziku Java su ispravne?
static class C {}abstract class C {}local class C {}class C {}final class C {}static interface I {}anonymous class {}interface I {}
10. zadatak
Šta može da stoji umesto ### da bi se sledeći kod napisan na jeziku Java uspešno preveo?
interface I {
int f(int a);
}
public class Test {
public static void main(String args[]) {
int b = 3;
###
}
}
I c = (double a) -> a + b;I c = (int a) -> a + b;I c = (int a) -> { a = a * a; return a; }I c = (int a) -> { b--; return a + b; }I c = (int a) -> { double r = a + b; return r; }