210 likes | 400 Views
Programski jezici. proleće/leto 2009. Nabrojivi tipovi. Primer: predstaviti četiri godišnja doba proleće, leto, jesen i zimu? Kodiranje 1,2,3,4 ili posebna klasa za četiri godišnja doba? Nabolje rešenje: nabrojivi tip (engl. enumerated type, enum):
E N D
Programski jezici proleće/leto 2009
Nabrojivi tipovi Primer: predstaviti četiri godišnja doba proleće, leto, jesen i zimu? Kodiranje 1,2,3,4 ili posebna klasa za četiri godišnja doba? Nabolje rešenje: nabrojivi tip (engl. enumerated type, enum): enum GodišnjeDoba {PROLEĆE, LETO, JESEN, ZIMA} Tip GodišnjeDobakoji se sastoji od tačno četiri vrednosti PROLEĆE, LETO, JESEN, ZIMA Programski jezici
Nabrojivi tipovi Format: enumime-tipa {lista-konstanti} Po konvenciji (kao za obične konstante), konstante nabrojivog tipa se pišu velikim slovima i sa _ Definicija nabrojivog tipa ne može stajati unutar metoda, već mora biti ugnježđena unutar neke klase ili biti u posebnom fajlu Programski jezici
Nabrojivi tipovi Nabrojivi tip je, tehnički, specijalna klasa koja ima tačno onoliki broj objekata koliki je broj konstanti u definiciji (ne mogu se konstruisati novi) Nabrojivi tip je novi tip u programu u može se koristiti svuda gde se mogu koristiti uobičajeni tipovi (definicija promenljive, tip parametra i tip rezultata metoda) Programski jezici
Nabrojivi tipovi Primer korišćenja: enum GodišnjeDoba {PROLEĆE, LETO, JESEN, ZIMA} ... GodišnjeDoba modnaSezona; ... modnaSezona = GodišnjeDoba.ZIMA; ... if (modnaSezona == GodišnjeDoba.LETO) System.out.println("Krpice za leto."); else System.out.println(modnaSezona); Programski jezici
Nabrojivi tipovi Nabrojivi tip jeklasa koja se ne može istancirati Konstante nabrojivog tipa su zapravo public final static polja klase Ova polja sadrže reference na odgovarajuće vrednosti (objekte) nabrojivog tipa Nabrojivi tip može imati dodatne članove (polja, metode, konstruktore), koji se navode iza liste konstanti Programski jezici
Nabrojivi tipovi public enum GodišnjeDoba { PROLEĆE('P'), LETO('L'), JESEN('J'), ZIMA('Z'); private char skraćenica; // polje // Konstruktor private GodišnjeDoba(char skraćenica) { this.skraćenica = skraćenica; } public char getSkraćenica() { // geter metod return skraćenica; } } Programski jezici
Nabrojivi tipovi Svi nabrojivi tipovi nasleđuju klasu Enum Mogu koristiti nasleđene metode: toString() – string reprezentacija konstanti values() – niz vrednosti ordinal() – redni broj vrednosti ... Programski jezici
Nabrojivi tipovi Primer korišćenja: public enum Dan {PONEDELJAK, UTORAK, SREDA, ČETVRTAK, PETAK, SUBOTA, NEDELJA}; ... for (Dan d : Dan.values()) { System.out.print(d); System.out.print(" je dan pod rednim brojem "); System.out.println(d.ordinal()); } Programski jezici
Grafičko programiranje Grafički programi Koriste grafičke mogućnosti: boje, fontove, geometrijske oblike, slike, ... Komuniciraju sa korisnikom preko grafičkog korisničkog interfejsa koji se sastoji od grafičkih komponenti: prozor, meni, dugme, oznaka, tekstualno polje, ... Programski jezici
Grafičko programiranje Programiranje grafičkih programa se razlikuje od programiranja konzolnih programa, jer je način njihovog izvršavanja različit Grafički program se ne izvršavasinhrono (od početka do kraja, jedna naredba iza druge), već asinhrono Grafički program se sastoji od naredbi koje se izvršavaju kao reakcija na korisnikove aktivnosti nad komponentama grafičkog interfejsa programa Programski jezici
Grafičko programiranje Klasični pristup: programski se određuje kada korisnik unosi ulazne podatke i kada dobija izlazne podatke Grafički pristup: korisnik određuje kada unosi ulazne podatke i kada dobija izlazne podatke (izbor iz menija, klik na dugme, ...) Korisnikove aktivnosti sa fizičkim uređajima miša i tastature nad grafičkim elementima programa su drugi oblik ulaznih podataka (događaji) Programski jezici
Grafičko programiranje Programiranje grafičkih programa je programiranje vođeno događajima (engl. event-driven programming) Grafički program dobija događaje kao ulaz Deo grafičkog programa koji reaguje na određeni događaj se naziva rukovalac događaja (engl. event listener, event handler) Programski jezici
Grafičko programiranje Windows grafički programi koriste nezavisne resurse (kontrole) za definisanje izgleda korisničkog interfejsa Java grafički programi svoj korisnički interfejs grade integrisano sa ostalim naredbama Java grafički programi koriste klase iz dve standardne biblioteke za rad sa grafičkim komponentama Programski jezici
Grafičko programiranje Biblioteka AWT (Abstract Window Toolkit) do Java verzije 1.1 u paketu java.awt Biblioteka Swing od Java verzije 1.2 u paketu javax.swing AWT/Swing okruženje je deo JFC (Java Foundation Classes) na kome se bazira grafičko programiranje u Javi Programski jezici
Grafičko programiranje Biblioteka AWT podržava minimalni skup komponenti grafičkog interfejsa koje poseduju sve platforme koje podržavaju Javu Oslanja se na odgovarajući operativni sistem Izgleda “podjednako osrednje” na svim platformama Klase u paketima java.awt.* Programski jezici
Grafičko programiranje Biblioteka Swing je napisana “od nule” Obezbeđuje veći broj složenijih grafičkih komponenti od biblioteke AWT Ne oslanja se na operativni sistem Jednako izgleda i radi na svim platformama Klase u paketima javax.swing.* Nazivi klasa počinju sa Jxxx Programski jezici
Grafičko programiranje Primer: klasa JOptionPane za grafičke dijaloge Dva statička metoda: showInputDialog(...) showMessageDialog(...) 4 parametra: prozor kome pripada dijalog, poruka koja se prikazuje, naslov dijaloga, vrsta dijaloga Programski jezici Dejan Živković 18
Grafičko programiranje Tri okvira za dijalog grafičkog programa Zdravo: Programski jezici Dejan Živković 19
Grafičko programiranje public class ZdravoGUI { public static void main(String[] args) { String ime = JOptionPane.showInputDialog( null, "Kako se zovete?", "Grafički ulaz", JOptionPane.QUESTION_MESSAGE); String godine = JOptionPane.showInputDialog( null, "Koliko imate godina?", "Grafički ulaz", JOptionPane.QUESTION_MESSAGE); int god = Integer.parseInt(godine); Programski jezici Dejan Živković 20
Grafičko programiranje String poruka = "Zdravo " + ime + "!\n"; poruka += god + " su najlepše godine."; JOptionPane.showMessageDialog( null, poruka, "Grafički izlaz", JOptionPane.INFORMATION_MESSAGE); System.exit(0); } } Programski jezici Dejan Živković 21