![]() Ласло Краус |
Објекнто програмирање 2 - колоквијуми Први колоквијум 24. 11. 2012 |
---|
Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):
(
марка,
ширина,
дужина)
.
[
ширина,
дужиан]
иза чега се налази евентуални текстуални приказ возила на месту.
Написати на језику Java програм који:
Користити константне параметре (не треба ништа учитавати с главног улаза).
ispitx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.Z:
.
// Vozilo.java package parking; public abstract class Vozilo { private String marka; private double sir, duz; public Vozilo(String m, double s, double d) { marka = m; sir = s; duz = d; } public double sir() { return sir; } public double duz() { return duz; } public abstract String vrsta(); public String toString() { return vrsta() + "(" + marka + "," + sir + "," + duz + ")"; } } // Auto.java package parking; public class Auto extends Vozilo { public Auto(String m, double s, double d) { super(m, s, d); } public String vrsta() { return "Auto"; } } // Kamion.java package parking; public class Kamion extends Vozilo { public Kamion(String m, double s, double d) { super(m, s, d); } public String vrsta() { return "Kamion"; } } // GNeMoze.java package parking; public class GNeMoze extends Exception { public String toString() { return "*** Ne moze da se smesti!"; } } // Mesto.java package parking; public class Mesto implements Cloneable { private static int posId = 0; private int id = ++posId; private double sir, duz; private Vozilo voz = null; public Mesto (double s, double d) { sir = s; duz = d; } public Mesto() { this(2.5, 4.0); } public boolean moze(Vozilo v) { return voz==null && sir>=v.sir() &&duz>=v.duz(); } public Mesto smesti(Vozilo v) throws GNeMoze { if (!moze(v)) throw new GNeMoze(); voz = v; return this; } public Vozilo dohvati() { return voz; } public Vozilo ukloni() { Vozilo v = voz; voz = null; return v; } public Mesto clone() { try { Mesto m = (Mesto)super.clone(); m.id = ++posId; m.voz = null; return m; } catch (CloneNotSupportedException g) { return null; } } public String toString() { String s = id + "[" + sir + "," + duz + "]"; if (voz != null) s += " " + voz; return s; } } // GIndeks.java package parking; public class GIndeks extends Exception { public String toString() { return "*** Nedozvoljen indeks!"; } } // Parking.java package parking; public class Parking { private Mesto[] mesta; private int slob; public Parking(Mesto[] mst) { mesta = mst; slob = mst.length; } public Parking dolazi(Vozilo v) throws GNeMoze { int i = 0; while (i<mesta.length && !mesta[i].moze(v)) i++; if (i == mesta.length) throw new GNeMoze(); mesta[i].smesti(v); slob--; return this; } public Vozilo odlazi(int ind) throws GIndeks { if (ind<0 || ind>=mesta.length) throw new GIndeks(); slob++; return mesta[ind].ukloni(); } public int slobodno() { return slob; } public String toString() { StringBuilder sb = new StringBuilder(); for (int i=0; i<mesta.length; i++) sb.append(mesta[i]).append('\n'); return sb.toString(); } } // Parkiranje.java import parking.*; public class Pаrkiranje { public static void main(String[] args) { Mesto m1 = new Mesto(2.5, 4), m2 = new Mesto(3, 6); Mesto[] mst = {m1, m2, m1.clone(), m2.clone()}; Parking prk = new Parking(mst); try { prk.dolazi(new Kamion("KIA", 3, 5.5)); prk.dolazi(new Auto("BMW", 2.5, 4)); prk.dolazi(new Kamion("VW", 3, 6)); prk.odlazi(1); prk.dolazi(new Auto("Jugo", 2, 3.6)); prk.dolazi(new Kamion("VW", 3, 7)); } catch (Exception g) { System.out.println(g); } System.out.print(prk); } }(садржај)
*** Ne moze da se smesti! 1[2.5,4.0] Auto(BMW,2.5,4.0) 2[3.0,6.0] Auto(Jugo,2.0,3.6) 3[2.5,4.0] 4[3.0,6.0] Kamion(VW,3.0,6.0)
Copyright © 2013, Laslo Kraus
Последња ревизија: 20.1.2013.