Példák a létrehozott programosztályokra

Egyéni osztály

11.12. Class ConvertAmount

Az osztályban a számok nevét tartalmazó védett tömbök deklarálásra kerülnek, és két módszer a nyilvános feldolgozás módja. amelyhez a konvertált szám átkerül, és a védett NumToString. A szám egy karakterláncra való konvertálása a metódus kódjából érthető.
Az osztály használatához létre kell hoznia egy objektumot, és hívnia kell az átalakítási módot:

Osztálygyűjtemény

Milyen gyűjtemények? A gyűjtemény eszköze a kapcsolódó objektumok csoportba tömörítése. Például egy Űrlap-objektum támogatja az Ellenőrző-vezérlő objektumok gyűjteményét, és megfelelő módszerek vannak az új elemek gyűjteményből történő hozzáadására vagy eltávolítására. A Controls gyűjtemény bármely elemére hivatkozhat az index alapján, például:

Az űrlap ControlCount tulajdonsága olyan értéket tartalmaz, amely megegyezik a gyűjtemény objektumainak számával. Amikor eltávolítja az objektumot a gyűjtemény, tekintet nélkül a helyén tartja a gyűjtemény, ControlCount tulajdonság értéket eggyel csökkentjük, és a kódok az összes objektum a gyűjtemény a következő eltávolítható tárgyat is eggyel csökken.
A gyűjtemények lehetővé teszik, hogy objektumorientált megközelítést szervezzen az adattárolásra. Ezenkívül, a tömbektől eltérően, a gyűjtemények nem igénylik a dimenziók újratelepítését elemek hozzáadásakor vagy eltávolításakor.
A Visual FoxPro-ban a gyűjtemény alap osztályát gyűjtemények készítéséhez használják. Ebbe az osztályba tartozó objektum objektumában nemcsak objektumokat, hanem más típusú adatokat is tárolhat: numerikus, karakteres, logikai, sőt tömbök. A gyűjtemény minden egyes elemét elérheti mind az indexe, mind a kulcs - a karakterlánc, mint az index, amely egyedileg azonosítja ezt az elemet. A tömbökkel ellentétben új elemeket helyezhet el a gyűjteménybe, és elhelyezheti azokat a meglévő elemek között.

A gyűjteményosztály példány objektumának létrehozásához használhatja a CREATEOBJECT () vagy NEWOBJECT () függvényeket, például:

A Számláló tulajdonság tartalmazza a gyűjteményben szereplő tételek számát. Csak olvasható:

A KeySort tulajdonság határozza meg, hogy a Visual FoxPro melyik sorrendbe sorolja a FOR EACH hurok gyűjtemény elemeit.

11.13. Táblázat. A Collection osztályhoz tartozó KeySort tulajdonságértékek

Lista 11.13. A Collection objektum KeySort tulajdonságának alkalmazása

A Collection osztály többi tulajdonsága közös minden Visual FoxPro alap osztályra; ha szükséges, leírását megtalálja a súgódokumentációban.

Az osztály minden módjáról itt megnézzük az Add, Item, GetKey és Remove metódusokat. A többi osztály módszerei megtalálhatók a súgódokumentációban.

A módszer új elemet ad a gyűjteményhez. Itt van a szintaxisa:

Az eItem paraméter bármilyen típusú kifejezés, amely hozzáad egy elemet a gyűjteményhez.
Az opcionális cKey paraméter megadja a kulcsot - egy karakterláncot, amely azonosítja az objektumot. A kulcsoknak egyedinek kell lenniük, vagyis két azonos karakterláncot nem lehet használni több gyűjteményes objektum kulcsaként.
Az opcionális eBefore és eAfter paraméterek meghatározzák a gyűjteményhez hozzáadandó elem helyét. Az eBefore paraméter megadja azt a kulcsot, amely előtt a hozzáadott elemet el kell helyezni, és az eAfter paraméter a kulcs, amely után a hozzáadott elemet helyezni kell. Mindkét paraméter egyidejűleg vagy egyikével megadható; ha elhagyja az eBefore paramétert. akkor helyét a vesszővel ellátott paraméterek listájában fel kell tüntetni:

