Objektum Orientált elmélet
2009-05-06T01:43:05+02:00
2009-05-07T14:31:16+02:00
2022-07-19T05:06:47+02:00
  • törölve
    Mutasd a teljes hozzászólást!
  • Még akár jó is lehet.

    Sqlből adatok kinyerése:
    http://www.exampledepot.com/egs/java.sql/GetRsData.html

    Én az sql-t nem külső objektumból adnám meg, szerintem azt a lekérdezéseket végző osztályban tárold és farigcsáld, a lekérdezéseket meg paraméterizált függvényekkel old meg. (Igy eléred azt, hogy a program többi részének nem kell tudnia milyen sql adatbázis van alatta, ők csak annyit tudnak, hogy kell megszerezni a userek listáját)

    Ahhoz, hogy egy JTable-ben megjeleníts adatokat TableModel-re lesz szükséged, de én nem egyből ezzel térnék vissza, szerintem egy sima Listát adj vissza a Userekről, amit majd a Model-nek átadva frissíted a táblát.

    http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/table/TableModel..
    How to Use Tables (The Java™ Tutorials > Creating a GUI With Swing > Using Swing Components)


    Mutasd a teljes hozzászólást!
  • Egy beadandó vizsgafeladatról lenne szó, tehát nem egy teljesen kidolgozott - minden funkcióját megírt - alkalmazást kell fejleszteni.
    A kitétel az, hogy Javaban készüljön, használjon relációs adatbázist, és Datagrid-ben is jelenítsen meg adatokat.
    Amire én gondoltam, az a MySQL, ingyenes és egy pc-n is jól elfut, a fejlesztőeszköz, amit használok, az Borland JBuilder X Foundation.
    A progamnak lenne egy alapképernyője, itt kell beírni a felhasználói nevet és a jelszót, ha sikeres, akkor aktívvá válnak a gombok és a belépésről egy bejegyzés kerül az adatbázis logok táblájába (mikor és kikövette el). A következő funkciók lennének: új felhasználó felvitele, már felvitt felhasználó adatainak módosítása, felhasználó törlése, felhasználók listázása, belépési logok listázása.
    Ennyi mindösszesen.
    külön class fájlba kerülne:
    - Start (main)
    - új felhasználó regisztrálása
    - adatmódosítás
    - felhasználó törlése
    - felhasználók listázása
    - logok listázása
    - SQL kapcsolat kiépítése és a szükséges lekérdezések.
    Szerintetek ez így jó?
    Ha lekérdezek adatokat az SQL adatbázisból a külön class-ban, akkor annak eredményeit hogy tudom visszaadni az őt hívó class-nyak? Egy ilyen függvénynek mi a típusa és a visszatérési értéke?
    Jó az, ha a lekérdezést a hívó class-ban állítom össze, magát az SQL parancsot és azt átküldöm a másik class-ban lévő függvénynek, mint String paraméter? Hogy tudom a meghívott class-ból az eredményhalmazt (tömböt) visszaadni a hívó félnek, hogy azt megjelenítse? Vagy a lekérdezést végző függvény retun-je maga a táblázat legyen, aminek meg kell jelennie a hívó class frame-jében?

    Tudom, hogy elég sok kérdést tettem fel és elég bugyuták is, de jó lenne az ügy ízére ráérezni.

    Köszönöm mindenkinek az idáig adott segítséget és amit még adtok.
    Mutasd a teljes hozzászólást!
  • Szerintem régen rossz, ha az ablakok és az adatbázis dolgai összemosódnak, és a main() felől indulunk...

    Vegyünk egy egyszerű példát: mondjuk kereskedést akarsz modellezni. Először ki kell találni az alapobjektumokat, mondjuk: Termek, Keszlet, Raktar, Bolt, Vasarlas, Ceg.
    OOP trükkök: a Keszlet maga Map<Termék, Long>; a Raktar-nak mondjuk van egy helyszíne (X,Y), és van benne Keszlet member, és szallitas(boolean be, Keszlet) művelet; a Raktar leszármazottja a Bolt, amelynek van vasarlas(Vasarlas) művelete meg készpénze; a Vasarlas objektum olyan Keszlet, aminek van vevő adatblokkja és esetleg engedmény infók, stb. Ettől lesz a cucc OOP.

    Az adatokat perzisztens módon tárolni illene - relációs adatbázisban. Nem muszáj a kályhától elkezdeni, a nagykönyv ezt Object relational mapping néven emlegeti, Javában is van rá sokféle támogatás (Hibernate, JPA, vagy a Spring megfelelő cucca) - ezek elintézik az SQL utasítások létrehozását és futtatását (és ne feledkezzünk meg a tranzakciókról sem). Kézzel rendesen megcsinálni legalább annyi idő, mint megnézni valamelyik létező keretet, viszont a való életben gyakrabban találkozol az utóbbival szerintem.

    És persze csinálsz egy JFrame-et egy main-nel, amiben a Ceg adatait látod, illetve a benne levő objektumpéldányokra megfelelő ablakokat nyitogatsz, gombokkal műveleteket végeztetsz. Ezt akár megteheted az adatbázisos rész előtt, hogy kipróbáld a dolog működését.
    Mutasd a teljes hozzászólást!
  • Szia,

    Ezeket nézd át ha van rá időd:

    Singleton
    Connection Pool
    Itt egy példa
    ORM
    Java_Persistence
    DTO Pattern
    Hibernate Netbeans és Hibernate

    Ha nincs akkor csak annyit csinálj, hogy az adatelérő (select, update, delete, insert) "metódusokat, függvényeket" egy külön objektumba írod meg, amit JDBC, Connection Pool segítségével manageled, hogy a programból bárhonnan hozzá férj alkalmazhatod a Singleton mintát erre az objektumra. Hogy ne kerüljön ki ebből az objektumból adatbázis specifikus dolog (pl. resultset) ezért csinálsz minden selected-re egy objektumot amibe "manuálisan" betöltöd a select egy rekord eredményét, erre csinálsz egy helpert szintén singleton vagy statikus metódusokat ami ezt az átalakítást elvégzi neked. (Tehát az adatelrő funkcionalitást egy objektumba helyezed, és ott zárod egységbe, míg a kinyert adatokat egy újabb osztályba zárod, ez később módosítás szempontjából sem rossz, és persze ezeket akár más névtérben is helyezed el)

    Ez lehet nem volt eléggé értelmes, össze dobtam gyorsan egy vázat is: vázlat.

    robb83

    Mutasd a teljes hozzászólást!
  • Tervezési mintákra keress rá (design pattern), azon belül is a Megfigyelő (observer) minta érdekes szerintem.

    szerk: adatbázissal kapcsolatos dolgokhoz meg active record.
    Mutasd a teljes hozzászólást!
  • Namost azért egy ilyen programot fellehet ám bontani elég szépen osztályokra. Elég elvontan egy objektumot úgy tudsz megtalálni, hogy keresed a mondatokban a főneveket, elemezd a mondatot (NEMBIZTOS régen foglalkoztam vele, én az objektumközpontú szemléletet jobban szeretem sosem kellett rajta gondolkodnom ha nagy hülyeséget mondtam majd kijavítanak). A másik, hogy minden osztályt pakolj külön class fájlba, íratlan szabály legalábbis nekem így tanították . És persze az adatbázist kezelő kód külön megy.
    Mutasd a teljes hozzászólást!
  • Lehetne egy koncepció az, hogy az egyes adattáblákhoz rendelsz egy-egy osztályt, a sorokhoz egy-egy példányt.
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Lenne egy hülye kérdésem.
    A következő helyzet áll fenn: Javaban kell egy alkalmazást készítenem, mely valamilyen relációs adatbázist használ és megfelel az OOP elvének is.
    A nagy problémám az indulásnál, hogy miként bontsam objektumokra a programom? Az tiszta sor, hogy van egy main metódus, az az ablak, amivel az egész program indul, ez addig él - legfeljebb nem látszik -, amíg a program fut.
    Csak azt nem tudom, hogy az SQL kapcsolathoz használt kód egy különálló class fájlba kerüljön-e, és ugyanebbe a class fájlba kerüljön-e az összes lekérdezéstípus (SELECT, UPDATE, DELETE, INSERT), majd az ablakok class fájljaiból hívjam meg az SQL kapcsolatot, és az SQL parancsokat úgy, hogy a paramétereket a hívó kódból kapják, az SQL kódokat tartalmazó class fájl visszaadja a lekérdezés eredményét és azt dolgozom fel az ablakok class fájljában (pl. megjelenítem egy táblázatban), vagy elvégzi a módosítást? Vagy az is megfelel az OOP elvnek, ha csak minden ablak van külön-külön class fájlban és mindegyikben külön-külön benne vannak az adatbázist használó kódok is?

    Köszönöm a válaszaitok!
    Mutasd a teljes hozzászólást!
abcd