Ласло Краус |
СИ2ОО2 Први колоквијум 19. 3. 2014. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Шта су иницијализациони блокови, које врсте постоје и када се извршавају?
б) Да ли имена типова у два потпакета истог пакета могу бити једнака и зашто?
в) У којим контекстима се користи кључна реч super и шта означава у сваком од случајева?
Саставити на језику Java следећи пакет класа:
[
идент]
.
[
ознака_посла,назив_позоришта]
.
G
, R
и K
, респективно).
(10 поена) Написати на језику Java програм који направи једно позориште и репертоар за њега, на позоришни репертоар дода представу са једним костимографом и једним глумцем и представу са једним костимографом и три глумца, и испише позоришни репертоар. Користити константне параметре (не треба ништа учитавати).
// 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]
Copyright © 2014, Laslo Kraus
Последња ревизија: 25.4.2014.