'''Agora''' is a [[ReflectionReflective (computer science)programming|reflective]], [[prototypePrototype-based programming|prototype-based]], [[object-oriented programming]] [[programmingProgramming language|language]] that is based exclusively on [[message passing]] and not [[Delegation (object-oriented programming)|delegation]]. Agora was intended to show that even subject to that limit, it is possible to build a full object-oriented language that features [[Inheritance (computerobject-oriented scienceprogramming)|inheritance]], [[Clone (Java method)|cloning]], and reflective [[Operator (computer programming)|operators]].
==Overview==
The idea is that an [[Object (computer science)|object]] is fully [[Encapsulation (computer programming)|encapsulated]] and can only be subject to message passing. But seen from the inside of the object, the object knows all about its own structures. It is therefore perfectlyfully capableable ofto cloningclone and extendingextend itself. This is accomplished by special [[Method (computer programming)|methods]] callednamed ''cloning'' methods and ''[[mixin]]'' methods.
Agora has been implemented in [[Agora98C++]], the[[Java latest implementation(programming of Agoralanguage)|Java]], is done in [[JavaScheme (programming language)|JavaScheme]], and [[Smalltalk]]. Agora98, the latest implementation of Agora, done in Java, allows full access to all Java [[application programming interface|interfaces ([[API]]s), including the ability to create [[Java applet|applets]]s from within Agora98. From the language point of viewviewpoint, Agora98 is a considerable simplification of prior Agora versions.
==References==
Line 14:
==External links==
* [http://prog{{Official website|soft.vub.ac.be/research/agora/ Agora home page]}}