Az osztályok Fables-ben azonos típusú ágensek (objektumok) halmaza. Fables-ben ez egyben egy séma az egyes példányokra.
Az osztályok szintaxisa hasonló a modellek szintaxisához. Az osztályok definícióját a class <ClassName> begin és a szokásos end kulcsszó között fejthetjük ki. Ezen a blokkon belül definiálhatjuk az osztályhoz tartozó függvényeket. A Demó verzióban az osztályok nem ágyazhatók egymásba.
Példa:
Az osztályok egy új névteret vezetnek be: egy változó az osztályban elfedi a modellben definiált ugyanolyan nevű változót.
Példa:
Az osztályban definiált függvények minden egyes ágensben elérhetők, azonban minden ágens külön-külön rendelkezik a változóival. Az ágensek hivatkozhatnak a modell tagjaira.
Példa:
Az ágensek osztályának neve egyben egy halmazt is jelöl, amely az összes ágens példányát tartalmazza. Ezáltal hivatkozhatunk az összes ágensre.
Példa:
Az osztályokon belül lehetséges a self kulcsszó használata, ami az aktuális példányra hivatkozik. Láthatósági szempontokból lehet leggyakrabban rá szükség.
Példa:
Új példányokat a new operátorral hozhatunk létra, amelynek általános formája a következő:
Példa:
A kezdeti értékadásoknál nem kell az osztály minden egyes adattagját beállítani, mert minden adattag kap egy alapértelmezett értéket a típusa alapján.
Objektumok tagjaira a pont operátorral hivatkozhatunk:
Objektumokat változókban tárolhatunk, ill. az ágensek halmazából kérdezhetjük le.
Például:
Mind az osztályok, mind a modellek rendelkezhetnek startUp blokkokkal. Amikor egy objektum létrejön, akkor kerül végrehajtásra annak startUp része, és minden egyes schedule-ja elindul. Modell esetén a paraméterektől függő értékek beállítása is itt történik.
A szintaxisa a következő:
Az osztályok startUp blokkjai egyelőre nem támogatnak paramétereket.
Példa:
A paraméterek a modellben szereplő definiált konstansok lehetnek. Ezek az értékek a konkrét futtatások előtt beállíthatók.
A modell osztályok startUp blokkjának első eleme ajánlatos, ha a seed() beállítása, amely gondoskodik a modell egészét felügyelő véletlenszám-generátor működését (erről még késöbb a Véletlenek fejezetben).
Példa:
Kidolgozásra vár.
Kidolgozásra vár.
Kidolgozásra vár.