|
The Common Lisp Object System, a powerful system for object-oriented programming which forms part of Common Lisp. In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ...
Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, standardised by ANSI X3. ...
CLOS differs from most other object-oriented programming environments in the following ways: - It offers multiple dispatch, or "multimethods".
- Therefore, methods are not considered to live within *Classes*; they are conceptually grouped into generic functions instead, a form of mixin.
- CLOS doesn't provide encapsulation; that is considered to be the job of a different part of Common Lisp, the package system.
- *Inheritance* can cause methods to be combined together in arbitrarily complicated ways at the discretion of the programmer, and not merely overridden by one another.
- 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
change-class operator. CLOS has multiple inheritance and, unofficially, a meta-object protocol. Multiple dispatch or multimethods is the feature of some object-oriented programming languages in which a function or method can be specialized on the type of more than one of its arguments. ...
In certain systems for object-oriented programming such as the Common Lisp Object System and Dylan, a generic function is an entity made up of all methods having the same name. ...
In computer science, a mixin is a group of functions which can be mixed into a class and become methods. ...
Encapsulation may refer to: (in the vernacular) expressing an idea with few words, such as with an adage, proverb, slogan, or jingle (in software engineering) the process of enclosing programming elements inside a larger, more abstract entity, similar to information hiding and separation of concerns. ...
Some programming languages allow multiple inheritance, in which a class can inherit behaviors and features from more than one superclass. ...
Metaobject is any entity that exhibits some aspects of objects, like type, interface, class, methods, attributes, variables, functions, control structures and many more. ...
The Common Lisp Object System: An Overview by Richard P. Gabriel and Linda DeMichiel provides a good introduction to the motivation for defining classes by means of generic functions. |