![]() Ласло Краус |
Објекнто програмирање 2 - колоквијуми Први колоквијум 26. 11. 2011 |
|---|
Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):
(тежина).
[возач,сопственаТежина].
[возач,сопственаТежина](товар/носивост).
[возач,сопственаТежина]{путник|…|путник}.
Написати на језику Java програм који:
Користити константне параметре (не треба ништа учитавати с главног улаза).
ispitx (x је број радне станице за којим се ради). Лозинка на свакој радној станици је student.Z:.
// Merljiv.java
package vozila;
public interface Merljiv {
double tezina();
}
// Osoba.java
package vozila;
public class Osoba implements Merljiv {
private String ime;
private double tez;
public Osoba(String iime, double ttez)
{ ime = iime; tez = ttez; }
public double tezina() { return tez; }
public String toString() { return ime + "(" + tez + ")"; }
}
// Vozilo.java
package vozila;
public abstract class Vozilo implements Merljiv {
private Osoba vozac;
private double sopTez;
public Vozilo(Osoba voz, double sopT)
{ vozac = voz; sopTez = sopT; }
public double tezina() { return sopTez + vozac.tezina(); }
public abstract char vrsta();
public String toString()
{ return vrsta() + "[" + vozac + "," + sopTez + "]"; }
}
// GUtovar.java
package vozila;
public class GUtovar extends Exception {
public String toString() { return "*** Previse tereta!"; }
}
// GIstovar.java
package vozila;
public class GIstovar extends Exception {
public String tostring() { return "*** Nema toliko tereta!"; }
}
// TVozilo.java
package vozila;
public class TVozilo extends Vozilo {
private double nosivost, tovar = 0;
public TVozilo(Osoba vozac, double sopTez, double nos)
{ super(vozac, sopTez); nosivost = nos; }
public double tezina() { return super.tezina() + tovar; }
public char vrsta() { return 'T'; }
public TVozilo utovari(double tez) throws GUtovar{
if (tovar + tez > nosivost) throw new GUtovar();
tovar += tez; return this;
}
public TVozilo istovar(double tez)throws GIstovar{
if (tovar - tez < 0) throw new GIstovar();
tovar -= tez; return this;
}
public String toString() {
return super.toString() + "(" + tovar + "/"
+ nosivost + ")";
}
}
// GUlaz.java
package vozila;
public class GUlaz extends Exception {
public String toString() { return "*** Previse putnika!"; }
}
// GIzlaz.java
package vozila;
public class GIzlaz extends Exception {
public String toString() { return "*** Nema tog putnika;"; }
}
// PVozilo.java
package vozila;
public class PVozilo extends Vozilo {
private Osoba[] osobe;
public PVozilo(Osoba vozac, double sopTez, int kap) {
super(vozac, sopTez);
osobe = new Osoba [kap];
}
public double tezina() {
double t = super.tezina();
for (int i=0; i<osobe.length; i++)
if (osobe[i] != null) t += osobe[i].tezina();
return t;
}
public char vrsta() { return 'P'; }
public PVozilo ulazi(Osoba oso) throws GUlaz {
int i = 0; while (i<osobe.length && osobe[i]!=null) i++;
if (i == osobe.length) throw new GUlaz();
osobe[i] = oso;
return this;
}
public PVozilo izlazi(Osoba oso) throws GIzlaz {
int i = 0; while (i<osobe.length && osobe[i]!=oso) i++;
if (i == osobe.length) throw new GIzlaz();
osobe[i] = null;
return this;
}
public String toString() {
String s = super.toString() + "{";
boolean prva = true;
for (int i=0; i<osobe.length; i++)
if (osobe[i] != null) {
if (!prva) s += "|";
s += osobe[i];
prva = false;
}
return s + "}";
}
}
// Program.java
import vozila.*;
public class Program {
public static void main(String[] varg) {
TVozilo tv = new TVozilo(new Osoba("Marko",70),500,1500);
PVozilo pv = new PVozilo(new Osoba("Petar",65),350,4);
try {
tv.utovari(500).istovar(300);
Osoba milena = new Osoba("Milena", 58),
ivana = new Osoba("Ivana", 55),
bojana = new Osoba("Bojana", 62),
sanja = new Osoba("Sanja", 65);
pv.ulazi(milena).ulazi(ivana).ulazi(bojana)
.izlazi(ivana).izlazi(sanja);
} catch (Exception g) {
System.out.println(g);
}
System.out.println(tv);
System.out.println(pv);
}
}
*** Nema tog putnika!
T[Marko(70.0),500.0](200.0/1500.0) - 770.0
P[Petar(65.0),350.0]{Milena(58.0)|Bojana(62.0)} - 535.0
(садржај)
Copyright © 2012, Laslo Kraus
Последња ревизија: 25.1.2012.