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

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

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

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

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

а) Шта је основа платформске независности програма писаних на језику Java? Како се она обезбеђује?

б) Која је основна разлика између начина креирања објеката на језицима C++ и Java?

в) Ако се у изведеној класи дефинише поље са истим именом као у основној и ако му се приступи преко референце која је типа основне класе, а указује на објекат изведене класе – којем пољу се приступа и зашто?

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

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

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


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


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

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

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