Java Programozás 11. Ea: MVC modell

Hasonló dokumentumok
Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java Programozás 3. Gy: Java GUI. Swing, AWT

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Programozási technológia

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Programozási technológia

OOP: Java 8.Gy: Gyakorlás

Swing GUI készítése NetBeans IDE segítségével

Swing. (A javax.swing csomag)

Szoftvertechnológia alapjai Java előadások

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java felhasználói felület

ZH mintapélda. Feladat. Felület

Java és web programozás

Java Programozás 2. Gy: EmpProgram. Grafikus felületű adatkezelő program

4. Gy: JAVA osztályok

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Segédanyag: Java alkalmazások gyakorlat

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Java programozási nyelv 6. rész Java a gyakorlatban

7. K: JAVA alapok Konzultáció

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

OOP: Java 4.Gy: Java osztályok

OOP: Java 1.Gy: Java alapok

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

JavaServer Pages (JSP) (folytatás)

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Programozási nyelvek Java

BME MOGI Gépészeti informatika 4.

Java és web programozás

Programozás I. Első ZH segédlet

Java programozási nyelv 4. rész Osztályok II.

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Szoftvertechnológia alapjai Java előadások

Model View Controller alapú alkalmazásfejlesztés

Szoftvertechnolo gia gyakorlat

Java felhasználói felület

Java és web programozás

Concurrency in Swing

Osztályok. 4. gyakorlat

I. 288.: Utcai WiFi térkép

Access adatbázis elérése OLE DB-n keresztül

Objektumorientált programozás C# nyelven III.

BME MOGI Gépészeti informatika 8.

Java és web programozás

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

BME MOGI Gépészeti informatika 13.

A feladatok megoldásához felhasználandó osztályok leírásait az alábbi URL-en találja meg:

OOP: Java 7.Gy: Öröklődés, referenciák

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Programozás II. ATM példa Dr. Iványi Péter

Informatika terméktervezőknek

és az instanceof operátor

Kivételkezelés, naplózás. Exception handling, logging

Java gyakorlat feladatai e s megolda sai ( )

Java felhasználói felület

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Az új be- és kimenet könyvtár

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben

OOP: Java 5.Gy: Osztály, referencia, konstruktor

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Java IX. telkezelés a Java-ban

C# osztályok. Krizsán Zoltán

Java IX. telkezelés a Java-ban

Kalapácsvetés 2016 szöveges

Programozási nyelvek II.: JAVA

Algoritmusok és adatszerkezetek II.

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Java Programozás 8. Ea: GUI. Graphical User Interface

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

Programozási nyelvek II.: JAVA, 4. gyakorlat

Java programozási nyelv

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Segédanyag: Java alkalmazások gyakorlat

INFORMATIKAI ALAPISMERETEK

Objektumorientált programozás C# nyelven

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Átírás:

Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02

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 20/2

MVC Vezérlő Modell Nézet 20/3

MVC alapú számológépecske Csak szorozni tud, mindig az aktuális eredményt szorozza össze egy beírható számmal. Van Reset funkciója 20/4

Számológépecske alapkód (még nem MVC) import javax.swing.*; import java.awt.event.*; public class Calc extends JFrame { JTextField adat, eredmeny; public Calc() { settitle("számológépecske"); setbounds(50,50, 300,160); JPanel dp = new JPanel(); dp.setlayout(null); getcontentpane().add(dp); JLabel jl1 = new JLabel("Szám:"); dp.add(jl1); jl1.setbounds(30,20, 50,20); 20/5 adat = new JTextField(); dp.add(adat); adat.setbounds(70,20, 60,20);

Számológépecske alapkód (még nem MVC) 20/6 JButton ba = new JButton(); ba.settext("szorzás"); dp.add(ba); ba.setbounds(150,18, 100,24); ba.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { String s = adat.gettext(); int a = Integer.parseInt(s); String x = eredmeny.gettext(); int b = Integer.parseInt(x); eredmeny.settext(""+a*b); ); JLabel jl2 = new JLabel("Eredmény:"); dp.add(jl2); jl2.setbounds(10,50, 70,20); eredmeny = new JTextField("1"); dp.add(eredmeny); eredmeny.setbounds(80,50, 200,20); eredmeny.seteditable(false);

Számológépecske alapkód (még nem MVC) 20/7 JButton br = new JButton(); br.settext("reset"); dp.add(br); br.setbounds(60,90, 80,24); br.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { adat.settext(""); eredmeny.settext("1"); ); JButton bc = new JButton(); bc.settext("bezár"); dp.add(bc); bc.setbounds(160,90, 80,24); bc.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { System.exit(0); );

Számológépecske alapkód (még nem MVC) public static void main(string[] args) { Calc ca = new Calc(); ca.setdefaultcloseoperation(jframe.exit_on_close); ca.setresizable(false); ca.setvisible(true); 20/8

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 20/9

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; 20/10 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! 20/11

Számológépecske MVC A vezérlő kódja import javax.swing.*; public class CalcController { private static String clm = "Calc program message"; CalcModel cm = new CalcModel(); 20/12 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. 20/13

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); 20/14

Számológépecske MVC A View kódja public class CalcMVC extends JFrame { 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. 20/15

MVC 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 20/16

MVC Bonyolult MVC programok jellemzői: A kontrollert több osztályban valósítjuk meg Beolvasó, ellenőrző, konvertáló, kommunikáció A modellt is érdemes több részre bontani: Számítások, fájlkezelések, adatbázis-kezelés A grafikus felület is sok panelből állhat Pl: pdf fájl előállítása: A grafikus felületen megnyomjuk a nyomógombot A kontroller lekéri az adatokat a modelltől, és a kontroller állítja elő a pdf dokumentumot 20/17

MVC Az MVC modellnek megfelelően működnek a Java program grafikus elemei, pl: táblázatok, jelölőnégyzetek, számpörgettyűk. Adat kiolvasás Number Model Nézet frissítés Utasítás: Action Listener Növelés, csökkentés 20/18

MVC Fontos: A MVC modell nem keverendő össze a háromrétegű alkalmazás architektúrával! Megjelenítési réteg Alkalmazáslogikai réteg Erőforráskezelő réteg Bár nagyon hasonlítanak, a háromrétegű alkalmazás rétegei külön-külön számítógépeken valósulnak meg (a skálázhatóság miatt), míg az MVC modell szerint felépülő program egyetlen számítógépen fut. 20/19

VÉGE VÉGE 20/20