gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/kodovi/klase/RadniciPrimer.java b/kodovi/klase/RadniciPrimer.java
--- /dev/null
@@ -0,0 +1,109 @@
+/**
+ * Program koji radi sa spiskom radnika, predstavljenim kao niz Objekata tipa
+ * Radnik. Klasa Radnika je definisana u klasi ispod. U programu ne znamo koliko
+ * ima radnika u fajlu, pa predpostavljamo da nece biti vise od 100.
+ */
+public class RadniciPrimer {
+ final static int MAX_RADNIKA = 100;
+
+ static Radnik[] spisak = null;
+ // brojac predstavlja koliko radnika zapravo ima u nizu
+ static int brojac = 0;
+
+ /**
+ * Ucitava radnike iz datog fajla. Niz radnika ce nakon ovog metoda sadrzati
+ * sve podatke iz fajla i samo njih, tj ako je nesto postojalo u nizu pre,
+ * bice zanemareno.
+ */
+ public static void ucitajRadnike(String imef) {
+ // novi niz radnika
+ spisak = new Radnik[MAX_RADNIKA];
+ // resetujemo brojac
+ brojac = 0;
+
+ // citamo iz fajla dokle god ima jos redova i dok ne premasimo
+ // kapacitet naseg niza
+ while (Svetovid.in(imef).hasMore() && brojac < MAX_RADNIKA) {
+ int id = Svetovid.in(imef).readInt();
+ String prezime = Svetovid.in(imef).readToken();
+ String ime = Svetovid.in(imef).readToken();
+ int kanc = Svetovid.in(imef).readInt();
+
+ spisak[brojac] = new Radnik(id, prezime, ime, kanc);
+ brojac++;
+ }
+
+ // ako ima jos redova, znaci da smo prestali zbog punog niza
+ if (Svetovid.in(imef).hasMore()) {
+ Svetovid.err.println("Previse radnika u fajlu! Ucitano prvih "
+ + MAX_RADNIKA);
+ }
+
+ // zatvaramo fajl jer smo ga celog procitali
+ // i oslobodjamo resurs
+ Svetovid.in(imef).close();
+ }
+
+ public static void sviUKancelariji(int kanc) {
+ for (int i = 0; i < brojac; i++) {
+ if (spisak[i].kancelarija == kanc) {
+ Svetovid.out.println(spisak[i]);
+ }
+ }
+ }
+
+ public static void main(String[] args) {
+ ucitajRadnike("radnici.txt");
+ sviUKancelariji(1);
+ }
+}
+
+/**
+ * Radnik predstavljen prezimenom, imenom, svojim id-om i brojem kancelarije u
+ * kojoj je. Ima dodatne metode koji izdvajaju neke od informacija vezane za
+ * radnika.
+ */
+class Radnik {
+ String prezime, ime;
+ int id;
+ int kancelarija;
+
+ // Konstruktor klase - neophodno je proslediti sve podatke odjednom da se
+ // napravi instanca
+ public Radnik(int id, String prezime, String ime, int kancelarija) {
+ this.id = id;
+ this.prezime = prezime;
+ this.ime = ime;
+ this.kancelarija = kancelarija;
+ }
+
+ public String prezimeIme() {
+ return prezime + " " + ime;
+ }
+
+ public String inicijali() {
+ String p = "";
+ if (prezime != null && !prezime.isEmpty()) {
+ p = prezime.charAt(0) + ".";
+ }
+ String i = "";
+ if (ime != null && !ime.isEmpty()) {
+ i = ime.charAt(0) + ".";
+ }
+ return i + p;
+ }
+
+ public String sviPodaci() {
+ return "Radnik " + id + ":" + prezime + " " + ime + ", kancelarija:"
+ + kancelarija;
+ }
+
+ /*
+ * toString metod se koristi kad je potrebno predstaviti instancu kao
+ * String, tipicno pri pozivu ispisa na ekran. Ocekuje se da da kratku
+ * informaciju koja je razumljiva coveku.
+ */
+ public String toString() {
+ return prezime + " " + ime;
+ }
+}
\ No newline at end of file