Ласло Краус |
СИ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.