Ласло Краус |
СИ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.