135 lines
8.6 KiB
HTML
135 lines
8.6 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN">
|
||
|
<!Converted with LaTeX2HTML 0.6.5 (Tue Nov 15 1994) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds >
|
||
|
<HEAD>
|
||
|
<TITLE>28. Common Lisp Object System</TITLE>
|
||
|
</HEAD>
|
||
|
<BODY>
|
||
|
<meta name="description" value=" Common Lisp Object System">
|
||
|
<meta name="keywords" value="clm">
|
||
|
<meta name="resource-type" value="document">
|
||
|
<meta name="distribution" value="global">
|
||
|
<P>
|
||
|
<b>Common Lisp the Language, 2nd Edition</b>
|
||
|
<BR> <HR><A NAME=tex2html4810 HREF="node261.html"><IMG ALIGN=BOTTOM ALT="next" SRC="icons/next_motif.gif"></A> <A NAME=tex2html4808 HREF="clm.html"><IMG ALIGN=BOTTOM ALT="up" SRC="icons/up_motif.gif"></A> <A NAME=tex2html4802 HREF="node259.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="icons/previous_motif.gif"></A> <A NAME=tex2html4812 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="icons/contents_motif.gif"></A> <A NAME=tex2html4813 HREF="index.html"><IMG ALIGN=BOTTOM ALT="index" SRC="icons/index_motif.gif"></A> <BR>
|
||
|
<B> Next:</B> <A NAME=tex2html4811 HREF="node261.html"> Programmer Interface Concepts</A>
|
||
|
<B>Up:</B> <A NAME=tex2html4809 HREF="clm.html">Common Lisp the Language</A>
|
||
|
<B> Previous:</B> <A NAME=tex2html4803 HREF="node259.html"> Pretty Printing Dispatch </A>
|
||
|
<HR> <P>
|
||
|
<H1><A NAME=SECTION003200000000000000000>28. Common Lisp Object System</A></H1>
|
||
|
By Daniel G. Bobrow, Linda G. DeMichiel,
|
||
|
Richard P. Gabriel, Sonya E. Keene, Gregor Kiczales,
|
||
|
and David A. Moon
|
||
|
<P>
|
||
|
<img align=bottom alt="change_begin" src="gif/change_begin.gif"><br>
|
||
|
<A NAME=CLOS><TT>PREFACE:</TT></A>
|
||
|
X3J13 voted in June 1988
|
||
|
(CLOS) <A NAME=31420> </A>
|
||
|
to adopt the first two chapters (of three) of the
|
||
|
Common Lisp Object System specification
|
||
|
as a part of the forthcoming draft Common Lisp standard.
|
||
|
<P>
|
||
|
This chapter presents the bulk of the first two chapters of the
|
||
|
Common Lisp Object System specification; it is substantially
|
||
|
identical to these two specification chapters as previously published elsewhere
|
||
|
[<A HREF="node368.html#SIGPLANCLOS">5</A>,<A HREF="node368.html#LASCCLOSPART1">6</A>,<A HREF="node368.html#LASCCLOSPART2">7</A>].
|
||
|
I have edited the material only very lightly
|
||
|
to conform to the overall style of this book and to save a substantial
|
||
|
number of pages by using a typographically condensed presentation.
|
||
|
I have inserted a small
|
||
|
number of bracketed remarks, identified by the initials GLS.
|
||
|
The chapter divisions of the original specification have become
|
||
|
section divisions in this chapter; references to the three chapters
|
||
|
of the original specification now refer to the three ``parts'' of the
|
||
|
specification.
|
||
|
(See the Acknowledgments to this second edition for
|
||
|
acknowledgments to others who contributed to the Common Lisp Object System specification.)
|
||
|
This is not the last word on CLOS;
|
||
|
X3J13 may well refine this material further.
|
||
|
Keene has written a good tutorial introduction to CLOS [<A HREF="node368.html#KEENE">26</A>].
|
||
|
<P>
|
||
|
<blockquote>
|
||
|
- Guy L. Steele Jr.
|
||
|
</blockquote>
|
||
|
<img align=bottom alt="change_end" src="gif/change_end.gif">
|
||
|
<HR>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4814 HREF="node261.html#SECTION003210000000000000000"> Programmer Interface Concepts</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4815 HREF="node262.html#SECTION003211000000000000000"> Error Terminology</A>
|
||
|
<LI> <A NAME=tex2html4816 HREF="node263.html#SECTION003212000000000000000"> Classes</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4817 HREF="node264.html#SECTION003212100000000000000"> Defining Classes</A>
|
||
|
<LI> <A NAME=tex2html4818 HREF="node265.html#SECTION003212200000000000000"> Creating Instances of Classes</A>
|
||
|
<LI> <A NAME=tex2html4819 HREF="node266.html#SECTION003212300000000000000"> Slots</A>
|
||
|
<LI> <A NAME=tex2html4820 HREF="node267.html#SECTION003212400000000000000"> Accessing Slots</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4821 HREF="node268.html#SECTION003213000000000000000"> Inheritance</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4822 HREF="node269.html#SECTION003213100000000000000"> Inheritance of Methods</A>
|
||
|
<LI> <A NAME=tex2html4823 HREF="node270.html#SECTION003213200000000000000"> Inheritance of Slots and Slot Options</A>
|
||
|
<LI> <A NAME=tex2html4824 HREF="node271.html#SECTION003213300000000000000"> Inheritance of Class Options</A>
|
||
|
<LI> <A NAME=tex2html4825 HREF="node272.html#SECTION003213400000000000000"> Examples</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4826 HREF="node273.html#SECTION003214000000000000000"> Integrating Types and Classes</A>
|
||
|
<LI> <A NAME=tex2html4827 HREF="node274.html#SECTION003215000000000000000"> Determining the Class Precedence List</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4828 HREF="node275.html#SECTION003215100000000000000"> Topological Sorting</A>
|
||
|
<LI> <A NAME=tex2html4829 HREF="node276.html#SECTION003215200000000000000"> Examples</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4830 HREF="node277.html#SECTION003216000000000000000"> Generic Functions and Methods</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4831 HREF="node278.html#SECTION003216100000000000000"> Introduction to Generic Functions</A>
|
||
|
<LI> <A NAME=tex2html4832 HREF="node279.html#SECTION003216200000000000000"> Introduction to Methods</A>
|
||
|
<LI> <A NAME=tex2html4833 HREF="node280.html#SECTION003216300000000000000"> Agreement on Parameter Specializers and Qualifiers</A>
|
||
|
<LI> <A NAME=tex2html4834 HREF="node281.html#SECTION003216400000000000000"> Congruent Lambda-Lists for All Methods of a Generic Function</A>
|
||
|
<LI> <A NAME=tex2html4835 HREF="node282.html#SECTION003216500000000000000"> Keyword Arguments in Generic Functions and Methods</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4836 HREF="node283.html#SECTION003217000000000000000"> Method Selection and Combination</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4837 HREF="node284.html#SECTION003217100000000000000"> Determining the Effective Method</A>
|
||
|
<LI> <A NAME=tex2html4838 HREF="node285.html#SECTION003217200000000000000"> Standard Method Combination</A>
|
||
|
<LI> <A NAME=tex2html4839 HREF="node286.html#SECTION003217300000000000000"> Declarative Method Combination</A>
|
||
|
<LI> <A NAME=tex2html4840 HREF="node287.html#SECTION003217400000000000000"> Built-in Method Combination Types</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4841 HREF="node288.html#SECTION003218000000000000000"> Meta-objects</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4842 HREF="node289.html#SECTION003218100000000000000"> Metaclasses</A>
|
||
|
<LI> <A NAME=tex2html4843 HREF="node290.html#SECTION003218200000000000000"> Standard Metaclasses</A>
|
||
|
<LI> <A NAME=tex2html4844 HREF="node291.html#SECTION003218300000000000000"> Standard Meta-objects</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4845 HREF="node292.html#SECTION003219000000000000000"> Object Creation and Initialization</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4846 HREF="node293.html#SECTION003219100000000000000"> Initialization Arguments</A>
|
||
|
<LI> <A NAME=tex2html4847 HREF="node294.html#SECTION003219200000000000000"> Declaring the Validity of Initialization Arguments</A>
|
||
|
<LI> <A NAME=tex2html4848 HREF="node295.html#SECTION003219300000000000000"> Defaulting of Initialization Arguments</A>
|
||
|
<LI> <A NAME=tex2html4849 HREF="node296.html#SECTION003219400000000000000"> Rules for Initialization Arguments</A>
|
||
|
<LI> <A NAME=tex2html4850 HREF="node297.html#SECTION003219500000000000000"> Shared-Initialize</A>
|
||
|
<LI> <A NAME=tex2html4851 HREF="node298.html#SECTION003219600000000000000"> Initialize-Instance</A>
|
||
|
<LI> <A NAME=tex2html4852 HREF="node299.html#SECTION003219700000000000000"> Definitions of Make-Instance and Initialize-Instance</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4853 HREF="node300.html#SECTION0032110000000000000000"> Redefining Classes</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4854 HREF="node301.html#SECTION0032110100000000000000"> Modifying the Structure of Instances</A>
|
||
|
<LI> <A NAME=tex2html4855 HREF="node302.html#SECTION0032110200000000000000"> Initializing Newly Added Local Slots</A>
|
||
|
<LI> <A NAME=tex2html4856 HREF="node303.html#SECTION0032110300000000000000"> Customizing Class Redefinition</A>
|
||
|
<LI> <A NAME=tex2html4857 HREF="node304.html#SECTION0032110400000000000000"> Extensions</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4858 HREF="node305.html#SECTION0032111000000000000000"> Changing the Class of an Instance</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4859 HREF="node306.html#SECTION0032111100000000000000"> Modifying the Structure of an Instance</A>
|
||
|
<LI> <A NAME=tex2html4860 HREF="node307.html#SECTION0032111200000000000000"> Initializing Newly Added Local Slots</A>
|
||
|
<LI> <A NAME=tex2html4861 HREF="node308.html#SECTION0032111300000000000000"> Customizing the Change of Class of an Instance</A>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4862 HREF="node309.html#SECTION0032112000000000000000"> Reinitializing an Instance</A>
|
||
|
<UL>
|
||
|
<LI> <A NAME=tex2html4863 HREF="node310.html#SECTION0032112100000000000000"> Customizing Reinitialization</A>
|
||
|
</UL>
|
||
|
</UL>
|
||
|
<LI> <A NAME=tex2html4864 HREF="node311.html#SECTION003220000000000000000"> Functions in the Programmer Interface</A>
|
||
|
</UL>
|
||
|
<HR>
|
||
|
<P><ADDRESS>
|
||
|
AI.Repository@cs.cmu.edu
|
||
|
</ADDRESS>
|
||
|
</BODY>
|