Az Aikido programozási nyelv

Objektum-orientált programozás

Osztályok

Az Aikido egy objektumorientált nyelv, így természetesen támogatja a felhasználó által történő típusdefiniálást, valamint ezek közötti relációk (pl.: öröklődés), valamint az interfészek leírását és megvalósítását.
Az osztályok lényegében, a felhasználó által definiált típusok. Egy osztály definíciója az adattagok, és a metódusok deklarációjából és definíciójából áll. Osztály definíciója a class kulcsszóval történik.
Az osztályoknak, hasonlóan a függvényekhez lehetnek paramétereik. Ezek egyben az osztály publikus adattagjai. Egy objektumot az adott osztályból a new kulcssszóval hozhatunk létre.
Az Aikido osztályaiban, sőt blokkjaiban a következő láthatósági szabályok lehetnek érvényesek az egyes adattagokra, vagy metódusokra:


Példa osztályra:
class Rational(szamlalo, nevezo=1){ public: operator+(masik){ return new Rational(this.szamlalo*masik.nevezo + masik.szamlalo*this.nevezo, this.nevezo*masik.nevezo) } operator->(adat,out){ if(out){ //kiírás { else { throw "Ismeretlen hiba miatt nem sikerült a kiiratás" } } } ... var x=new Rational(1,2) var y=new Rational(1,4) // (x+y)->stdout

Öröklődés

Aikidoban az osztályok közötti öröklés leírására az extends kulcsszó használandó. A nyelv a többszörös öröklődést nem támogatja, azaz egy osztálynak legfeljebb csak egy ősosztálya lehet.
Érdekesség, hogy Aikidoban nem csak osztályok közötti öröklődés létezik, hanem függvények, monitorok, sőt tetszőleges blokkok között is leírható e kapcsolat. Pontosabban szóval azt adhatjuk meg, hogy egy leszármazott osztály függvénye az ősosztálynak melyik függvényét definiálja felül. Ehhez az adott függvénynél is az extends kulcsszót kell használni a megfelelő paraméterekkel.

Polimorfizmus, dinamikus kötés

Az Aikido részben interpretált mivoltának köszönhetően csak dinamikus, futásidejű típuslevezetést végez. Ennek köszönhetően igen rugalmas a nyelv használata, viszont ez teljesítmény csökkenést okoz a futásidőben történő típusvizsgálat miatt.
A legtöbb programozási nyelvben a dinamikus kötés csak függvények és eljárások esetében működik (pl.: Java). Az Aikido, az adott blokk (például osztály) adattagjaira is alkalmazni tudja a dinamikus kötést.

Interfészek

Az interfészek használata teljesen hasonló a más programnyelvekben látottakhoz. Az interfész törzsében függvénydefiníciókat adunk meg, amelyeket az implementáló osztályoknak kötelező megvalósítaniuk.
Interfészek között - hasonlóan az osztályokhoz - öröklődési kapcsolatot írhatunk le.

interface VilagitoTest { function vilagit() } interface HoCsoSzeruTest extends VilagitoTest { function melegit() } class Holampa implements HoCsoSzeruTest { function vilagit(){ ...//saját világító függvény } function melegit(){ ...//saját melegítő függvény } }