OO2/K 2023

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

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!");
     }
}
  1. java Pozdrav
  2. java Pozdrav.java
  3. javac Pozdrav.java
  4. javac Pozdrav.class

2. zadatak

Koja od sledećih tvrđenja su tačna za programski jezik Java?

  1. goto je rezervisana reč i ne može se koristiti za ime promenljive.
  2. foreach je rezervisana reč i koristi se u instrukciji petlje za obilazak svih elemenata niza.
  3. final je rezervisana reč i ne može se koristiti za ime promenljive.
  4. const je rezervisana reč i ne može se koristiti za ime promenljive.
  5. const je rezervisana reč koja može da se koristi alternativno sa rezervisanom rečju final.

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?

  1. (bez modifikatora, podrazumevano) Član je dostupan samo u kodu datog paketa
  2. private Član je dostupan samo u klasi u kojoj je definisan
  3. public Član je dostupan na svim mestima na kojima se može pristupiti i tipu u kojem je član definisan
  4. protected Č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?

  1. Može da se koristi za poziv drugog konstruktora iste klase.
  2. Može da se prosledi kao stvarni argument nekom metodu.
  3. Koristi se implicitno (bez navođenja) kao referenca na tekući objekat prilikom direktnog imenovanja nestatičkih članova klase.
  4. Može da se koristi kao referenca unutar statičkih metoda.
  5. Predstavlja referencu na objekat kome se upravo pristupa.

5. zadatak

Koja od sledećih tvrđenja su tačna na programskom jeziku Java?

  1. 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 deklaracija package p;
  2. Moguće je definisati tip А u paketu p ukoliko je istoimeni tip već definisan u paketu p.sp.
  3. Ukoliko postoje paketi p i p.sp uvođenjem svih članova paketa p naredbom import p.*; uvode se i svi članovi paketa p.sp.
  4. Tipovi podataka u izvornoj datoteci bez deklaracije paketa biće smeštani u bezimeni (default) paket.
  5. Moguće je pristupiti članu sa paketski pravom pristupa klase А definisane u paketu p iz metoda klase В definisane u paketu p.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.

  1. public class Main {
        public static void f() {
            throw new Exception();
        }
        public static void main(String args[]) {
            f();
        }
    }
    
    Ne prevodi se
  2. public class Main {
        public static void f() {
            throw new Exception();
        }
        public static void main(String args[]) {
            try {
                f();
            } catch (Exception e) {}
        }
    }
    
    Ne prevodi se
  3. public class Main {
        public static void main(String args[]) {
            try {
                throw new Exception();
            } catch (Exception e) {}
        }
    }
    
    Prevodi se

9. zadatak

Koje definicije ugnježdenih tipova na jeziku Java su ispravne?

  1. static class C {}
  2. abstract class C {}
  3. local class C {}
  4. class C {}
  5. final class C {}
  6. static interface I {}
  7. anonymous class {}
  8. 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;
        ###
    }
}
  1. I c = (double a) -> a + b;
  2. I c = (int a) -> a + b;
  3. I c = (int a) -> { a = a * a; return a; }
  4. I c = (int a) -> { b--; return a + b; }
  5. I c = (int a) -> { double r = a + b; return r; }