![]() Ласло Краус |
Објекнто програмирање 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.