Alkalmazásfejlesztés gyakorlat

Slides:



Advertisements
Hasonló előadás
HTML enhanced for web apps! Fodor Krisztián
Advertisements

Óraregisztrálási modul
Grafikus felhasználó felület Windows alatt
TWS ALAP. TWS Ticker beírása.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 8. rész – Grafikus felhasználói felület Nyugat-Magyarországi Egyetem Faipari Mérnöki.
II. Grafikus felhasználói interfész
Operációs Rendszerek I.
ShelfMan Kézikönyv.
Az MVC tervezési minta 2. előadás.
Programozás III GRAFIKUS FELÜLETEK.
ASP.NET MVC 3 platform áttekintés
Adatbányászati technikák (VISZM185)
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
© Kozsik Tamás Grafikus felhasználói felületek.
Objective-C Készítette: Fahmi Arman B5EXTQ
Dinamikus tömbök.
Stílus, mesteroldal, témák
1 Fejlett Programozási Technikák 2. 15/6. Fejlett Programozási Technológiák 2. 2 Közhírré tétetik Március 10.-én tól TIK I. Előadó MS RoadShow 
Fejlett programozási technikák II.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Entity framework Krizsán Zoltán
Szmetankó Gábor Greencode Kft.
SQL Server 2005 Integration Services Kószó Károly rendszermérnök Microsoft Magyarország.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Microsoft BI technológiák az eszközmenedzsment szolgálatában
Hálózati Bombermen Belicza András Konzulens: Rajacsics Tamás BME-AAIT.
Hálózati Bombermen Belicza András Konzulens: Rajacsics Tamás BME-AAIT.

Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Delphi Készítette: Rummel Szabolcs Elérhetőség:
APEX BMF, II. félév.
Football Club webes arculata, azaz egy hivatalos klub honlapjának felépítése Készítette: Kiss László Balázs.
Grafikus interfészek. Graphical User Interface (GUI): Gnome, KDE, XFCE A GUI olyan program, amely vizualisan mutatja meg az adatokat es az akciokat. Ablakokat,
Programozás III SWING. SWING ALKALMAZÁSOK (ISM.) Swing felületű, eseményvezérelt alkalmazás létrehozása: 1.JFrame alapú osztály létrehozása Szerepe: vezérlés.
Számítógépes grafika I. AUTOCAD alapok
A Visual Basic és a programozás oktatása
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
Grafikus programozás Készítette: Csernok László
Modern Alarm Hungary.  A szoftver telepítése előtt telepítse a hardware kulcs drivert (ne csatlakoztassa a hardware kulcsot amíg nem telepítette a drivert)
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Windows Forms alkalmazás készítése Czigléczky Gábor 2009.
Programozás III SWING. SWING ALKALMAZÁSOK (ISM.) Swing felületű, eseményvezérelt alkalmazás létrehozása: 1.JFrame alapú osztály létrehozása Szerepe: vezérlés.
Programozás III JPA.
JSF – komponens alapú webfejlesztés. Mi az a JSF mire jó ● Egy szerver oldali, komponens alapú felhasználói felület keretrendszer ● Támogatja a webes.
J2EE tervezési minták Miskolci Egyetem Alkalmazott Informatikai Tanszék
Információ és kommunikáció
Fejlett Programozási Technikák 2.
Alkalmazásfejlesztés gyakorlat
Alkalmazásfejlesztés gyakorlat
Fejlett Programozási Technikák 2.
Neumann János Informatikai Kar
Ubuntu – ismerkedés Fájlok és könyvtárak
Adatkötés Sablonokkal
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Java Programozás 3. Gy: Java GUI Swing, AWT B IT M A N v:
Az operációs rendszer  Minden jog fenntartva.
B M Java Programozás 7. Gy: Java alapok IT A N Adatkezelő 3.rész
Dependency Injection Tesztduplikátumok, Mock-ok, Fake-ek Feladat
Thread és Task.
Folyamatok.
B M Java Programozás 6. Gy: Java alapok IT A N Adatkezelő 2.rész
B M Java Programozás 5. Gy: Java alapok IT A N Adatkezelő 1.rész
B M Java Programozás 8. Gy: Java alapok IT A N Adatkezelő 4.rész
Java alkalmazások 10. Előadás.
Előadás másolata:

Alkalmazásfejlesztés gyakorlat Java GUI, MVC modell

Java Swing Konténerek (Containers) Komponensek (Components) Keretek, amelyek felületet biztosítanak a GUI elemeknek Komponensek (Components) Belső elemek, konténerekbe helyezhetőek Elrendezések (Layout managers) A komponensek milyen stratégia szerint kerülnek elhelyezésre a konténerben Eseménykezelés (Listeners) Felhasználói vagy egyéb beavatkozás esetén lefutó kód

