Untitled
unknown
plain_text
a year ago
3.6 kB
2
Indexable
Never
import java.util.ArrayList; import java.util.List; abstract class Vozilo { protected int brojTockova; protected float duzina; protected int zapreminaMotora; protected int trenutnaBrzina; protected int maxBrzina; public Vozilo() { this.trenutnaBrzina = 0; } public abstract void gas(); public String toString() { return "Broj tockova: " + brojTockova + ", Duzina: " + duzina + "m, Zapremina motora: " + zapreminaMotora + "cm^3, Trenutna brzina: " + trenutnaBrzina + "km/h, Max brzina: " + maxBrzina + "km/h"; } } interface PutnickoVozilo { int brojSedista(); } interface TeretnoVozilo { float zapremina(); } class Automobil extends Vozilo implements PutnickoVozilo { public Automobil() { this.brojTockova = 4; } public int brojSedista() { return 5; } public void gas() { if (zapreminaMotora < 2000) trenutnaBrzina += 10; else trenutnaBrzina += 20; if (trenutnaBrzina > maxBrzina) trenutnaBrzina = maxBrzina; } } class Autobus extends Vozilo implements PutnickoVozilo { public Autobus() { this.brojTockova = 6; } public int brojSedista() { if (duzina < 10) return 20; else return 40; } public void gas() { if (zapreminaMotora < 3000) trenutnaBrzina += 5; else trenutnaBrzina += 10; if (trenutnaBrzina > maxBrzina) trenutnaBrzina = maxBrzina; } } class Kamion extends Vozilo implements TeretnoVozilo { public Kamion(int brojTockova, float duzina, int zapreminaMotora, int trenutnaBrzina, int maxBrzina) { this.brojTockova = Math.min(Math.max(brojTockova, 8), 12); this.duzina = Math.max(Math.min(duzina, 14), 4); this.zapreminaMotora = Math.min(Math.max(zapreminaMotora, 4000), 8000); this.trenutnaBrzina = trenutnaBrzina; this.maxBrzina = Math.min(maxBrzina, 150); } public float zapremina() { if (duzina < 10) return 4.0f; else return 7.0f; } public void gas() { if (zapreminaMotora < 6000) trenutnaBrzina += 5; else trenutnaBrzina += 15; if (trenutnaBrzina > maxBrzina) trenutnaBrzina = maxBrzina; } } class Program { public static void main(String[] args) { List<Vozilo> vozila = new ArrayList<>(); vozila.add(new Automobil()); vozila.add(new Autobus()); vozila.add(new Kamion(10, 12.5f, 5500, 0, 120)); for (Vozilo vozilo : vozila) { int brojPritisaka = (int) (Math.random() * 5) + 1; for (int i = 0; i < brojPritisaka; i++) { vozilo.gas(); } } for (Vozilo vozilo : vozila) { System.out.println(vozilo.toString() + ", Broj sedista: " + getBrojSedista(vozilo) + ", Zapremina: " + getZapremina(vozilo)); } } public static int getBrojSedista(Vozilo vozilo) { if (vozilo instanceof PutnickoVozilo) { PutnickoVozilo putnickoVozilo = (PutnickoVozilo) vozilo; return putnickoVozilo.brojSedista(); } return 0; } public static float getZapremina(Vozilo vozilo) { if (vozilo instanceof TeretnoVozilo) { TeretnoVozilo teretnoVozilo = (TeretnoVozilo) vozilo; return teretnoVozilo.zapremina(); } return 0.0f; } }