Ласло Краус |
СИ2ОО2 Први колоквијум 25. 3. 2010. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Шта је основа платформске независности програма писаних на језику Java? Како се она обезбеђује?
б) Која је основна разлика између начина креирања објеката на језицима C++ и Java?
в) Ако се у изведеној класи дефинише поље са истим именом као у основној и ако му се приступи преко референце која је типа основне класе, а указује на објекат изведене класе – којем пољу се приступа и зашто?
Саставити на језику Java следећи пакет класа:
(
тежина)
.
paket
".
String
и може да буде натоварен задатим бројем товара до задате укупне тежине (носивости). Ствара се празан. Може да се стави неки товар на задато празно место, да се скине товар са задатог непразног места и да се састави текстуални опис камиона. Повратна вредност при стављању је индикатор успеха. Неуспех при скидању се означава повратном вредношћу null
. Први ред текстуалног описа камиона је облика регБрој(
терет/
носивост)
иза чега следе, ред по ред, текстуални описи садржаних товара.
(5 поена) Написати на језику Java програм (класу с главном функцијом) који направи један камион, натовари неколико товара (међу којима постоји бар један предмет и бар један пакет) на камион и испише камион на главном излазу. Користити константне параметре (не треба ништа учитавати с главног улаза).
// Tovar.java package prevoz; public abstract class Tovar { public abstract String vrsta(); public abstract double tezina(); public String toString () { return vrsta() + "(" + tezina() + ")"; } } // Predmet.java package prevoz; public class Predmet extends Tovar { private String vrsta; private double tezina; public Predmet( String vrs, double tez) { vrsta = vrs; tezina = tez; } public double tezina() { return tezina; } public String vrsta() { return vrsta; } } // Paket.java package prevoz; class Elem { Tovar tov; Elem sled; Elem( Tovar t) { tov = t; } } public class Paket extends Tovar { private Elem prvi, posl; public Paket dodaj( Tovar t) { Elem novi = new Elem( t); if (prvi == null) prvi = novi; else posl.sled = novi; posl = novi; return this; } public double tezina() { double t = 0; for (Elem tek=prvi; tek!=null; tek=tek.sled) t+=tek.tov.tezina(); return t; } public String vrsta() { return "paket"; } } // Kamion.java package prevoz; public class Kamion { private String regBr; private Tovar[] tov; private double nosivost, teret; public Kamion( String rBr, int kap, double nos) { regBr = rBr; tov = new Tovar [kap]; nosivost = nos; } public boolean stavi( int poz, Tovar t) { if (poz<0 || poz>=tov.length || tov[poz]!=null || teret+t.tezina()>nosivost) return false; tov[poz] = t; teret += t.tezina(); return true; } public Tovar skini( int poz) { if (poz<0 || poz>=tov.length || tov[poz]==null) return null; Tovar t = tov[poz]; tov[poz] = null; teret -= t.tezina(); return t; } public String toString() { String s = regBr + "(" + teret + "/" + nosivost + ")"; for (Tovar t: tov) if (t != null) s += ( "\n " + t); return s; } } // Program.java import prevoz.*; public class Program { public static void main(String[] args) { Kamion kam = new Kamion( "BG 123-4567", 10, 5000); kam.stavi(3, new Predmet("secer",500)); kam.stavi(8, new Paket() .dodaj(new Predmet("radio",3)) .dodaj(new Predmet("tv",10)) ); kam.stavi(15, new Predmet("brasno",300)); System.out.println(kam); } }(⇒ почетак)
BG 123-4567(513.0/5000.0) secer(500.0) paket(13.0)
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.