Egy objektumalapú programozási nyelv strukturális típusrendszerrel és dinamikus delegációval

OData támogatás
Konzulens:
Dr. Asztalos Márk
Automatizálási és Alkalmazott Informatikai Tanszék

A legtöbb objektumorientált programozási nyelv osztályok használatával támogatja az objektumorientált fejlesztési paradigmát. Viszont az osztályok nélküli (objektumalapú) nyelvek is egy használható alternatívát nyújtanak. A Self, az első objektumalapú nyelv prototípusokat használt, de azóta egyéb osztályok nélküli megvalósításokat alkalmazó nyelvek is készültek. Ezen nyelvek osztályok nélküli objektumrendszere regulárisabb és fogalmilag egyszerűbb mint a hagyományos osztályalapú nyelveké. Egy gyakori ellenvetés viszont az objektumalapú nyelvekkel szemben, hogy eredendően absztrakt fogalmak reprezentálása nehéz bennük.

Az egyik kód-újrafelhasználási mechanizmus, melyet az objektumalapú nyelvek gyakran alkalmaznak a delegáció, mely egyfajta objektumalapú öröklésnek tekinthető. A delegáció nagyobb rugalmasságot nyújt mint a hagyományos osztályalapú öröklés, és kifejező ereje is nagyobb. Viszont a statikus (fordításidőben történő) típusellenőrzése – különösen a dinamikus delegációé – esetenként nehéz lehet.

A statikus típusellenőrzésnek számos előnye van, például segíti a programhibák korai felfedezését. Az elterjedt programozási nyelvek által alkalmazott statikus típusellenőrzés nominatív típusrendszereket használ, vagyis a típusok közti leszármazási kapcsolatokat a programozónak expliciten deklarálnia kell. Ezzel szemben a strukturális típusrendszereket használó nyelvek esetén az objektumok típusa a tényleges struktúrájukon illetve viselkedésükön alapul, így a leszármazási kapcsolatok is impliciten következnek a típusok struktúrájából. Ennek következtében a strukturális típusrendszerek támogatják a komponensek előre nem látott módokon történő újrafelhasználását.

Jelen diplomaterv leírja egy új objektumalapú programozási nyelv – mely strukturális típusrendszert használ és támogatja a dinamikus delegációt – tervezését és megvalósítását. Emellett összehasonlítja a hagyományos osztályalapú és az osztályok nélküli objektumrendszereket, valamint kifejti a strukturális típusrendszerek és a delegáció előnyeit is. Az új nyelv ötvözi a dinamikus delegáció rugalmasságát a statikus típusellenőrzés által biztosított típusbiztossággal. Eredendően absztrakt fogalmak reprezentálására is képes az ún. absztrakt slotok használatával. A nyelv implementációja – egy fabejáráson alapuló interpreter – szintén leírásra kerül. A dolgozat az új nyelv képességeit működő példákon keresztül mutatja be.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.