Elektrotehnicki fakultet, Beograd  Ласло Краус ИР2ОО2
Kолоквијум
21. 4. 2012.

Аутори: Игор Тартаља, Ђорђе Ђурђевић и Ласло Краус

Задаци: 1 2 | Напоменe | Решења: 2

Поставка задатка 1 (30 поена) ( | почетак)

Одговорити концизно (по једна или две реченице, или "да"/"не" где се не тражи образложење) и прецизно на следећа питaња:

а) У чему је разлика између типoва података int и Integer на језику Јава?

б) Зашто се "мртав" објекат може "оживети" (реанимирати) само једном и шта је боље решење од оживљавања мртвог објекта ако је његово стање потребно сачувати?

в) Да ли се у два имплементирана интерфејса могу налазити методе са истим именима и:

  1. различитим листама аргумената и бацаних изузетака и различитим повратним типовима;
  2. истим листама аргумената и бацаних изузетака, а различитим повратним типовима;
  3. истим листама аргумената и бацаних изузетака и истим повратним типовима.

Поставка задатка 2 (ukupno 70 поена) ( решење | почетак)

Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):

(5 поена) Написати на језику Java програм (класу с главном функцијом) који направи једну наплатну рампу са неколико наплатних станица, затим направи неколико возила, достави их наплатној рампи за наплату и на главном излазу испише наплатну рампу. Користити константне параметре (не треба ништа учитавати).


Напоменe ( почетак)


Решење задатка 2 ( поставка | почетак)

// Kategor.java

package putarina;

public interface Kategor {
  int kategor();
}

// Vozilo.java package putarina; public abstract class Vozilo implements Kategor { private String regBr; public Vozilo(String rb) { regBr = rb; } public String regBr() { return regBr; } public String toString() { return regBr + "(" + kategor() + ")"; } }
// Auto.java package putarina; public class Auto extends Vozilo { public Auto(String regBr) { super(regBr); } public int kategor() { return 1; } }
// Kamion.java package putarina; public class Kamion extends Vozilo { public Kamion(String regBr) { super(regBr); } public int kategor() { return 2; } }
// GKat.java package putarina; public class GKat extends Exception { public String toString() { return "*** Nepostojeca kategorija!"; } }
// GPon.java package putarina; public class GPon extends Exception { public String toString() { return "*** Ponovo zadata putarina"; } }
// Cenovnik.java package putarina; public class Cenovnik implements Cloneable { private int[] putarine; private boolean []promene; private void provera(int kat) throws GKat { if (kat<=0 || kat>putarine.length) throw new GKat(); } public Cenovnik(int maxKat) { putarine = new int[maxKat]; promene = new boolean[maxKat]; } public Cenovnik postavi(int iznos,int kat) throws GKat, GPon { provera(kat); if( promene[kat-1] ) throw new GPon(); promene[kat-1] = true; putarine[kat-1] = iznos; return *this; } public int putarina(int kat) throws GKat { provera(kat); return putarine[kat-1]; } public Cenovnik clone() { try { Cenovnik c = (Cenovnik)super.clone(); c.putarine = putarine.clone(); c.promene = new boolean[promene.length]; return c; } catch (CloneNotSupportedException e) { return null; } } }
// GNemaCen package putarina; public class GNemaCen extends Exception { public String toString() { return "*** Nema cenovnika!"; } }
// Stanica.java package putarina; public class Stanica { private static int posId = 0; private int id = ++posId; private Cenovnik cen; private int naplaceno = 0; public Stanica(Cenovnik c) { novCen(c); } public Stanica novCen(Cenovnik c) { cen = c; naplaceno = 0; return this;} public Stanica naplati(Vozilo v) throws GNemaCen, GKat { if (cen == null) throw new GNemaCen(); naplaceno += cen.putarina(v.kategor()); return this; } public int naplaceno() { return naplaceno; } public String toString() { return id + "(" + naplaceno + ")"; } }
// Rampa.java package putarina; public class Rampa { private String naziv; private Stanica[] stanice; public Rampa(String naz, int brStan, Cenovnik cen) { naziv = naz; stanice = new Stanica [brStan]; for (int i=0; i<brStan; i++) stanice[i] = new Stanica(cen); } public Rampa novCen(Cenovnik c) { for (Stanica s: stanice) s.novCen(c); return this; } public Rampa pristiglo(Vozilo v) throws GKat, GNemaCen { stanice[(int)(Math.random()*stanice.length)].naplati(v); return this; } public int naplaceno() { int uk = 0; for(Stanica s: stanice) uk += s.naplaceno(); return uk; } public String toString() { String s = naziv + "(" + naplaceno() + "):"; for (int i=0; i<stanice.length; i++) { if (i > 0) s += ","; s += stanice[i]; } return s; } }
// Program.java import putarina.*; public class Program { public static void main(String[] varg) { try { Cenovnik cen = new Cenovnik(2); cen.postavi(100, 1).postavi(200, 2); Rampa ramp = new Rampa("Jagodina", 3, cen); ramp.pristiglo(new Auto ("BG001AA")) .pristiglo(new Kamion("NI021XY")) .pristiglo(new Kamion("BG123PQ")) .pristiglo(new Auto ("BG239UK")) .pristiglo(new Auto ("SU092JW")); System.out.println(ramp); } catch (Exception g) { System.out.println(g); } } }
Jagodina(700):1(500),2(200),3(0)
( почетак)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 2013, Laslo Kraus
Последња ревизија: 16.4.2013.