Konténerek Keret a GUI elemeknek Különböző komponenseket lehet hozzáadni JFrame, JDialog, JApplet, JWindow, JPanel, JTabbedPane, JSplitPane, JScrollPane Néhány beállítási lehetőség Az ablak címe: setTitle(String) Az ablak mérete: setSize(int, int) Pozíció, hol jelenjen meg: setLocation(int, int) Viselkedés bezár:setDefaultCloseOperation(int) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) Modális, azaz hogy blokkolja-e a szülő ablakot vagy sem

Konténerek (feladat) Példa: 06-Java-GUI-1 Átméretezhetjük, más címet adhatunk, … Feladat: írjuk át a példát úgy, hogy az ablak egy külön osztályban szerepeljen A JDialog osztályból kell származnia Hasonlóan lehet másikból is (JFrame, …) A JDialog megvalósítja a Serializable interfészt Generálni kell serialVersionUID-t Sárga ikon: Add generated serial version ID A main-ben példányosítsuk és jelenítsük meg

Komponensek Ablakon megjelenő (belső) elemek További elemek JButton JLabel JTextField JSpinner JCheckBox JRadioButton JComboBox JMenuBar További elemek JTextArea, JList, JTree, JTable, JPasswordField Példa: 06-Java-GUI-2 Próbáljunk ki néhány elemet A menüt bővíthetjük A többi esetben layout nélkül „mellékhatások” lesznek

Elrendezések A komponensek elhelyezése az ablakon Lehetséges elrendezések GridLayout, GridBagLayout, FlowLayout, BorderLayout Ez a 4 szerepel a képeken BoxLayout, CardLayout, SpringLayout, … Bővebb leírás (és a fenti képek forrása) https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

Elrendezések (példa) Példa: 06-Java-GUI-3 Példákban használt layout-ok GridLayout setLayout(new GridLayout(4,3)); BorderLayout setLayout(new BorderLayout()); add(settingPanel, BorderLayout.CENTER); PAGE_START, LINE_START, LINE_END, CENTER, PAGE_END, NORTH, EAST, WEST, SOUTH FlowLayout setLayout(new FlowLayout(FlowLayout.CENTER)); LEADING, CENTER, TRAILING

Gyakorlás Készítsük el az alábbi ablakot Az ablak felépítése Megoldás JPanel (GridLayout) Felirat, beviteli mező, checkbox JPanel (FlowLayout) 2 gomb JDialog-ra kell rárakni BorderedLayout Megoldás 06-Java-GUI-4 JDialog – BorderLayout Center South JPanel – GridLayout(2,2) JLabel JTextField JLabel JCheckBox JPanel – FlowLayout(Cen.) JButton JButton

Eseménykezelés Felhasználó beavatkozásra lefutó kód ActionListener ActionListener, MouseListener, KeyListener, ItemListener, FocusListener ActionListener Az adott konténernek az ActionListener interfészt kell megvalósítania A void actionPerformed(ActionEvent e) metódust implementálni kell Ebben kezelhetjük le az eseményt Hozzá kell adni, hogy mi az adott elem eseménykezelő osztálya addActionListener(ActionListener)

