![]() Ласло Краус |
Програмирање на језику Java - колоквијуми Први колоквијум Друга група 1. 12. 2006 |
---|
Написати на језику Java следећи пакет типова:
K
, односно S
. Два производа су истоветна ако су исте врсте и ако имају исте димензије. Текстуални облик је vr(
d,
d,…,
d)
, где su: vr – ознака врсте производа и d – једна димензија производа.
Грешке пријављивати изузецима. У класама за изузетке предвидети састављање текста поруке.
Написати на језику Java интерактиван програм (са менијем) који читајући потребних података с главног улаза:
На располагању стоји готова класа Citaj
у безименом пакету која садржи заједничке методе за читање свих стандардних типова података (датотека \\Xs200-2\Nastava\ProgJava\Citaj.java
).
ispitx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.N:
(Nastava
on
\\Xs200-2
) у каталогу ObjektnoProg\RSx
(x
је број радне станице за којим се ради).// Uporediv.java package proizvodi; public interface Uporediv { boolean isti(Uporediv u); } // Proizvod.java package proizvodi; public abstract class Proizvod implements Uporediv { public abstract char vrsta(); public abstract double V(); public boolean isti(Uporediv p) { return vrsta() == ((Proizvod)p).vrsta(); } public String toString() { return Character.toString(vrsta()); } } // Kvadar.java package proizvodi; public class Kvadar extends Proizvod { double a, b, c; public Kvadar(double aa, double bb, double cc) { a = aa; b = bb; c = cc; } public char vrsta() { return 'K'; } public double V() { return a * b * c; } public boolean isti(Uporediv p) { return super.isti(p) && a==((Kvadar)p).a && b==((Kvadar)p).b && c==((Kvadar)p).c; } public String toString() { return super.toString() + '(' + a + ',' + b + ',' + c + ')'; } } // Sfera.java package proizvodi; public class Sfera extends Proizvod { double r; public Sfera(double rr) { r = rr; } public char vrsta() { return 'S'; } public double V() { return 4*r*r*r*Math.PI/3; } public boolean isti(Uporediv p) { return super.isti(p) && r==((Sfera)p).r; } public String toString() { return super.toString() + '(' + r + ')'; } } // GProizv.java package proizvodi; public abstract class GProizv extends Exception {} // GNemaMesta.java package proizvodi; public class GNemaMesta extends GProizv { public String toString() { return "*** Nema masta u skladistu!"; } } // GPuno.java package proizvodi; public class GPuno extends GProizv { public String toString() { return "*** Skladiste je puno!"; } } // GNemaProizv.java package proizvodi; public class GNemaProizv extends GProizv { public String toString() { return "*** Nema takvog proizvoda!"; } } // Skladiste.java package proizvodi; public class Skladiste { private Proizvod[] niz; private double V, Vmax; public Skladiste(int kap, double maxV) { niz = new Proizvod [kap]; Vmax = maxV; } public Skladiste() { this(10, 100); } public Skladiste stavi(Proizvod p) throws GNemaMesta, GPuno { double v = p.V(); if (V+v > Vmax) throw new GPuno(); int i = 0; while (i<niz.length && niz[i]!=null) i++; if (i == niz.length) throw new GNemaMesta(); V += v; niz[i] = p; return this; } public Proizvod uzmi(Proizvod p) throws GNemaProizv { int i = 0; while (i<niz.length && (niz[i]==null || !niz[i].isti(p))) i++; if (i == niz.length) throw new GNemaProizv(); Proizvod q = niz[i]; niz[i] = null; V -= q.V(); return q; } public String toString() { StringBuffer s = new StringBuffer(); for (int i=0; i<niz.length; i++) if (niz[i] != null) s.append(i+1).append(": ").append(niz[i]).append('\n'); return s.toString(); } } // ProizvodiT.java import proizvodi.*; public class ProizvodiT { private static class GIzbor extends GProizv { public String toString() { return "*** Nedozvoljen izbor!"; } } private static Proizvod citaj() throws GIzbor { System.out.print("(Kvadar, Sfera)? "); switch (Citaj.Char()) { case 'k': { System.out.print("a,b,c? "); return new Kvadar (Citaj.Double(),Citaj.Double(),Citaj.Double()); } case 's': { System.out.print("r? "); return new Sfera (Citaj.Double()); } default: throw new GIzbor(); } } public static void main(String[] varg) { Skladiste sklad = new Skladiste(5, 100); radi: while (true) { try { System.out.print("(Stavi, Izvadi, Pisi, Kraj)? "); switch (Citaj.Char()) { case 's': sklad.stavi(citaj()); break; case 'i': sklad.uzmi(citaj()); break; case 'p': System.out.print(sklad); break; case 'k': break radi; default: throw new GIzbor(); } } catch (GProizv g) {System.out.println(g);} } } }(садржај)
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.