2013. február 4., hétfő

Az államvizsga

2013. január 31. 11:00-ra volt kiírva számomra az államvizsga.
Közben jött egy változás, mégpedig az hogy előre kiadott tételsorból, személyre szóló tételeket borítékoltak a kérdező tanárok, majd a "felkészülési teremben" ki kellett dolgozni ezeket. Erre fél óra volt.
Tételeim:
  • Programozás III: Egybezártság, adatrejtés, öröklődés, többalakúság
  • Beágyazott programozás: Magas szintű MIDP elemek ismertetése (Form, TextBox, Alert stb...)
  • Vizuális adatbáziskezelés 1: A VB2010 ciklusszervezési lehetőségei.
A vizsgán prezentációt kellett tartanom a dolgozatomról, kiemelve a saját munkámat. A bizottságnak nem volt kérdése, szerintem jól sikerült.
A tantárgyi vizsgáknál Varjasi tanárúr megkérdezte hogy hogyan valósul meg Hibernate-ben illetve a perzisztens kezelésben az adatrejtés elve, ugyanis adatbázisba kiírjuk az objektumok adattagjait (privátokat is akár) és hát ez keményen megsérti az adatrejtés elvét.
A válaszom az volt, hogy getter és setter metódust kell megadni, melyek használatával ellenőrizhető lesz a perzisztens kezelés. Illetve általános esetben pedig a Serializable interface implementálásával adunk engedélyt a privát adattagok szerializálására.
Vizuális adatbázisból is jól sikerült, bár nem írtam rá a lapra (nem tudtam időhiányban teljes részletességgel kidolgozni) a FOR EACH ciklust, de elmondtam teljesen jól. Ja és kihagytam a CONTINUE utasítást a FOR ciklusnál. Mindezt csak a jegyzetben hagytam ki. Szóban mindent elmondtam.

Az eredményem:
Szakdolgozat: 5
Programozás III: 5
Beágyazott programozás: 5
Vizuális adatbáziskezelés I.: 4

Az oklevél átlagom 4,26 lett (féléves eredményeim átlaga 2,33 volt).
A diplomába 4 lesz beírva.
MSC-re jelentkezés esetén 80 pontot viszek, mellyel biztosan felvesznek levelező tagozatra.



A dolgozat bírálata

Egy héttel a védés előtt megkaptam a bírálatot. A dolgozatomat jelesre bírálta egy külsős szakember. Ezután már csak a védés és az államvizsga maradt hátra.

Jelentkezés záróvizsgára

A záróvizsgára való jelentkezés beadásakor jelezni kell a záróvizsga tantárgyakat is.
Én a következőket választottam:
  • Programozás III. (JAVA programozás)
  • Beágyazott programozás (Java Micro Edition)
  • Vizuális adatbáziskezelés I. (SQL Server + Visual Basic.NET alapok)
 A tantárgyakat próbáltam úgy összeválogatni, hogy a szakdolgozat témályához minél inkább kapcsolódjon. Ez mellett fontos szempont volt, hogy hozzám közelálló téma legyen, ne kelljen magolni mindenféle elvi dolgokat.
A JAVA nyelv kézenfekvő volt. A J2ME szintén, mivel igazából ez is Java :)
A Vizuális adatbáziskezelés 1. pedig az adatbáziskezelés miatt illett a dolgozathoz.

A dolgozat elkészítése

Nos, a terveim nem jöttek be. Szerettem volna rendszresen blogolni a készítés menetét, de időhiány miatt ez nem sikerült.
Összefoglalva leírom a tevékenységeket, tapasztalatokat és persze magát a védést is.

A feladatkiírás után nekiláttam a szakirodalom feldolgozásának. A helyzet az, hogy magyar nyelvű szakirodalom Hibernate témában nincs. Az angolnyelvű dokumentáció viszont bőséges és részletes.
Alap könyvek a témában:
  • Java persistent with Hibernate (Manning, 2010)
  • Beginning Hibernate (APress, 2010)

A Hibernate ezekből megérthető, részletesen bekonfigurálható, alkalmazható.

A dolgozatban tárgyaltam a perzisztencia fogalmát és problémáit. A perzisztencia ebben a kontextusban a Java objektumok életciklusának kibővítése a futásidőn túlra. A következő ábra ezt mutatja be.

Ez megoldható adatbáziskezeléssel is, de ekkor az osztálydefinícióban gondoskodni kell az adatbázis-kezelési műveletek megvalósításával, mely egy kritikus, aprólékos művelet. Ez mellett az objektum-orientált  szemlélet is háttérbe szorul. Erre a problémára nyújtanak megoldást az ORM rendszerek, melyek beépülnek az alkalmazásunk és a JDBC réteg közé. A programozás közben az ORM keretrendszert kell programozni, mely gyakorlatilga egyszerű metódushívásokat jelent. Ezzel eltakarja az ORM rendszer az adatbáziskezelési problémákat.



Szakdolgozatomban egy példaalkalmazást is el kellett készítenem. Ehhez munkahelyem egy problémájának megoldására készítettem egy egyszerű programot, mely egy nem túl bonyolult, de több összekapcsolt táblát alkalmazó adatbázist alkalmaz.
Az alkalmazás Windows desktop felülettel lett elkészítve. A szoftvert úgy terevzetm hogy architektúrájában különüljön el az üzleti logika, a felhasználói felület és az adatbázis-kezelés. Így alakult ki a következő felépítés:


Jól látszik hogy az üzleti logika és a perzisztens osztályokat definiáló rétegben működik a Hibernate és összekapcsolja azt a JDBC-vel. A felhasználói felület kvázi független, akár webservice-ra is cserélhetó, vagy mobil kliensre. Viszont a dolgozat célja nem egy komplex alkalmazás elkészítése volt, hanem a Hibernate alapvető használatának bemutatása. Erre pedig a desktop swing kliens volt számomra egyszerűbb.
NetBeans-t használtam az alkalmazás elkészítéséhez. A Hibernate konfigurálásához nagy segítséget nyújt. Leképezi az adatbázisból reverse engineering-el az osztályokat stb...

A dolgozat igen szűkösen készült el, mivel munkahelyemen adódtak komoly teendők és nem tudtam az utolsó hónapban úgy foglalkozni a dolgozatírással ahogy szerettem volna.....
De azért elkészült és december 10-én leadtam a dolgozatot.