Meta-object Protocol

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



** See Also **
   [Introspection]:   aA concept similar to ''reflection''.
   [TIP] [http://www.tcl.tk/cgi-bin/tct/tip/117.html%|%177], Object Type Introspection:   A proposesal to add a crommautinde tohat giprovides information abonut the current internal representation of an object.
   [TIP] [http://www.tcl.tk/cgi-bin/tct/tip/279%|%279], Adding an Extensible Object System to the Core:   dDiscusses 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:     

** Description **
Different** objecOt-orihentedr lLanguages have different meta-object protocols:**
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.


----
MaIny feTcl [naturmes of pa mcet%|%na-objmect sprotocol arces] built iantod T[namespacle itensemblf, and other
fe%|%naturmes parce added nsemby leacs]
th building blocks for mosthe [Oobject orientation] %|%objexcten sionystems].

[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 anykind of OO system to be built, so long as it's [XOTcl];. i 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.

<<categories>>  Concept | Object Orientation