Ласло Краус |
СИ2ОО2 Први колоквијум 4. 4. 2008. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Шта садрже *.class
фајлови и која је основна разлика између њих и бинарних извршних фајлова типа *.exe
?
б) Које врсте инициализационих блокова постоје и када се одговарајући блокови извршавају?
в) Шта означава модификатор final
за поља, односно методе, односно класе?
Саставити на језику Java следећи пакет класа:
/
плата".
(10 поена) Написати на језику Java програм који направи фирму с једним шефом и два продавца који су му потчињени, обави по једну продају са оба продавца и испише податке о фирми. Користити константне параметре (не треба ништа учитавати).
// Predmet.java package prodaja; public abstract class Radnik { private String ime; private double procenat; protected Radnik (String i, double p) { ime = i; procenat = p; } public abstract double prihod (); public double plata () { return prihod() * procenat / 100; } public String toString () { return ime + "/" + plata(); } } // Prodavac.java package prodaja; public class Prodavac extends Radnik { private double prihod; public Prodavac (String ime, double procenat) { super (ime, procenat); } public void prodao (double vrednost) { prihod += vrednost; } public double prihod () { return prihod; } } // Sef.java package prodaja; public class Sef extends Radnik { private Radnik[] potcinjeni; private int brPot = 0; public Sef (String ime, double procenat, int kap) { super (ime, procenat); potcinjeni = new Radnik [kap]; } public boolean dodeli (Radnik z) { if (brPot == potcinjeni.length) return false; potcinjeni[brPot++] = z; return true; } public double prihod () { double p = 0; for (int i=0; i<brPot; p+=potcinjeni[i++].prihod()); return p; } } // Frima.java package prodaja; public class Firma { private Radnik[] radnici; private double marza; public Firma (double m, int kap) { marza = m; radnici = new Radnik [kap]; } public boolean zaposli (Radnik r) { int i=0; while (i<radnici.length && radnici[i]!=null) i++; if (i == radnici.length) return false; radnici[i] = r; return true; } public boolean otpusti (int i) { if (i<0 || i>=radnici.length || radnici[i]==null) return false; radnici[i] = null; return true; } public double dobit () { double d = 0, p = 0; for (int i=0; i<radnici.length; i++) if (radnici[i] != null) { if (radnici[i] instanceof Prodavac) d += radnici[i].prihod(); p += radnici[i].plata(); } return d * marza / 100 - p; } public String toString () { String s = ""; for (int i=0; i<radnici.length; i++) if (radnici[i] != null) s += radnici[i] + "\n"; return s + "Dobit firme: " + dobit(); } } // Test.java import prodaja.*; public class Test { public static void main (String[] varg) { Firma firma = new Firma (30, 5); Sef nenad = new Sef ("Nenad", 6, 3); Prodavac marko = new Prodavac ("Marko", 5); Prodavac zoran = new Prodavac ("Zoran", 4); firma.zaposli (nenad); firma.zaposli (marko); firma.zaposli (zoran); nenad.dodeli (marko); nenad.dodeli (zoran); marko.prodao (5000); zoran.prodao (8000); System.out.print (firma); } }(⇒ почетак)
Nenad/780.0 Zoran/320.0 Marko/250.0 Dobit firme: 2550.0
Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.