Ласло Краус |
СИ2ОО2 Први колоквијум 20. 3. 2012. |
---|
Одговорити концизно (по једна или две реченице) и прецизно на следећа питaња:
а) Која је основнa разлика између низова у језицима Java и C++?
б) Ако су у следећим фајловима дефинисане класе A
и B
:
Fajl А.java: package p; public class A { private int x1; int x2; protected int x3; public int x4;} Fajl B.java: package p.pp; public class B{ int m() { p.A a=new p.A(); return ◊; } }да ли је дозвољено да уместо
◊
стоји: (1) a.x1
(2) a.x2
(3) a.x3
(4) a.x4
?
в) Када класу треба писати као final
?
Саставити на језику Java следећи пакет класа:
-
извођач:
трајање.
.
ид/
наслов/
издавач.
K
и има задат низ аутора (ниски). Може да се састави текстуални опис у облику ставка[
аутор1,
аутор2,…]
.
D
која садржи низ нумера задатог капацитета. Ствара се без нумера, које се накнадно додају појединачно. Повратна вредност при додавању је индикатор успеха. Може да се израчуна укупно трајање садржаних нумера и да се састави текстуални опис у облику ставка[
нумера1,
нумера2,…]:
трајање.
// Numera.java package kartoteka; public class Numera { private String naziv, izvodj; private int traje; public Numera(String naz, String izv, int t) { naziv = naz; izvodj = izv; traje = t; } public String naziv() { return naziv; } public String izvodj() { return izvodj; } public int traje() { return traje; } public String toString() { return naziv + "-" + izvodj + ":" + traje; } } // Stavka.java package kartoteka; public abstract class Stavka { private static int posId = 0; private int id = ++posId; private String naslov, izdavac; public Stavka(String nasl, String izdav) { naslov = nasl; izdavac = izdav; } public int id() { return id; } public String naslov() { return naslov; } public String izdavac() { return izdavac; } public abstract char vrsta(); public String toString() { return vrsta() + "." + id + "/" + naslov + "/" + izdavac; } } // Knjiga.java package kartoteka; public class Knjiga extends Stavka { private String[] autori; public Knjiga(String nasl, String izdav, String[] auti) { super(nasl, izdav); autori = auti; } public char vrsta() { return 'K'; } public String toString() { String s = super.toString() + "["; for (int i=0; i<autori.length; i++) { if (i > 0) s += ","; s += autori[i]; } return s += "]"; } } // Disk.java package kartoteka; public class Disk extends Stavka { private Numera[] numere; private int n = 0; public Disk(String nasl, String izdav, int kap) { super(nasl, izdav); numere = new Numera [kap]; } public char vrsta() { return 'D'; } public boolean dodaj(Numera num) { if (n == numere.length) return false; numere[n++] = num; return true; } public int trajanje() { int t = 0; for (int i=0; i<numere.length; i++) t += numere[i].traje(); return t; } public String toString() { String s = super.toString() + "["; for (int i=0; i<n; i++) { if (i > 0) s += ","; s += numere[i]; } return s + "]:" + trajanje(); } } // Kartoteka.java package kartoteka; public class Kartoteka { private static class Elem { Stavka stavka; Elem sled = null; Elem(Stavka s) { stavka = s; } } private Elem prvi = null, posl = null; public Kartoteka dodaj(Stavka s) { Elem novi = new Elem(s); if (prvi == null) prvi = novi; else posl.sled = novi; posl = novi; return this; } public int broj(char vrs) { int b = 0; for (Elem tek=prvi; tek!=null; tek=tek.sled) if (tek.stavka.vrsta() == vrs) b++; return b; } public Stavka[] stavke(char vrs) { Stavka[] niz = new Stavka [broj(vrs)]; int i = 0; for (Elem tek=prvi; tek!=null; tek=tek.sled) if (tek.stavka.vrsta() == vrs) niz[i++] = tek.stavka; return niz; } public String toString() { String s = ""; for (Elem tek=prvi; tek!=null; tek=tek.sled) s += tek.stavka + "\n"; return s; } } // Program.java import kartoteka.*; public class Program { public static void main(String[] vpar) { String[] autori = {"a1", "a2"}; Knjiga k = new Knjiga("Nasl1", "Izdav2", autori); Disk d = new Disk("NaslD", "IzdavD", 2); d.dodaj(new Numera("N1", "I1", 150)); d.dodaj(new Numera("N2", "I2", 180)); Kartoteka kart = new Kartoteka(); kart.dodaj(k).dodaj(d); System.out.print(kart); } }(⇒ почетак)
K.1/Nasl1/Izdav2[a1,a2] D.2/NaslD/IzdavD[N1-I1:150,N2-I2:180]:330
Copyright © 2012, Laslo Kraus
Последња ревизија: 29.4.2012.