linuxforum

Hozzászólások

10 bejegyzés megtekintése - 51-60 / 536
  • Szerző
    Bejegyzés
  • Hozzászólás: Dinamikus osztály javaban, de hogyan? #2207458
    linuxforum
    Felhasználó

      Minden objektumot létre kell hozni egyszer.Egy aktív rekord gyakran egy keresés eredményeként jön létre. Vagyis, az objektumot létrehozó művelet, ha az osztály része, nem lehet más, csak statikus.Más nyelveken, amiken eddig használtam az aktív rekordokat, így vannak implementálva. Most, hogy jávában kellenek, szeretném ugyanazt a módszert használni. A jávát úgy ismertem, mint a lehetőségek nyelvét, ezért lepett meg, hogy egy gyakran használt konkstrukciót nem lehet benne megvalósítani. És még az elvi akadályát sem értem. Azt értem, hogy technikailag így egyszerűbb implementálni, de elvileg (programozás elméletileg) nem értem, mi kifogás lehet a teljes statikus öröklés ellen.

      Hozzászólás: Dinamikus osztály javaban, de hogyan? #2207456
      linuxforum
      Felhasználó

        A cél egy örökölhető konstruktor művelet létrehozása, ami mindig olyan objektumot hoz létre, amilyen osztályból meghívod. Az osztályon kívüliség nem megoldás, mivel ezt akarjuk elérni:

        Code:
        class ActiveRecord {

        Hozzászólás: Dinamikus osztály javaban, de hogyan? #2207454
        linuxforum
        Felhasználó

          A „minden körülmények között” szerintem túl erős megfogalmazás. Én úgy tudom, a statikus attól statikus, hogy nem az objektumhoz kapcsolódik, hanem az osztályhoz. Ettől még a származtatott osztály tudhatná magáról, hogy származtatott.A C++ nyelvben annyira nem vagyok otthon, azt sem tudom, ott jelentkezik-e ez a probléma egyáltalán. Ha ott sem lehet lekérdezni statikusan az aktuális osztályt - aminek a nevében fut a művelet -, azaz ott sincs statikus öröklés, akkor félek, az ilyen trükkök ott sem segítenek, mivel egy statikus művelet meghívása esetén nem tudod megállapítani, melyik osztályban vagy, és nem tudsz semmi olyant futtatni, ami az adott osztályhoz kapcsolódik.

          Hozzászólás: Dinamikus osztály javaban, de hogyan? #2207452
          linuxforum
          Felhasználó

            A probléma lényege úgy tűnik az, hogy egy statikus művelet nem képes lekérdezni, hogy éppen milyen osztályban van. (Leginkább gondolom azért, mert nincs igazi statikus öröklés.)Ez a kód ezt azzal játsza ki, hogy létrehoz egy statikus osztályt, amiben a SecurityManager-től lekéri a hívási vermet, amiből ki tudja deríteni, hogy melyik az az osztály, amelyik a statikus műveletet hívta. (Azért kell külön osztály, mert a

            Hozzászólás: CDB update művelettel #2207521
            linuxforum
            Felhasználó

              Szerintem pont valami ilyensmit csinál a CDB, ettől annyira gyors. Azt hiszem, kihagyom, hogy saját indexelést írjak, ha már a CDB-ben ezt hatékonyan lekódolták. Ez az irány egyelőre járhatónak tűnik.Még egyszer köszönöm az ötletet!

              Hozzászólás: CDB update művelettel #2207519
              linuxforum
              Felhasználó

                A gond az, hogy a kulcsok egyrészt nem fixek, másrészt meg sok van belőlük.Azért kell gyors keresés, mert gyakran lefutó programról van szó. Egy tízezres kulcstömböt nem tennék bele a kódba.Serializálni sem szeretném, szerintem ez is nagy időveszteség.Most az ötleteden felbuzdulva azon gondolkodom, hogy ha a cdb-ben tárolnám az indexeket, úgy csak akkor kéne újraírni a cdb-t, ha új kulcs érkezik. Ez ritka. És utána binárisan egy másik fájlból kiolvasom az adatokat.Egyelőre ez járható útnak tűnik, bár nem a legszebb megoldás.

                Hozzászólás: CDB update művelettel #2207516
                linuxforum
                Felhasználó

                  A kulcsaim stringek. Egy bináris fájlban a kulcs->pozíció leképezést nem tudom, hogyan oldhatnám meg egyszerűen. Ezt akartam a CDB-ből kihasználni.

                  Hozzászólás: Dinamikus osztály javaban, de hogyan? #2207449
                  linuxforum
                  Felhasználó

                    Igazad van, az aktív rekordban az ar.name=”Érték” nem kerül rögtön tárolásra, hanem az ar.save(); művelet menti el az adatbázisba.És miért jobb? Mert fordítási időben ellenőrzi, hogy jó helyre jó dolgot írok-e, van-e annak a táblának olyan mezője.Én buta vagyok, és azért szeretem az erősen típusos nyelveket, mert rengeteg hibát kidobank még fordítási időben.Számomra könnyebben áttekinthető a kód is, ha egy műveletem eredménye vagy paramétere nem ResultSet, ami bármilyen rekordszerkezet lehet, hanem annak egy nevesített osztálya, ami csak egyféle szerkezetet takarhat.Az már csak hab a tortán, hogy nekem kényelmesebb is, de lehet, ez már csak megszokás kérdése.

                    Hozzászólás: Dinamikus osztály javaban, de hogyan? #2207446
                    linuxforum
                    Felhasználó

                      A RecordSet-ben az általad írt mezőnek értéket adó művelet így néz ki:

                      Code:
                      rs.updateString("name", "Pityuka");

                      Amennyiben a rekordban nincs "name" mező, ez futásidőben derül ki.Az aktív rekordban így néz ki:

                      Code:
                      ar.name="Pityuka"

                      Ha nincs name mező, ez fordítási időben derül ki.

                      Hozzászólás: Dinamikus osztály javaban, de hogyan? #2207444
                      linuxforum
                      Felhasználó

                        A tárolók nagyon dinamikusak, ezért sokmindenre ráhúzhatók, és nekem épp ezért nem kényelmes a használatuk.A ResultSet egy jó megoldás, csak épp fordítási időben nem tudja ellenőrizni az adatszerkezetet, amire az aktív rekord képes.Statikus öröklődésen azt értem, hogy egy osztály statikus műveletét egy leszármazott osztály statikus művelete felülírhassa.

                      10 bejegyzés megtekintése - 51-60 / 536