VMD is written in C++ and uses an object-oriented methodology for all program components. This greatly aids in making VMD modular and extensible to such things as new types of display devices, new user interface libraries, and new molecular data file formats. As this chapter will explain, VMD uses the inheritance and polymorphism features of an object-oriented design (in C++) extensively. Users interested in extending or modifying VMD should have a good knowledge of programming in C++; this Guide uses terminology and explainations which assume such knowledge. Two excellent references for users interested in learning more about C++ are books by Lippman and Strousop.
The VMD source code consists of sets of utility functions, independent and interrelated object classes, and global variables. The classes are organized into a few logical program components, e.g., the component responsible for displaying images, the user interface component, and others. This chapter describes the structure of each of these components and mentions the objects which the components contain. These components utilize several external libraries for such things as the graphical user interface, control of external spatial tracking devices, and support for displaying images in the CAVE display environment; the particular libraries which VMD uses are described at the chapters conclusion.