Ласло Краус |
ИР2ОО2 Kолоквијум 21. 4. 2012. |
|---|
Одговорити концизно (по једна или две реченице, или "да"/"не" где се не тражи образложење) и прецизно на следећа питaња:
а) У чему је разлика између типoва података int и Integer на језику Јава?
б) Зашто се "мртав" објекат може "оживети" (реанимирати) само једном и шта је боље решење од оживљавања мртвог објекта ако је његово стање потребно сачувати?
в) Да ли се у два имплементирана интерфејса могу налазити методе са истим именима и:
Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):
(категорија).
(наплаћенИзнос). Грешка је ако је категорија ван дозвољеног опсега или ако у тренутку наплате није дефинисан ценовник.
(наплаћено):станица,…,станица.
(5 поена) Написати на језику Java програм (класу с главном функцијом) који направи једну наплатну рампу са неколико наплатних станица, затим направи неколико возила, достави их наплатној рампи за наплату и на главном излазу испише наплатну рампу. Користити константне параметре (не треба ништа учитавати).
// 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)
(⇒ почетак)
Copyright © 2013, Laslo Kraus
Последња ревизија: 16.4.2013.