Eseménykezelés (példa) public class MyDialog extends JDialog implements ActionListener { private JTextField textField = new JTextField(); private JButton okButton = new JButton("OK"); public void showDialog() { … inputPanel.add(new JLabel("Szoveg")); inputPanel.add(textField); buttonPanel.add(okButton); okButton.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (okButton == e.getSource()) { // Az OK gombot nyomták meg adat = textField. getText();

(Model, View, Contoroller) MVC (Model, View, Contoroller)

View Controller Model Interfész Controller Modell Interfész osztályok Memória Fájl (XML, txt, bin, …) DB

MVC modell Model View Control Felhasznált adatok, információk Adatlekérdezés, adatmanipuláció Sokszor adatbázis kezelés is ide tartozik View A megjelenítés a felhasználó felé (GUI) Saját vagy előre definiált grafikus komponensekből Control A vezérlés megvalósítása  adat és GUI közötti interakció Több lehetőség: Eseménykezelés Üzleti logika 13

MVC modell View A View réteg hozzáfér a Model réteghez, DE! A Model két részre osztható: DTO-k: Data Transfer Object, együtt: modell osztályok, domain modell Perzisztencia (adattárolás): adatok rögzítése, olvasása A View felhasználja a modell osztályokat A View a perzisztenciát nem használja, azt a controller használja fel

MVC Tanácsok / szokások Minden rétegnek legyen interfésze, mert: Helyettesíthető a szabványos interfészt implementáló más komponenssel. Pl. átállunk MS SQL Serverről Oracle-re, lecseréljük az adatelérési réteget Tesztelhető Minden réteg önmagában tesztelhető. Interfészek: Model interfész (Model <-> Controller interakció) Controller interfész (Controller <-> View interakció)

Java Beans http://en.wikipedia.org/wiki/JavaBeans Felhasználása 3 követelmény: Van public default (parameterless) constructor Minden propertyhez van get/set boolean értékű esetében get helyett is Szérializálható Wikipédián az indokok, pl.: Egy keretrendszer példányosítani tudja Állapotát lementheti perzisztens tárolóba (ORM) Állapotát visszaállíthatja perzisztens tárolóból (ORM) Felhasználása Modell osztályok

MVC alkalmazás: Book Shop Könyvesbolt asztali alkalmazás Ügyfelek felvétele, listázása, stb. Könyvek beszerzése, listázása, stb. Könyvek eladása, eladások listázása, stb. Példa: 06-java-GUI Már tartalmaz Kontrollert Modellt Interface, memóriában tárolja, bean osztályok Olvassuk át a forráskódot, megjegyzéseket is!

Parancssorból (emlékeztető) Parancssorból ant-tal fordítva és futtatva cmd env.bat cd feladat\06-Java-GUI ant cd dist run.bat

Program felépítése bookshop.Main Az app belépési pontja Feladata: A parancssori argumentumok feldolgozása Az alkalmazás indítása bookshop.controller.BookShopController Az app vezérlője bookshop.view.BookShopGui A view réteget reprezentálja (nem UI komponens) bookshop.view.BookShopMenuBar Az app főablakának menüje

Program felépítése (folyt.) bookshop.model Customer tárolás, hozzadás, listázás BookShopDAO interfész BookShopDAOImpl megvalósítás Memóriában tárolja bookshop.model.bean Bean osztályok Book, Customer, Purchase

Program felépítése (folyt.) hu.alkfejl.bookshop.view.dialogs Dialógus ablakok Jelenleg csak az AddCustomerDialog van kész A többit majd implementáljuk hu.alkfejl.bookshop.view.tablemodels TableModel-ek A keresési eredmények megjelenítése Csak a CustomerTableModel van implementálva bookshop.view.Labels A felhasználói felületek üzenetei Nem a kódban szétszórva kell megvalósítani Lokalizáció miatt

Program felépítése (folyt.) AddCustomerDialog this - JDialog dialogPanel - JPanel (BorderLayout) settingPanel - JPanel (GridLayout) JLabel JTextField JLabel JSpinner JLabel genderP. - JPanel (FlowLayout) JRadioButton JRadioButton JLabel JCheckBox JLabel JComboBox buttonPanel - JPanel (FlowLayout) JButton JButton

Feladat „Buy book” kifejlesztése BookShopDAO tárolja memóriában Következő attribútumokat lehet megadni: Author (TextField) Title (TextField) Year (Spinner) Category (ComboBox) Price (Spinner) Piece (Spinner) Ancient (Boolean): Automatikusan állítsuk be, üzleti logika alapján (BookShopControl) 1900 előtt kiadott könyvekre igaz.

Házi feladat (debug) Debug-olás és/vagy program megértés Rakjunk töréspontot AddCustomerDialog::actionPerformed első sor Indítsuk el debug módban Válasszuk ki a BookShopController osztályt Nyomjuk meg a debug gombot! Kövessük végig a futást egészen a BookShopDAO-ig Próbáljunk meg már létező ügyfelet felvenni Kövessük futás közben

Házi feladat (fejlesztés) Sell Book menupont kifejlesztése Memóriában lévő ügyfeleknek tudunk eladni Memóriában lévő könyveket tudjuk eladni Comboboxban listázzuk ki a memóriában lévő könyvek címeit/ügyfelek neveit Használjunk SplitLayout-ot, bal oldalt a kiválasztott ügyfél adatai, jobb oldalt a kiválasztott könyv adatai jelenjenek meg nem szerkeszthető módon (az egyes oldalak elrendezéséhez vegyük alapul az AddCustomer dialogust!) Alul OK és Cancel gombok 25

Linkek Swing felépítéséről Swing Tutorial http://java.sun.com/products/jfc/tsc/articles/architecture/index.html Swing Tutorial http://java.sun.com/docs/books/tutorial/uiswing/index.html