gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Primeri za klase doterani i prilagodjeni za Svetovid-lib 0.4.0
[spa1-materijali.git] / kodovi / klase / RadniciPrimer.java
diff --git a/kodovi/klase/RadniciPrimer.java b/kodovi/klase/RadniciPrimer.java
new file mode 100644 (file)
index 0000000..545cc09
--- /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
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner