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

Аутори: Игор Тартаља, Катарина Миленковић и Ласло Краус

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

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

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

а) Шта су иницијализациони блокови, које врсте постоје и када се извршавају?

б) Да ли имена типова у два потпакета истог пакета могу бити једнака и зашто?

в) У којим контекстима се користи кључна реч super и шта означава у сваком од случајева?

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

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

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


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


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

// Pozoriste.java

package pozoriste;

public class Pozoriste {
  private static int pozId = 0;
  private int id = ++pozId;
  private String naziv;

  public Pozoriste(String naz) {naziv = naz;}
  public int id() { return id; }
  public String naziv() { return naziv; }
  public String toString() { return naziv + "[" + id + "]"; };
}

// Zaposleni.java

package pozoriste;

public abstract class Zaposleni {
  private String ime; private Pozoriste poz;

  public Zaposleni(String i, Pozoriste p) { ime = i; poz = p; }
  public String ime() { return ime; }
  public Pozoriste pozoriste() { return poz; }
  public abstract char vrsta();
  public String toString() { return ime + "[" + vrsta()+ "," + poz.naziv() + "]"; }
}

// Glumac.java

package pozoriste;

public class Glumac extends Zaposleni {
  public Glumac(String i, Pozoriste poz) { super(i, poz); }
  public char vrsta(){return 'G';}
}

// Reditelj.java

package pozoriste;

public class Reditelj extends Zaposleni {
  public Reditelj(String i, Pozoriste poz) { super (i, poz); }
  public char vrsta(){return 'R';}
}

// Kostimograf.java
package pozoriste;

public class Kostimograf extends Zaposleni {
  public Kostimograf(String i, Pozoriste poz) { super (i, poz); }
  public char vrsta(){return 'K';}
}

// Predstava.java

package pozoriste;

public class Predstava {
  private static class Elem {
    Zaposleni zaposleni; Elem sled = null;
    Elem(Zaposleni z) { zaposleni = z; }
  }

  private Elem prvi = null, posl = null;
  private String naziv;
  private Pozoriste poz;
  private int brKost = 0; 

  public Predstava(String naz, Pozoriste p, Reditelj red){
    if (red.pozoriste() != p) System.exit(1);
    naziv = naz; poz = p; 
    prvi = posl = new Elem(red);
  }

  public boolean dodaj(Zaposleni z) {
    if (z.pozoriste()!=poz || z.vrsta()=='R' || z.vrsta()=='K' && brKost==2) return false; 
    posl = posl.sled = new Elem(z);
    if (z.vrsta() == 'K') brKost++;
    return true; 
  }

  public String naziv() { return naziv; }

  public Pozoriste pozoriste() { return poz; }

  public String toString() {
    String s = "";
    s += naziv + "," + poz.naziv() + "\n";
    for (Elem tek=prvi; tek!=null; tek=tek.sled) s += tek.zaposleni + "\n";
    return s;
  }
}

// Repertoar.java

package pozoriste;

public class Repertoar {
  private static class Elem {
    Predstava predstava; Elem sled = null;
    Elem(Predstava p) { predstava = p; }
  }

  private Elem prvi = null, posl = null;
  private Pozoriste poz;

  public Repertoar(Pozoriste p) { poz = p; }

  public boolean dodaj(Predstava p) {
    if (p.pozoriste() != poz) return false;
    Elem novi = new Elem(p);
    if (prvi == null) prvi = novi; else posl.sled = novi;
    posl = novi;
    return true; 
  }

  public boolean ukloni(String naziv) {
    Elem tek = prvi, pret = null;
    while (tek!=null && !tek.predstava.naziv().equals(naziv)) { pret = tek; tek = tek.sled; }
    if (tek == null) return false;
    if (pret == null) prvi = tek.sled; else pret.sled = tek.sled;
    if (tek == posl) posl = pret; 
    return true; 
  }

  public String toString() {
    String s = "";
    for (Elem tek=prvi; tek!=null; tek=tek.sled) s += tek.predstava + "\n";
    return s;
  }
}

// Program.java

import pozoriste.*;

public class Program {
  public static void main(String[] argv) {
    Pozoriste p = new Pozoriste("Dusko Radovic");
    Repertoar r = new Repertoar (p);
    Predstava p1 = new Predstava("Princeza na zrnu graska", p, new Reditelj("Iva Milosevic", p));
    p1.dodaj(new Kostimograf("Maja Mirkovic", p));
    p1.dodaj(new Glumac("Jovo Maksic", p));
    Predstava p2 = new Predstava("Cudne ljubavi", p, new Reditelj("Djurdja Tesic", p));
    p2.dodaj(new Kostimograf("Zorana Petrov", p));
    p2.dodaj(new Glumac("Milos Samolov", p));
    p2.dodaj(new Glumac("Jelena Ilic", p));
    p2.dodaj(new Glumac("Sandra Rodic", p));
    r.dodaj(p1); r.dodaj(p2);
    System.out.print(r);
  }
}

Princeza na zrnu graska,Dusko Radovic Iva Milosevic[R,Dusko Radovic] Maja Mirkovic[K,Dusko Radovic] Jovo Maksic[G,Dusko Radovic] Cudne ljubavi,Dusko Radovic Djurdja Tesic[R,Dusko Radovic] Zorana Petrov[K,Dusko Radovic] Milos Samolov[G,Dusko Radovic] Jelena Ilic[G,Dusko Radovic] Sandra Rodic[G,Dusko Radovic]
( почетак)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

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