Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:

Hasonló előadás


Az előadások a következő témára: "1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:"— Előadás másolata:

1 1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:

2 2 Kivételkezelés I. szokatlan, váratlan esemény - hibakezelés cél: robosztus program, hiba esetén ne álljon le hagyományos hibakezelés: nehézkes, komplex kód pl. C programban függvények visszatérési értéke visszaterjesztés a hívónak több szinten keresztül nehezen karbantartható

3 3 Kivételkezelés II. alapelv: funkcionális részeket és a hibakezelést különválasztani! try-catch-finally blokk kivétel eldobása: throw new MyOwnException()‏ amiket tovább akarunk dobni: throws Throwable class: Exception és Error class RuntimeException és Error kitüntetett

4 4 Kivételkezelés – példa class MyException extends Exception { MyException(String s) { super(s); } } … static int readData() throws MyException, java.io.IOException { … } … public static void main(String[] args) { try { int d = readData(); … } catch (MyException me) { System.err.println(“MyException hiba: “ + me); } catch (java.io.IOException ioe) { System.err.println(“IOException hiba: “ + ioe); }

5 5 GUI: AWT és Swing AWT (java.awt) – Abstract Window Toolkit Swing (javax.swing) – AWT v2 komponensek és konténerek (folyamat-, adat-,) eseményvezérelt programozás eseménykezelés: esemény objektum: pl. MouseEvent esemény forrás objektum listener (hallgató) interfész: pl. MouseMotionListener adapter osztályok: pl. MouseMotionAdapter regisztrálás: pl. Component.addMouseMotionListener()‏

6 6 GUI: konténerek, komponensek ablakok: önálló ablak: JFrame, JDialog keret és önálló layout: JPanel bármi rajzolása: Canvas (AWT)‏ egyszerű komponens: JLabel: szöveg JButton, JCheckbox, JRadioButton: gombok JComboBox, JList: többféle választás JMenuBar, JMenu, JMenuItem: menü komplex feladatok: JTable: (akár szerkeszthető) táblázat JFileChooser: file open / save / … dialog

7 7 LayoutManager komponens méret megadása: setMaximumSize(), Preferred, Minimum meghatározza komponens helyét, méretét BorderLayout: North, E, W, S, Center BoxLayout: egy sorba vagy oszlopba FlowLayout: mint folyó szöveg GridLayout: négyzetrács (táblázat)‏ GridBagLayout: táblázat, de flexibilis

8 8 GUI: rajzolás saját grafika: célszerűen Canvas, JPanel vagy JLabel paintComponent() felülírása, repaint() meghívása! rajzolás (alakzat, kitöltés, …)‏ Graphics2D

9 9 GUI: rajzolás – példa class DominoPanel extends JPanel { // dominók állapota … public addDomino(Domino d) { // állapot változtatása … repaint(); } protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D)g; g2.setColor(Color.red); g2.drawLine(10, 10, 50, 50); … }

10 10 Párhuzamos programozás folyamat (process) és szál (thread)‏ miért kellenek szálak? válaszadási képesség hosszú művelet (számolás, adatbázis) közben futó folyamatok leállíthatók legyenek háttérben futtatott feladat (pl. monitorozás, hálózati kommunikáció)‏ Swing megköveteli beépített szál-kezelési képesség nyelvi szinten prioritások (Thread.MIN_PRIORITY… Thread.MIN_PRIORITY)‏ példa: garbage collector (low priority, idle time)‏

11 11 Szálak szál implementálása: java.lang.Runnable interface java.lang.Thread osztály mindkettőnél: „public void run()” szál indítása: Thread.start(), nincs stop() ! join(): megvárja a szál befejeződését yield(): ütemezés – futás jogáról lemond szinkronizáció synchronized: objektumonként metódusok kölcsönös kizárása wait(), notify(), notifyAll()‏

12 12 Szálak – szál indítása class MyThread extends Thread { public void run() { … } } MyThread t = new MyThread(…); t.start(); VAGY class MyRunnable implements Runnable { public void run() {…} } MyRunnable r = new MyRunnable(…); new Thread(r).start();

13 13 Szálak – példa class Game extends Thread { private bool running = true; float x, y; public void run() { // inicializálás float dx = 0.1; while (running) { // objektumok mozgatása x += dx; // leállási feltétel ellenőrzése running =...; // várakozás a következő időszeletre (100ms)‏ sleep(100); // throws InterruptedException! }

14 14 Szálak – szinkronizáció class MyThread extends Thread { private int state; synchronized setState(int s) { state = s; } synchronized getState() { return state; } hálózat beállíthatja, megjelenítés kiolvashatja párhuzamosan az állapotot


Letölteni ppt "1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:"

Hasonló előadás


Google Hirdetések