Forte

Beépített típusok, típuskonstrukciók, absztrakt adattípus megvalósítása

Beépített típusok

Egyszerű adattípusok:
Adattípusok: Kulcsszó: Értéke:
Logikai boolean
true, false
Egész int
-32.768 - 32.767
long
-2.147.483.648 - 2.147.483.647
short
-32.768 - 32.767
i2 (2 byte-os)
-32.768 - 32.767
ui2 (előjel nélküli 2 byte-os)
0 - 65.535
integer/i4 (4 byte-os)
-2.147483.648 - 2.147.483.647
ui4 (előjel nélküli 4 byte-os)
0 - 4.294.967.295
i1 (1 byte-os)
-128 - 127
ui1 (előjel nélküli 1 byte-os)
0 - 255
Lebegőpontos float
10E-38 - 10E+38 (7 tizedes pontossággal)
double
10E-308 - 10E+308 (15 tizedes pontossággal)
String string
Karakter char

Osztály adattípusok:
Ezeknek az adattípusoknak a superclass-a a DataValue osztály. Osztály-adattípusok: BooleanData, IntegerData, DecimalData, DoubleData, TextData, Binary Data, IntervalData, DateTimeData, ImageData. Ezen osztályok közül néhánynak létezik olyan fajtája is, amely megengedi a NULL érték használatát is. Ezek az osztály-típusok nem a "Data" szóra, hanem a "Nullable" szóra végződnek. Pl. TextData típus párja a TextNullable osztálytípus.

Az egyszerű adattípus előnye az osztály-adattípussal szemben, hogy kevesebb memóriát foglal, így a hálózatai adatforgalomban is hatékonyabb. Ezzel szemben az osztály-adattípus előnye, hogy sokkal összetettebb dolgok megvalósítására képes, illetve tudja kezelni a NULL értéket. Mind az egyszerű, mind az osztály-adattípusból képezhetünk tömböket, mely az "Array of" paranccsal történik, megnevezve a parancs végén a típust, amit tömbösíteni szeretnénk.

Felsorolási adattípus:
A nyelv nem rendelkezik ilyen tipussal.

Saját típusok

A nyelv lehetőséget ad saját tipusok létrehozására. Ezek a tipusok viszont csak a már meglévő osztálytipusok öröklésével jöhetnek létre. Vagyis altípusképzés kell definiálni öket. A tipusok rendelkezhetnek saját jellemzőkkel.

A nyelv nem szigorúan tipusos. Adott osztálytipusú változó és abból az osztálytipusból örökölt változó között valamint azonos típusú változók között lehet értékadás osztály szinten. Egyébként pedig, ha bármely osztályadattípus értékére vagyunk kiváncsiak, akkor egy metódus segítségével megkaphatjuk azt és bármely más osztály adattípusnak értékül adhatjuk.

Tömbök létrehozhatóak egyszerü, osztály, vagy a saját tipusókból is. A tömbök indexe csak egész szám lehet, eleme pedig bármi. Indextúlcsordulást-ellenörzéssel nem rendelkezik a nyelv. A tömb mérete futási időben döl el. Ugyanis a memóriafoglalás dinamikusan történik. Ennek megfelelöen a kezdeti értékadás akkor történik meg, amikor futási időben lefoglalásra kerül a tömb adott sorának a memória terület.

A kezdeti érték egyszerü tipusok esetén:

  1. Logikai tipus esetén - False,
  2. Szám tipus esetén - 0
  3. Szöveges tipus esetén - ''

Osztály adattípusok esetén a kezdeti érték:
  1. BooleanData - False,
  2. IntegerData - ''
  3. DecimalData - ''
  4. DoubleData - ''
  5. TextData - ''
  6. DateTimeData - 1582 okt 15 (Gregorián-naptár kezdete)
  7. IntegerNullable - 0
  8. DecimalNullable - 0
  9. DoubleNullable - 0.0
  10. TextNullable - N/A
Saját típus esetén, ha a programozó nem ad neki más kezdeti értéket, akkor a kezdeti érték megegyezik annak az osztálynak a kezdeti értékével, ahonnan leöröklésre került.

Több dimenziós tömb létrehozására a klasszikus értelemben nincs lehetőség. Ha viszont egy osztály egyik attributumát tömbként definiáljuk és egy változóba példányosítjuk tömbként az adott osztályt, akkor egy olyan szerkezetet kapunk, ami használható több dimenziós tömbként. Altömb létrehozását semmilyen szinten nem támogattja a nyelv.

Típusok közötti konverzió

Konverzió csak azon osztályok között lehetséges, amik között öröklödési viszony van. Mivel minden osztály az 'object' típusból öröklödik, így bármilyen más osztálytípussá konvertálható. Valamint a DataValue osztály pedig minden más adattípus osztályá konvertálható, mert ezen osztályok őse. A konvertálás syntaxisa: osztálynév(objektum_referncia) vagy (osztálynév)(objektum_referncia). Attributumok konverziója pedig a 'ReplaceParameters' metódus segítségével valósítható meg.