Understanding Classes and Objects

Classes contain methods, events, and properties that enable access to data. These methods, events, and properties of a class are known as its members. In VBA, you use procedural programming, writing most of your code within a code module (although classes are available in VBA). In object-oriented programming, most, if not all, of your code is contained within classes.

A class is often described as being a sort of cookie cutter or blueprint for an object. You can also think of a class as a template for an object.

Think about how you would use a Word template. You can add boilerplate text and special formatting (styles) to the template. Then when a document is created based on that template, the new document contains the same characteristics that were applied to the template. The document has access to all the styles defined in the template, but an end user can make additional changes to the document and apply styles to different sections of the document. In this same way, a class contains the base functionality of an object, and yet you can later change properties of each object to make them different. Although a class contains a base set of functionality such as methods, properties, and events, these class members can be used, and the data associated with the object can be accessed, only when you've created an instance of the class. An object is an instance of a class, and the process is known as instantiation.

You learned in Chapter 1 about the extended objects that VSTO provides for Word and Excel. One of these is a NamedRange. A NamedRange is actually a class, and each time you add one to the worksheet, you are creating an instance of that class, or a NamedRange object. VSTO generates a unique name for each instance by appending an incremental number to the end of the class name: NamedRange1, NamedRange2, and so on. If you want to provide a different name, you can make the change in the Properties window. If you also change the value of the properties of NamedRange1—such as setting a specific font or adding a border—then the appearance of NamedRange1 will differ from that of NamedRange2. Even though each NamedRange is unique, the two of them share the same characteristics (properties) because both of them were created from the same NamedRange class.

When you create a VSTO application using Visual Basic 2005, you have numerous objects to work with. There are objects such as Windows Forms and controls, and there are Word, Excel, and Outlook objects such as documents, list objects, and e-mail items. Additionally, the .NET Framework contains a class library that you can use to create objects in your code.

You use the New keyword to create an instance of a class. In the case of a NamedRange, VSTO automatically creates the instance of the class in the auto-generated code of the worksheet's hidden partial class whenever you add a NamedRange (or any other control) to the worksheet. When you create your own class, you can store data privately; to do that, you create variables, known as private member variables, to store data. Then you create public properties so that the data can be accessed by other methods outside the class. This gives you complete control over the access to this data.

0 0

Post a comment