A class is a collection of objects with related structure and behavior. Classes frequently have constructor and destructor operations for the objects associated with them. These operations are always called make and delete. If these operations are not specified, then the class is called a module. Modules collect together related functionality that is used by other classes that do have constructor and destructor operations.
Classes are, in some sense, purely a design-level representation.
No explicit Emacs Lisp support for defining classes exists. The reification of classes in Emacs Lisp occurs purely through the use of naming conventions for functions and variables, and voluntary observance by programmers of the visibility constraints. However, designing and programming in an object oriented fashion will greatly ease understanding of the system architecture, as well as supporting migration to other languages providing direct support for these concepts. A rough design heuristic is that if an entity does not have a distinguishing unique ID, or if one is never needed to implement its behavior, then the entity should probably exist as a part of another class. Similarly, deciding the primary home for an object operation can sometimes be resolved by considering the most appropriate first argument to it.