Using Classes and Objects in VB
- A Simple Temperature Conversion Program
- Building a Temperature Class
- Putting the Decisions into the Temperature Class
- Using Classes for Format and Value Conversion
- A String Tokenizer Class
- Classes as Objects
- Class Initialization
- Classes and Properties
- Another Interface Example·The Voltmeter
- A vbFile Class
- Programming Style in Visual Basic
The original versions of Visual Basic (1.0 through 3.0) did not contain much in the way of object-oriented features, and many programmers' habits were formed by the features of these early versions. However, starting with Visual Basic 4.0, you could create Class modules as well as Form modules, and use them as objects. In this chapter we'll illustrate more of the advantages of using class modules. In the following chapter we'll extend these concepts for the more fully object-oriented VB.NET.
A Simple Temperature Conversion Program
Suppose we wanted to write a visual program to convert temperatures between the Celsius and Fahrenheit temperature scales. You may remember that water freezes at 0° on the Celsius scale and boils at 100°, whereas on the Fahrenheit scale, water freezes at 32° and boils at 212°. From these numbers you can quickly deduce the conversion formula that you may have forgotten.
The difference between freezing and boiling on one scale is 100° and on the other 180° or 100/180 or 5/9. The Fahrenheit scale is “offset” by 32, since water freezes at 32° on its scale. Thus,
In our visual program, we'll allow the user to enter a temperature and select the scale to convert it, as we see in Figure 3-1.
Figure 3-1. Converting 35° Celsius to 95° Fahrenheit with our visual interface
Using the very nice visual builder provided in VB, we can draw the user interface in a few seconds and simply implement routines to be called when the two buttons are pressed.
Private Sub btConvert_Click() Dim enterTemp As Single, newTemp As Single enterTemp = Val(txTemperature.Text) If opFahr.Value Then newTemp = 9 * (enterTemp / 5) + 32 Else newTemp = 5 * (enterTemp - 32) / 9 End If lbNewtemp.Caption = Str$(newTemp) End Sub '------ Private Sub Closit_Click() End End Sub
The preceding program is extremely straightforward and easy to understand and is typical of how many VB programs operate. However, it has some disadvantages that we might want to improve on.
The most significant problem is that the user interface and the data handling are combined in a single program module, rather than being handled separately. It is usually a good idea to keep the data manipulation and the interface manipulation separate so that changing interface logic doesn't impact the computation logic and vice versa.