Elektrotehnicki fakultet, Beograd  Ласло Краус СИ2ОО2
Први колоквијум
4. 4. 2008.

Аутори: Игор Тартаља и Ласло Краус

Задаци: 1 2 | Напоменe | Решења: 2

Поставка задатка 1 (30 поена) ( решење | почетак)

Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:

а) Шта садрже *.class фајлови и која је основна разлика између њих и бинарних извршних фајлова типа *.exe?

б) Које врсте инициализационих блокова постоје и када се одговарајући блокови извршавају?

в) Шта означава модификатор final за поља, односно методе, односно класе?

Поставка задатка 2 (укупно 70 поена) ( почетак)

Саставити на језику Java следећи пакет класа:

(10 поена) Написати на језику Java програм који направи фирму с једним шефом и два продавца који су му потчињени, обави по једну продају са оба продавца и испише податке о фирми. Користити константне параметре (не треба ништа учитавати).


Напоменe ( почетак)


Решење задатка 2 ( поставка | почетак)

// 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
( почетак)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 2010, Laslo Kraus
Последња ревизија: 30.8.2010.