Elektrotehnicki fakultet, Beograd  ����� ����� ��2��2
K��������
24. 4. 2010.

������: ���� �������, ���� ����������� �����

������: 1 2 | �������e | �����: 2

�������� ������� 1 (30 �����) ( | �������)

���������� �������� (�� ����� ��� ��� ��������) � �������� �� ������ ���a��:

�) ��� �� ������ (bytecode) � �� ��� ����� �� ������� ������ �������������?

�) ��� �� ��������� ������� � ���� ����� �� �� ���� �������� ������ ����� ����� �������?

�) �� �� �������� ���� ����� ����������� � �����?

�������� ������� 2 (ukupno 70 �����) ( ����� | �������)

�������� �� ������ Java ������ ����� ������ (������ ���������� ��������� ��������� ���������� ������):

(5 �����) �������� �� ������ Java ������� (����� � ������� ��������) ��� ������� ����� ����� �������� �� ��� ������� � ������ ������ �� ��� �������, ������� ������, �������� �� �� �������� ���������� ��������� ���������� ������ � ������ ������ �� ������� ������ ��������. ��������� ���������� ��������� (�� ����� ����� ���������).


�������e ( �������)


����� ������� 2 ( �������� | �������)

// Vrednostan.java

package prevoz;

public interface Vrednostan { double vrednost(); }

// Merljiv.java package prevoz; public interface Merljiv { double tezina(); }
// Roba.java package prevoz; public abstract class Roba implements Vrednostan, Merljiv, Cloneable { public Roba clone () { try { return (Roba)super.clone(); } catch (CloneNotSupportedException g) { return null; } } }
// Artikal.java package prevoz; public class Artikal extends Roba { private String naziv; private double vrednost, tezina; public Artikal( String n, double v, double t) { naziv = n; vrednost = v; tezina = t; } public double vrednost() { return vrednost; } public double tezina() { return tezina; } public String toString () { return naziv + "(" + vrednost + "," + tezina + ")"; } }
// GPun.java package prevoz; public class GPun extends Exception { public String toString () { return "*** Paket je pun!"; } }
// Paket.java package prevoz; public class Paket extends Roba { private Roba[] robe; private int n; public Paket( int kap) { robe = new Roba [kap]; } public Paket dodaj (Roba r) throws GPun { if (n == robe.length) throw new GPun(); robe[n++] = r; return this; } public double vrednost() { double v = 0; for (int i=0; i<n; v+=robe[i++].vrednost()); return v; } public double tezina() { double t = 0; for (int i=0; i<n; t+=robe[i++].tezina()); return t; } public Paket clone() { Paket p = (Paket)super.clone(); p.robe = robe.clone(); for (int i=0; i<n; i++) robe[i] = p.robe[i].clone(); return p; } public String toString () { String s = "["; for (int i=0; i<n; i++) { if (i > 0) s += ","; s += robe[i]; } return s + "]"; } }
// GTeret.java package prevoz; public class GTeret extends Exception { public String toString() { return "*** Previse tereta!"; } }
// Kamion.java package prevoz; public class Kamion implements Merljiv { private double sopTezina, nosivost, teret; Elem prvi, posl; private class Elem { Paket pak; Elem sled; Elem( Paket p) { pak = p; sled = null; if (prvi==null) prvi=this; else posl.sled=this; posl = this; } } public Kamion( double sT, double n) { sopTezina = sT; nosivost = n; } public Kamion dodaj( Paket p) throws GTeret { if (teret+p.tezina() > nosivost) throw new GTeret(); new Elem( p); teret += p.tezina(); return this; } public double tezina() { return sopTezina + teret; } public double vrednost() { double v = 0; for (Elem tek=prvi; tek!=null; tek=tek.sled) v += tek.pak.vrednost(); return v; } public String toString() { String s = "Kamion(" + nosivost + "," + sopTezina + "," + tezina() + "," + vrednost() + )"; for (Elem tek=prvi; tek!=null; tek=tek.sled) s += "\n" + tek.pak; return s; } }
// Program.java import prevoz.*; public class Program { public static void main(String[] vpar) { try { Paket p = new Paket( 5); p.dodaj( new Artikal( "cigla", 100, 2)) .dodaj( new Paket(2) .dodaj(new Artikal("solja",200, 0.2)) .dodaj(new Artikal("tanjir",500, 0.4))) .dodaj( new Artikal( "cekic", 350, 0.6)); Kamion k = new Kamion( 800, 2500); k.dodaj( p) .dodaj( p.clone()) .dodaj( p.clone()) .dodaj( p.clone()); System.out.println(k); } catch (Exception g) { System.out.println( g); } } }
Kamion(2500.0,800.0,812.8,4600.0) [cigla(100.0,2.0),[solja(200.0,0.2),tanjir(500.0,0.4)],cekic(350.0,0.6)] [cigla(100.0,2.0),[solja(200.0,0.2),tanjir(500.0,0.4)],cekic(350.0,0.6)] [cigla(100.0,2.0),[solja(200.0,0.2),tanjir(500.0,0.4)],cekic(350.0,0.6)] [cigla(100.0,2.0),[solja(200.0,0.2),tanjir(500.0,0.4)],cekic(350.0,0.6)]
( �������)
         
�����: ����� �����
�-�����: kraus@etf.rs

Copyright © 2011, Laslo Kraus
������� �������: 9.4.2011.