\HeaderA{makeClassRepresentation}{Create a Class Definition}{makeClassRepresentation}
\keyword{programming}{makeClassRepresentation}
\keyword{classes}{makeClassRepresentation}
\begin{Description}\relax
Constructs a \code{\LinkA{classRepresentation-class}{classRepresentation.Rdash.class}} object to
describe a particular class.  Mostly a utility function, but you can
call it to create a class definition without assigning it, as
\code{\LinkA{setClass}{setClass}} would do.
\end{Description}
\begin{Usage}
\begin{verbatim}
makeClassRepresentation(name, slots=list(), superClasses=character(),
                        prototype=NULL, package, validity, access,
                        version, sealed, virtual=NA, where)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{name}] character string name for the class
\item[\code{slots}] named list of slot classes as would be supplied to
\code{setClass}, but \emph{without} the unnamed arguments for
superClasses if any.
\item[\code{superClasses}] what classes does this class extend
\item[\code{prototype}] an object providing the default data for the class,
e.g, the result of a call to \code{\LinkA{prototype}{prototype}}.
\item[\code{package}] The character string name for the package in which
the class will be stored; see \code{\LinkA{getPackageName}{getPackageName}}.
\item[\code{validity}] Optional validity method.  See
\code{\LinkA{validObject}{validObject}}, and the discussion of validity methods in
the reference.
\item[\code{access}] Access information.  Not currently used.
\item[\code{version}] Optional version key for version control.  Currently
generated, but not used.
\item[\code{sealed}] Is the class sealed? See \code{\LinkA{setClass}{setClass}}.
\item[\code{virtual}] Is this known to be a virtual class?
\item[\code{where}] The environment from which to look for class
definitions needed (e.g., for slots or superclasses). See the
discussion of this argument under \LinkA{GenericFunctions}{GenericFunctions}.
\end{ldescription}
\end{Arguments}
\begin{References}\relax
The R package \pkg{methods} implements, with a few exceptions, the
programming interface for classes and methods in the book
\emph{Programming with Data} (John M. Chambers, Springer, 1998), in
particular sections 1.6, 2.7, 2.8, and chapters 7 and 8.

While the programming interface for the \pkg{methods} package follows
the reference, the R software is an original implementation, so
details in the reference that reflect the S4 implementation may appear
differently in R.  Also, there are extensions to the programming
interface developed more recently than the reference.  For a
discussion of details see \code{?\LinkA{Methods}{Methods}}
and the links from that documentation.
\end{References}
\begin{SeeAlso}\relax
\code{\LinkA{setClass}{setClass}}
\end{SeeAlso}