A 11.14-es lista a Hozzáadás mód használatát mutatja.

11.14. A Gyűjtemény objektum hozzáadása módszer használatával

Ennek a kódnak az eredményeként a következő listát kapja:

Rose Flower1
Orchidea virág 2
Bellflower Flower3

Miért keletkezett a kimenet ebben a sorrendben? Valóban, miután hozzáadta az "Orchid" sort a gyűjteményhez, ennek az elemnek az indexe megegyezik egy értékkel. De a következő elem hozzáadásakor azt jelezték, hogy az elemet a "Flower2" gombbal kell elhelyezni. Így a "Rose" elem megegyezik az index értékével, és az "Orchid" elem indexe megegyezik kettővel. Amikor hozzáadja a következő elemet (a "Bell" vonalat), pozíciója nincs kifejezetten megadva, ezért ez a elem a gyűjtemény végére került.

megjegyzés
Ha a cKey paramétert a gyűjtemény legalább egy elemére szeretné használni, akkor ezt a paramétert a gyűjtemény összes elemére használnia; Ha ezt a követelményt megsértik, akkor futási idő hiba lép fel.

Elem módszer

A módszer lehetővé teszi, hogy a gyűjtemény elemére mutasson indexével. Itt van a szintaxisa:

ahol az eIndex lehet egy elemindex vagy egy kulcsnév numerikus értéke. A módszer egyik példáját a 11.15.

Lista 11.15. A Gyűjtemény objektum tételmódjának alkalmazása

A kód utolsó négy sorában megtalálhatók a gyűjtemény elemek elérésének lehetőségei. Mindegyik ugyanazt az eredményt adja vissza.

GetKey módszer

A módszer lehetővé teszi a kulcs értékét a gyűjtemény elemének indexével vagy az index értékével a kulcs segítségével. Ha a megadott index (vagy kulcs) elem nincs a gyűjteményben, a módszer nulla értéket ad vissza. Itt van a módszer szintaxisa:

A táblázatban. A 11.14 felsorolja a módszer által visszaküldött értékeket.

11.14. Táblázat. A GetKey módszer által visszaadott értékek

Az eltávolítási módszer

A módszer törli az elemet a gyűjteményből. Itt van a szintaxisa:

Az eIndex paraméter lehet egy elemindex vagy egy kulcsnév numerikus értéke. Ha eltávolít egy elemet a gyűjteményből, akkor a számláló tulajdonság értéke egyenként csökken; a törölni kívánt elem után a gyűjteményben található valamennyi elem indexeit egyenként is csökkenti.

kérelem

A gyűjtemények segítségével számos olyan probléma megoldható, amelyek az adatok tárolása során keletkeznek. A gyűjtemények használatának előnyei a könnyű használat és az objektumorientált megközelítés.
A 11.16-os lista bemutatja a súgódokumentációból egy mintakódot, amely bemutatja, hogyan kell a gyűjteményt felhasználni az objektumok - az űrlap-vezérlőelemek hivatkozásainak tárolására.

Lista 11.16. Demo-gyűjteményhasználati példa

Osztály üres

Az Üres kategória az adattárolásra szánt objektumok létrehozásához használható. A korábbi osztályokkal ellentétben ez az osztály nem használható szülőosztályként saját osztályok létrehozásakor. Nem tartalmaz tulajdonságokat vagy módszereket; Új tulajdonságokat adhat hozzá az osztályhoz tartozó objektumokhoz az ADDPROPERTY () függvény használatával. A REMOVEPROPERTY () függvény segítségével eltávolíthatja az objektumhoz hozzáadott tulajdonságot. Egy Üres osztály egy példánya létrehozható az SCATTER parancs segítségével ... NÉV: