|
Article on other languages:
|
The Common Lisp Object System (CLOS) is the facility for object-oriented programming which is part of ANSI Common Lisp. CLOS is a dynamic object system which differs radically from the OOP facilities found in more static languages such as C++ or Java. CLOS was inspired by earlier Lisp object systems such as MIT Flavors and CommonLOOPS, although it is more general than either. Originally proposed as an add-on, CLOS was adopted as part of the ANSI standard for Common Lisp and has been adapted into other Lisp dialects like EuLisp or Emacs Lisp.[1]
FeaturesCLOS is a multiple dispatch system. This means that methods can be specialized upon the types of all of their arguments. Most OO languages are single-dispatch, meaning that methods are only specialized on the first argument. Methods in CLOS are grouped into generic functions; a generic function is a collection of methods with the same name and argument structure, but with differently-typed arguments. Like the OO systems in most dynamic languages (such as Python), CLOS does not enforce encapsulation. Any data member (or slot) can be accessed using the Apart from normal ("primary") methods, there also are The Standard Method-Combination provides above primary, before, after and around methods. There are other Method-Combinations with other method types. New (simple and complex) Method-Combinations and method types can be defined. CLOS allows multiple inheritance. When the default order in which methods are executed in multiple inheritance is not correct, the programmer may resolve the diamond inheritance problems by specifying the order of method combinations. CLOS is dynamic, meaning that not only the contents, but also the structure of its objects can be modified at runtime. CLOS supports changing class definitions on-the-fly (even when instances of the class in question already exist) as well as changing the class membership of a given instance through the CLOS is not a prototype language: Classes must be defined before objects can be instantiated as a member of that class. Meta-Object ProtocolOutside of the ANSI standard, there is a widely implemented extension to CLOS called the Meta-Object Protocol (MOP). The MOP defines a standard interface to the underpinnings of the CLOS implementation, treating classes, slot-descriptions, generic-functions and methods themselves as instances of metaclasses, and allows the definition of new metaclasses and the modification of all CLOS behavior. The flexibility of the CLOS MOP prefigures aspect-oriented programming, which was later developed by some of the same engineers, such as Gregor Kiczales. The MOP defines the behavior of the whole object system by a set of protocols. These are defined in terms of CLOS. Thus it is possible to create new object-systems by extending or changing the provided CLOS functionality. The Book The Art of the Metaobject Protocol describes the use and implementation of the CLOS MOP. Other Lisp Object SystemsReferences
Literature
|
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net