Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10
1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig így nézzen ki: A Reset gomb indítsa újra a játékot: - új tipp generálása - mezők kiürítése - tippek száma = 0 15/2 Az üzleti logika kódja benne van az 1. gyakorlat anyagában!
2. Feladat: Számológépecske (Hatványozó gép) Csak szorozni tud, mindig az aktuális eredményt szorozza össze egy beírható számmal. Van Reset funkciója 15/3
Magyarázatok Programlogika: 1. Az eredmény szövegmezőnek 1 (egy) az alapértéke 2. Be kell írni a számot, amit szorozni akarunk (kezdetben 1-el) 3. A Szorzás gombot megnyomva a számot összeszorozzuk az Eredménnyel, és kiírjuk az értéket az Eredmény mezőbe 4. A Szorzás gombot megnyomva a Számot ismét megszorozzuk az Eredménnyel (vagyis most önmagával), így a szám négyzetét kapjuk. 5. Újabb szorzással a szám köbét kapjuk 6. A Reset funkció kiüríti a Szám mezőt, és beállítja az Eredményt alapértékre (1-re) Készítse el mindenki a grafikus felületet, és programozza le az üzleti logikát! 15/4
MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát a felhasználói felülettel kapcsolatos elgondolásoktól oly módon, hogy a fejlesztők minél könnyebben változtathassák meg az egyes részeket anélkül, hogy a többire hatással lennének. Az egyes részek feladata: Modell: képviseli az adatot és az üzleti logikát Nézet: a felhasználói felület elemei Vezérlő: biztosítja a nézet és a modell közötti kapcsolatot 15/5
MVC Vezérlő Modell Nézet 15/6
MVC alapú számológépecske 1. A grafikus felület vezérlői értelmezik a felhasználó parancsait 2. A parancsokat továbbítják a kontroller felé 3. A kontroller küldi az adatokat a modell felé, és utasítja azt az adatkezelésre 4. A modell a kiszámított adatokat visszaadja a kontrollernek 5. A kontroller utasítja a grafikus felületet az eredmények frissítésére 15/7
Számológépecske MVC A modell A modellbe kerül a teljes üzleti logika, és a modell fogja tárolni az aktuális számítási eredményt, és az inicializálás/reset értéket: - adattag: inicializálási érték - adattag: aktuális számítási érték - konstruktor - getérték, setérték metódusok - reset metódus - számítást (szorzást) elvégző metódus 15/8
Számológépecske MVC A modell kódja public class CalcModel { private static final int INIT_VALUE = 1; private int value; public CalcModel() { value = INIT_VALUE; public int getvalue(){ return value; public void setvalue(int x) { value = x; public void reset() { value = INIT_VALUE; 15/9 public void operation(int a, int b) { value = a*b;
Számológépecske MVC A vezérlő A vezérlőbe kerülnek a kiolvasás, ellenőrzés, átalakítás, és a kommunikáció (M-V-C) műveletei: - szövegmező tartalom beolvasó metódus - szövegmező tartalom ellenőrző metódus - a modell számító metódusát hívó metódus - a modell számítási eredményét a GUI-ra kiíró metódus - Reset lebonyolító metódus - Üzeneteket megjelenítő metódus - String egésszé konvertálhatóságát ellenőrző metódus - Stringet egésszé konvertáló metódus - Lesz benne egy deklarált Modell példány! 15/10
Számológépecske MVC A vezérlő kódja import javax.swing.*; public class CalcController { private static String clm = "Calc program message"; private CalcModel cm = new CalcModel(); 15/11 public boolean textfieldchecker(jtextfield jtf){ String s = readjtf(jtf); if (s.length() == 0) { showmd("nincs beírva adat!", 0); return false; else if (goodint(s)) return true; else { showmd("a beírt adat nem alakítható egész számmá!", 0); return false; public String readjtf(jtextfield a) { return a.gettext().tostring();
Számológépecske MVC A vezérlő kódja public void calc(jtextfield a, JTextField b) { int av = StoI(readJTF(a)); int bv = StoI(readJTF(b)); cm.operation(av, bv); int x = cm.getvalue(); b.settext(integer.tostring(x)); public void reset(jtextfield a, JTextField b) { cm.reset(); a.settext(""); int x = cm.getvalue(); b.settext(integer.tostring(x)); AController teremt kapcsolatot a View és a Modell között. 15/12
Számológépecske MVC A vezérlő kódja public boolean goodint(string s) { int x; try { x = Integer.parseInt(s); return true; catch (NumberFormatException e) {return false; public int StoI(String s){ return Integer.parseInt(s); public void showmd(string s, int i){ JOptionPane.showMessageDialog(null, s, clm, i); 15/13
Számológépecske MVC A View kódja (részlet) public class CalcMVC extends JFrame { private CalcController cc = new CalcController(); ba.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { if (cc.textfieldchecker(adat)) cc.calc(adat, eredmeny); ); br.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { cc.reset(adat, eredmeny); ); A View-ból nem látszik a Modell, minden művelet a Controller-en keresztül történik. 15/14
VÉGE VÉGE 15/15