Ласло Краус |
СИ2ОО2 Први колоквијум 15. 3. 2011. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Када и којим редоследом се извршавају (1) статички (2) нестатички иницијализациони блокови?
б) На које начине се могу користити јавна имена из неког пакета у другом пакету? Навести примере за приступ имену X
, које је дефинисно у пакету P
, из неког другог пакета?
в) Да ли класа на језику Javа може бити апстрактна, ако ни једна њена метода није апстрактна и зашто?
Саставити на језику Java следећи пакет класа:
naziv.length()
+ 8 и да се састави текстуални опис у облику назив(
тип/
идБрој/
величина)
.
S
.
F
. Текстуални опис, поред општих података за све садржаје, у продужетку садржи текстуалне описе садржаних слика у филму унутар пара заграда []
раздвојених зарезима.
null
(индекс изван опсега или празно одабрано место). Може да се одреди укупна величина садржаја у галерији и да се састави текстуални опис галерије који се састоји од текстуалних описа садржаја, један садржај по реду.
(10 поена) Написати на језику Java програм (класу с главном функцијом) који направи једну галерију, ставља у њу неколико садржаја различитог типа и испише на главном излазу садржај галерије и њену укупну величину. Користити константне параметре (не треба ништа учитавати с главног улаза).
// Sadrzaj.java package galerija; public abstract class Sadrzaj { private static int posid = 0; private int id = ++posid; private String naziv; public Sadrzaj(String n) { naziv = n; } public int id() { return id; } public abstract char tip(); public int vel() { return naziv.length() + 8; } public String toString() { return naziv + "(" + tip() + "/" + id + "/" + vel() + ")"; } } // Slika.java package galerija; public class Slika extends Sadrzaj { private int sir, vis; public Slika(String n, int s, int v) { super(n); sir = s; vis = v; } public char tip() { return 'S'; } public int sir() { return sir; } public int vis() { return vis; } public int vel() { return super.vel() + 4*sir*vis + 32; } } // Film.java package galerija; public class Film extends Sadrzaj { private Slika[] niz; private int duz = 0; public Film(String n, int kap) { super(n); niz = new Slika [kap]; } public char tip() { return 'F'; } public boolean dodaj(Slika s) { if (duz==niz.length || duz!=0 && (niz[0].sir()!=s.sir() || niz[0].vis()!=s.vis())) return false; niz[duz++] = s; return true; } public int vel() { int v = super.vel() + 1024; for (int i = 0; i<duz; i++) v += niz[i].vel(); return v; } public String toString() { String s = super.toString() + "["; for (int i=0; i<duz; i++) { if (i>0) s += ","; s += niz[i]; } return s + "]"; } } // Galerija.java package galerija; public class Galerija { private Sadrzaj[] niz; public Galerija(int kap) { niz = new Sadrzaj [kap]; } public boolean stavi(Sadrzaj s, int i) { if (i<0 || i>=niz.length || niz[i]!=null) return false; niz[i] = s; return true; } public Sadrzaj uzmi(int i) { if (i<0 || i>=niz.length) return null; Sadrzaj s = niz[i]; niz[i] = null; return s; } public int vel() { int v = 0; for (int i=0; i<niz.length; i++) if (niz[i] != null) v += niz[i].vel(); return v; } public String toString() { String s = ""; for (int i=0; i<niz.length; i++) if (niz[i] != null) s += i + ": " + niz[i] + "\n"; return s; } } // Program.java import galerija.*; public class Program { public static void main(String[] args) { Galerija g = new Galerija(10); g.stavi(new Slika("Alfa",400,300), 6); Film f = new Film("Beta", 5); f.dodaj(new Slika("B1", 200, 150)); f.dodaj(new Slika("B2", 300, 150)); f.dodaj(new Slika("B3", 200, 150)); g.stavi(f, 3); g.stavi(new Slika("Gama",400,300), 6); g.stavi(new Slika("Delta",300,250), 8); System.out.println(g + "\n" + g.vel()); } }(⇒ почетак)
3: Beta(F/2/241120)[B1(S/3/120042),B3(S/5/120042)] 6: Alfa(S/1/480044) 8: Delta(S/7/300045) 1021209
Copyright © 2011, Laslo Kraus
Последња ревизија: 16.4.2011.