Programozási technológiák – Jegyzet

Kollár, Lajos

Debreceni Egyetem
Informatikai Kar

Sterbinszky, Nóra

Copyright 2014

2014


Tartalom

1. Bevezetés
Objektumorientált tervezési alapelvek
Ne ismételd önmagad (Don't Repeat Yourself, DRY)
Kerüljük a felesleges bonyodalmakat (Keep It Simple Stupid, KISS)
Demeter törvénye (Law of Demeter)
Vonatkozások szétválasztása (Separation of concerns)
A felelősségek hozzárendelésének általános mintái (General Responsibility Assignment Software Patterns, GRASP)
GoF alapelvek
SOLID alapelvek
2. Haladó programnyelvi eszközök
Kivételkezelési ökölszabályok
A kivételek csak kivételes helyzetekre valók
Ellenőrzött és futásidejű kivételek használata
Kerüljük az ellenőrzött kivételek szükségtelen használatát
Favorizáljuk a szabványos kivételeket
Az absztrakciónak megfelelő kivételt dobjuk
Minden metódus minden kivételét dokumentáljuk
A hiba lényegére koncentráló hibaüzenet-szövegeket írjunk
Törekedjünk az elemi hibaszint megőrzésére
Ne hagyjunk figyelmen kívül kivételeket
Állítások (assertions)
Annotációk
Metaannotációk
Szerződés alapú tervezés
Szerződések és az öröklődés
Contracts for Java (cofoja)
3. Szoftvertesztelés
Belövés
Belövés Eclipse-ben
Egységtesztelés JUnit segítségével
Parametrizált tesztek
Kivételek tesztelése
Tesztkészletek létrehozása
JUnit antiminták
4. Tervezési minták
A tervezési minták leírása
GoF tervezési minták katalógusa
Tervezési minták rendszerezése és kapcsolataik
Hogyan válasszunk tervezési mintát?
Hogyan használjuk a tervezési mintákat?
Tervezési minták alkalmazása a gyakorlatban
Létrehozási minták
Szerkezeti minták
Viselkedési minták
5. Kódújraszervezés
Tesztvezérelt fejlesztés
Kódújraszervezési technikák
Kódújraszervezési eszköztámogatás
6. Adatkezelés
XML dokumentumok kezelése
Áttekintés
A SAX API használata
A DOM API használata
A StAX API használata
Adatbázis-kapcsolatok kezelése
A JDBC felépítése
Meghajtóprogramok
A JDBC API főbb elemei
A JDBC API használata
7. Grafikus felhasználói felületek készítése
Swing felületek felépítése
Komponens hozzáadása a tartalompanelhez
Szöveges komponensek
Listák és legördülő listák
Táblázatok
Elrendezéskezelők (Layout menedzserek)
Tervezési minták a Swing keretrendszerben
Irodalomjegyzék

Az ábrák listája

2.1. Annotációfeldolgozás beállítása
2.2. Annotációfeldolgozót tartalmazó jar beállítása
2.3. Hibák a szerződésekben
2.4. Futásidejű szerződésellenőrzés
3.1. Töréspont beállítása
3.2. A beállított töréspont
3.3. Belövés indítása
3.4. Debug perspektíva
3.5. A Debug nézet gyorsbillentyűi
3.6. Hívási lánc a Debug nézetben
3.7. Breakpoints nézet
3.8. Variables nézet
3.9. Változóérték megváltoztatása
3.10. Részletes formázó hozzáadása
3.11. Expressions nézet
3.12. Törésponthoz tartozó feltétel megadása
4.1. Tervezésiminta-kapcsolatok GOF2004
4.2. Az egyke minta megvalósításának osztálydiagramja
4.3. A gyártó minták általános megvalósításának osztálydiagramja [OODesign]
4.4. A gyártófüggvény minta megvalósításának osztálydiagramja [OODesign]
4.5. Az elvont gyár minta megvalósításának osztálydiagramja [OODesign]
4.6. Az építő minta megvalósításának osztálydiagramja [OODesign]
4.7. A prototípus minta megvalósításának osztálydiagramja [OODesign]
4.8. Az illesztő minta megvalósításának osztálydiagramja [OODesign]
4.9. Az összetétel minta megvalósításának osztálydiagramja [OODesign]
4.10. A helyettes minta megvalósításának osztálydiagramja [OODesign]
4.11. A pehelysúlyú minta megvalósításának osztálydiagramja [OODesign]
4.12. A homlokzat mintát megvalósító JFileChooser
4.13. A híd minta megvalósításának osztálydiagramja [OODesign]
4.14. A díszítő minta megvalósításának osztálydiagramja [OODesign]
4.15. A sablonfüggvény minta megvalósításának osztálydiagramja [OODesign]
4.16. A közvetítő minta megvalósításának osztálydiagramja [OODesign]
4.17. A felelősséglánc minta megvalósításának osztálydiagramja [OODesign]
4.18. A megfigyelő minta megvalósításának osztálydiagramja [OODesign]
4.19. A stratégia minta megvalósításának osztálydiagramja [OODesign]
4.20. A parancs minta megvalósításának osztálydiagramja [OODesign]
4.21. Az Állapot minta megvalósításának osztálydiagramja [Sourcemaking]
4.22. A látogató minta megvalósításának osztálydiagramja [OODesign]
4.23. Az értelmező minta megvalósításának osztálydiagramja [OODesign]
4.24. A bejáró megvalósításának osztálydiagramja [OODesign]
4.25. Az emlékeztető minta megvalósításának osztálydiagramja [OODesign]
5.1. Egy bowling játék eredménye
5.2. A tesztvezérelt fejlesztés ritmusa [KACZANOWSKI2013]
5.3. A tesztvezérelt fejlesztés ritmusa részletezettebben [KACZANOWSKI2013]
5.4. Az Eclipse Refactor menüje
6.1. Az XML dokumentumok SAX stílusú feldolgozásának sematikus modellje
6.2. A SAX API elemei [JAXPTutorial]
6.3. DOM modulok
6.4. DOM API interfészei
6.5. Az XML dokumentumok DOM stílusú feldolgozásának sematikus modellje
6.6. A DOM API elemei [JAXPTutorial]
6.7. Az XSLT API elemei [JAXPTutorial]
6.8. Kapcsolódás különféle adatforrásokhoz
6.9. Kétrétegű feldolgozási modell [JDBCTutorial]
6.10. Háromrétegű feldolgozási modell [JDBCTutorial]
6.11. 4-es típusú JDBC-driver
6.12. A fő JDBC osztályok és interfészek és üzeneteik
6.13. A java.sql csomag főbb típusai a közöttük lévő kapcsolatokkal
6.14. A JDBC API főbb interfészei és használatának lépései
6.15. Kapcsolat létrehozása DataSource segítségével
6.16. Connection pooling
6.17. Elosztott tranzakciók támogatása
6.18. Exploits of a mom
7.1. Példa komponenshierarchiára [SwingTutorial]
7.2. Az Eclipse WindowBuilder GUI programozást segítő palettája
7.3. Szöveges komponensek osztályozása [SwingTutorial]
7.4. Egyszeres kiválasztás
7.5. Egyszeres intervallum kiválasztás
7.6. Többszörös intervallum kiválasztás
7.7. Eseménykezelők [SwingTutorial]
7.8. Táblázat beágyazott ComboBox objektumokkal
7.9. Táblázat és táblamodelljének kapcsolata [SwingTutorial]
7.10. BorderLayout [SwingTutorial]
7.11. BoxLayout [SwingTutorial]
7.12. CardLayout [SwingTutorial]
7.13. FlowLayout [SwingTutorial]
7.14. GridLayout [SwingTutorial]
7.15. GridBagLayout [SwingTutorial]
7.16. GroupLayout [SwingTutorial]
7.17. SpringLayout [SwingTutorial]
7.18. Információt megjelenítő JOptionPane komponens

A táblázatok listája

1.1. Felelősségek hozzárendelésének általános mintái
2.1. A cofoja annotációi
2.2. A cofoja pszeudováltozói
2.3. Az annotációfeldolgozó számára beállítandó kulcs–érték párok
3.1. A Debug perspektíva gyorsbillentyűi
3.2. JUnit annotációk
3.3. Az Assert osztály metódusai
4.1. Tervezési minták leírására szolgáló sablon elemei
4.2. A GoF 23 tervezési mintájának katalógusa
4.3. Tervezési minták osztályozása
4.4. A tervezési minták által megengedett változtatható elemek
6.1. XML-feldolgozási modellek jellemzői
6.2. XML dokumentumok csomópontjai
6.3. Adatbázis-kezelő rendszerek JDBC-drivereinek elérhetősége
6.4. Tárolt alprogramok paraméterátadási módjai
7.1. Komponensek és figyelőik [SwingTutorial]

A példák listája

2.1. Jelölőannotáció-típus megadása
2.2. Egyelemű annotációtípus megadása
2.3. Többelemű annotációtípus megadása tömbtípusú elemmel és alapértelmezett értékekkel
2.4. Összetett annotációtípus megadása
2.5. Egyelemű annotációtípus kiegészítése metaannotációkkal
2.6. Többelemű annotációtípus kiegészítése metaannotációkkal
6.1. Címek adatainak adatbázisból Address-listába olvasása
6.2. Az SQL-befecskendezéses támadás kivédése
6.3. Paraméter néküli tárolt függvény meghívása
6.4. Egy IN és egy OUT paraméterrel rendelkező kétparaméteres tárolt eljárás meghívása
6.5. Két IN és egy INOUT paraméterrel rendelkező tárolt eljárás meghívása
6.6. Kötegelt adatbázis-műveletek végrehajtása