VISER, Beograd
Ласло Краус
Објекнто програмирање 2 - колоквијуми
Први колоквијум
26. 11. 2011

Задатак | Напомене | Решење

Поставка задатка (решење | садржај)

Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):

Написати на језику Java програм који:

Користити константне параметре (не треба ништа учитавати с главног улаза).


Напомене (садржај)


Решење задатка (поставка | садржај)

// 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
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 2012, Laslo Kraus
Последња ревизија: 25.1.2012.