Since the VBScript Scripting Engine version 5.0, classes have been available in VBScript. VBScript classes,
which are similar to VB classes, are created using the
Class ClassName and
End Class statements. These classes can contain private and public methods and properties, as
well as an
Initialize event handler that fires when the class is instantiated and a
Terminate() event handler that fires when the class is destroyed (goes out of scope or is explicitly
If you are unfamiliar with how to use classes in VBScript, take a moment to check out Mark Lidstone's
article Using Classes in VBScript.
The benefit of classes is that they can be used to hide implemenation complexity. While this may sound like a mouthful, the concept is rather simple. When performing a series of tasks, oftentimes initiating these tasks is cumbersome or very detailed. For example, imagine that each time a page was visited you wanted to write to a text-based log file some information about the visitors past pages viewed. Implementing such a system is very complex; a developer wishing to use this system must know the file format of the log file, the path of the log file, and other miscellaneous information.
Classes can encapsulate this implementation information. Without using classes, a developer would have to undertake the following steps each time he or she wished to use the log file:
1.) Gather the information from the User Agent string
2.) Place this information in the proper log file format
3.) Open the log file, which requires that the developer know the physical path to the file
4.) Write the information to the correct place in the log file
5.) Close the log file
A properly implemented class can reduce these steps to three simple ones:
1.) Instantiate the log file class (
2.) Call the
3.) Explicitly destroy the log file class instance
A good example of hiding implementation complexity can be seen in the following articles:
These three articles look at how to provide a simple interface to queues, stacks, and dynamic arrays. With these classes, memory allocation and other pesky implementation details no longer bother the developer. These classes intrinsically handle these messy details.