Ласло Краус |
ИР2ОО2 Први колоквијум 3. 5. 2007. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Који механизам у језику Java омогућава стварање динамичких копија објеката без позивања конструктора? Које услове треба да испуни класа која то омогућава?
б) Како све може изгледати декларација метода m()
класе која имплементира два интерфејса у којима су декларисане методе void
m()
throws
E1,E2
и void
m()
throws
E2,E3
?
в) На који начин се из метода унутрашње класе (inner class) може приступати члановима спољашње класе и зашто?
Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):
[
ид]
.
[
ид](
тежина,
енергетска_вредност)
. Грешка је ако збир процентуалних удела беланчевина, масти и угљених хидрата прелази 100%.
[
ид](
количина,
енергетска_вредност)
.
{
намирница,…,
намирница}[
ук_енергетска_вредност]
, где је намирница текстуални опис једне намернице у саставу менија. Грешка је ако се мени препуни.
(15 поена) Написати на језику Java програм (класу с главном функцијом) који направи један мени у који смести неколико намирница, а затим на главном излазу испише садржај формираног менија. Сви параметри треба да буду константе (не треба ништа учитавати).
// Energent.java package ishrana; public interface Energent { double energVr (); } // Namirnica.java package ishrana; public abstract class Namirnica implements Energent { private String ime; private static int ukId; private int id = ++ukId; protected Namirnica (String iime) { ime = iime; } public String ime () { return ime; } public int id () { return id; } public String toString () { return ime + "[" + id + "]"; } } // GPodaci.java package ishrana; public class GPodaci extends Exception { public String toString () { return "*** Neispravani podaci!"; } } // Hrana.java package ishrana; public class Hrana extends Namirnica { private double tez, belanc, masti, ugHidr; public Hrana (String ime, double t, double b, double m, double u) throws GPodaci { super (ime); if (b+m+u > 100) throw new GPodaci (); tez = t; belanc = b; masti = m; ugHidr = u; } public double belanc () { return tez * belanc / 100; } public double masti () { return tez * masti / 100; } public double ugHidr () { return tez * ugHidr / 100; } public double tezina () { return tez; } public double energVr () { return 16.7*belanc() + 37.6*masti() + 17.2*ugHidr(); } public String toString () { return super.toString() + "(" + tez + "," + energVr() + ")"; } } // Pice.java package ishrana; public class Pice extends Namirnica { private double kol, enVr; public Pice (String ime, double k, double e) { super (ime); kol = k; enVr = e; } public double kolicina () { return kol; } public double energVr () { return kol * enVr; } public String toString () { return super.toString() + "(" + kol + "," + enергVr)= + ")"; } } // GPun.java package ishrana; public class GPun extends Exception { public String toString () { return "*** Meni je pun!"; } } // Meni.java package ishrana; public class Meni { private Namirnica[] niz; private int brNam; public Meni (int kap) { niz = new Namirnica [kap]; } public Meni dodaj (Namirnica nam) throws GPun { if (brNam == niz.length) throw new GPun (); niz[brNam++] = nam; return this; } public double energVr () { double ev = 0; for (int i=0; i<brNam; ev+=niz[i++].energVr()); return ev; } public String toString () { String s = "{"; for (int i=0; i<brNam; i++) { if (i > 0) s += ","; s += niz[i]; } return s + "}[" + energVr() + "]"; } } // Test.java import ishrana.*; public class Test { public static void main (String[] varg) { try { Meni meni = new Meni (10); meni.dodaj (new Hrana("Hleb",600,7.5,0.4,49)) .dodaj (new Pice ("Sok", 0.2,18540)) .dodaj (new Hrana("Sir", 200,17,1.2,4)); System.out.println (meni); } catch (GPodaci g) { System.out.println (g); } catch (GPun g) { System.out.println (g); } } }(⇒ почетак)
{Hleb[1](600.0,5898.54),Sok[2](0.2,3078.0),Sir[3](200.0,795.64)}[10402.18]
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2008.