A J programozási nyelv

Objektum-orientált programozás

Amellett, hogy a J egy Funkcionális programnyelv meglehetősen jó az Objektum-orientált programozás terén is. A Java-hoz kicsit hasonló terminológiát használ.

Osztályok

Class-nak hívja az osztályokat, melyek valójában csak definíciók halmaza. Method a neve az osztály funkcióinak, Field pedig az osztályhoz tartozó adatoknak. Az osztálydefiníciókat külön script fájlokban tárolja (.ijs állományokban).
Az osztályokat egy példán keresztül mutatjuk be:

coclass 'pbc' create=: verb define data=: keys=: i.0 sn=:0 ) destroy=: codestroy put=: verb define data=: data,'<'y keys=: keys,sn _1+sn=: '>':sn ) get=: verb define r=.'>'(keys i. y){data b=. keys~:y data=: b#data keys=: b#keys r )

Magyarázat:

Objektumok

Ha az osztályokat használni akarjuk, akkor a főprogramban a "load osztálynév.ijs" parancsot végre kell hajtanunk. Ezután példányosíthatjuk az osztályokat a következő módon:

bc1=: conew 'pbc'

Az új pbc objektumra mutat a bc1 mutató. Az objektum létrehozása után lefut a konstruktor.
Metódusok használatára egy példa:

put__bc1 'asdfasdf' get__bc1 0

asdfasdf

A destroy__bc1: lefut a destruktor.

Öröklődés

A J az egyszeres öröklődést támogatja. A következőképpen hozhatunk létre alosztályokat (természetesen új fájlban):

coclass 'pbcx' coinsert 'pbc' create=: verb define create_pbc_ f. y NB. a szülő create-je NB. az új vreate helye 0 ) destroy=: verb define NB. destroy our stuff here destroy_pbc_ f. y NB. a szülő destruktora ) getfirst=: verb def 'get {. keys'

A coinsert kulcsszó után kell írni, hogy mely osztályt egészítjük ki.