gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
dodati primeri programa za rad sa klasama sa teorijskih vezbi
[spa1-materijali.git] / kodovi / klase / Radnici.java
diff --git a/kodovi/klase/Radnici.java b/kodovi/klase/Radnici.java
new file mode 100644 (file)
index 0000000..e04b541
--- /dev/null
@@ -0,0 +1,101 @@
+/**
+ * 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 Radnici {
+  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).isEmpty() && brojac < MAX_RADNIKA) {
+      int id = Svetovid.in(imef).readInt();
+      String prezime = Svetovid.in(imef).readString();
+      String ime = Svetovid.in(imef).readString();
+      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).isEmpty()){
+      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