Meta-object Protocol

Difference between version 18 and 19 - Previous - Next
A ''Meta-object Protocol'' is used in different [Object
orientation%|%object-oriented] systems to specify behavior of the underlying
object system.



** See Also **

   [Introspection]:   A concept similar to ''reflection''.

   [TIP] [http://www.tcl.tk/cgi-bin/tct/tip/117.html%|%177], Object Type Introspection:   A proposal to add a routine that provides information about the internal representation of an object.

   [TIP] [http://www.tcl.tk/cgi-bin/tct/tip/279%|%279], Adding an Extensible Object System to the Core:   Discusses various features of a meta-object protocol.



** Reading **

   [http://web.archive.org/web/20070816061926/http://www.ispras.ru/~dkv/links/links.html%|%Meta-Object Protocol links]:   

   [http://mitpress.mit.edu/books/art-metaobject-protocol%|%The Art of the Metaobject Protocol], Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow ,1991:   



** Other Languages **

The following is a list of meta-object protocols for some other languages.

   [http://mop.lisp.se/%|%Lisp]:   

   [http://search.cpan.org/~drolsky/Class-MOP/lib/Class/MOP.pm%|%Perl 5]:   

   [http://www.perl6.org/archive/rfc/92.html%|%Perl6]:   

   [http://courses.cs.washington.edu/courses/cse341/04wi/lectures/17-smalltalk-classes.html%|%Smalltalk]:   also [https://web.archive.org/web/20040811195638/http://www.ifi.unizh.ch/groups/richter/Classes/oose2/05_Metaclasses/02_smalltalk/02_metaclasses_smalltalk.html%|%this].



** Description **

A '''metaobject''' protocol is a description of the abstract design of an
object system, and of the structure and behaviour of the components of the
system.  These components are themselves "objects".  For example, many systems
provide objects called '''classes''' and other objects called '''instances'''.
In some dynamic object systems classes themselves are instances, and they play
a particular role of generating other instances.

The term '''metaobject''' arose from the need to refer to objects themselves in
an [object orientation%|%object], rather than the things those objects are
related to in the data model that a given program operates on.  If one
consideres the domain of object orientation to be the modeling of a program
itself rather than the thing the program models, then these things called
"metaobjects", e.g. classes and instances, are simply the "objects" in the
program modeal, which is not to be conflated with the date model for the target
domain.

A meta-object protocol can also be used in applications where ''reflection'' is
needed for a system to be able to examine itself:

   ''[http://www.fsfla.org/~lxoliva/papers/guarana/security-html/%|%Designing a Secure and Reconfigurable Meta-Object Protocol]'', Alexandre Oliva Eduardo Buzato, 1999-02:   

   ''[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.25.4455%|%A Meta-Object Protocol for Distributed OO Applications]'', Lionel Seinturier et al, 1997 (DOI:[http://dx.doi.org/10.1109/TOOLS.1997.654738%|%10.1109/TOOLS.1997.654738]):   

   ''[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.2050%|%Developing Distributed Software Systems by Incorporating Meta-Object Protocol (diMOP) with Unified Modeling Language (UML)]'', Joon-Sang Lee et al, 1997 (?) (DOI:[http://dx.doi.org/10.1109/ISADS.1999.838366%|%10.1109/ISADS.1999.838366]):    

   ''[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.9552%|%First Steps to an Interaction and Communication Manager between Remote Objects]'', Laurent Berger et al, 1998:   

   ''[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1592%|%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.


----

In Tcl [namespace%|%namespaces] and [namespace ensemble%|%namespace ensembles]
th building blocks for most [object orientation%|%object systems].

[escargo] 2006-11-03: The inclusion of a meta-object protocol can be the foundation of
object-oriented extensions.  I think of [TIP] [http://tip.tcl.tk/279%|%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.


** A Tcl Object Protocol **

The term "protocol" implies some level of interoperability between otherwise
autonomous actors.  Therefore, the first principle of an object protocol for
Tcl might be this:

'''An object should be able to use another object that has passed to it,
regardless of the origin of the passed object.'''



<<categories>>  Concept | Object Orientation