A Meta-object Protocol is used in different object-oriented systems to specify behavior of the underlying object system
- a concept similar to reflection
- TIP 177 , Object Type Introspection
- proposes to add a command to give information on the current internal representation of an object.
- TIP 279 , Adding an Extensible Object System to the Core
- discusses various features of a meta-object protocol.
- Meta-Object Protocol links
- The Art of the Metaobject Protocol , Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow ,1991
Different object-oriented languages have different meta-object protocols:
- Perl 5
- also this .
A meta-object protocol can also be used in applications where reflection is needed for a system to be able to examine itself:
- Designing a Secure and Reconfigurable Meta-Object Protocol , Alexandre Oliva Eduardo Buzato, 1999-02
- A Meta-Object Protocol for Distributed OO Applications , Lionel Seinturier et al, 1997 (DOI:10.1109/TOOLS.1997.654738 )
- Developing Distributed Software Systems by Incorporating Meta-Object Protocol (diMOP) with Unified Modeling Language (UML) , Joon-Sang Lee et al, 1997 (?) (DOI:10.1109/ISADS.1999.838366 )
- First Steps to an Interaction and Communication Manager between Remote Objects , Laurent Berger et al, 1998
- The Zypher Meta Object Protocol , Koen De et al, 1996
- discusses the necessity of a meta object protocol in the design of an open hypermedia system.
Many features of a meta-object protocol are built into Tcl itself, and other features are added by each of the Object orientation extensions.
escargo 2006-11-03: The inclusion of a meta-object protocol can be the foundation of object-oriented extensions. I think of TIP 279
DKF 2009-05-14: Not really. It doesn't allow all that much flexibility in terms of the actual implementation semantics. That particular TIP allows any kind of OO system to be built, so long as it's XOTcl; it's the Henry Ford of core OO proposals. Writing a customizable MOP is very difficult; even now (having designed and implemented TclOO) I still feel I don't grasp the full space of possibilities firmly enough to be able to build a scripted customization interface for the basic semantics.