Introduction to Class Programming Part II

Object Properties

In addition to (enumerated) class properties, our class objects might expose properties that return object values. To give you an example, Visual Basic object such as forms and visible controls expose a Font property, which returns a Font object. 

txtFirstName.Font.Name = "Tahoma"
txtFirstName.Size = 10
txtFirstName.Bold = True
frmStudent.Font.Bold = True

We can also do this in our classes. Taking our Student class,  we might add a Address property, but string is not enough  to point accurately where the student lives, and we usually need several pieces of related information, such street, city, state or province, zip code, as well as country.  Instead of adding multiple properties to the Student object, create a new Address class:

  • To create an Address class
  1. On the Project menu, click Add Class Module
  2. In the Add Class Module dialog box, select Class Module, then click Open
  3. In the Properties window, set the Name property for the class module to Address.
  4. In the Code window, type the following:
Option Explicit

' In Address class module declaration
Private m_Street As String
Private m_City As String
Private m_State As String
Private m_Zip As String
Private m_Country As String

Public Property Let Street(ByVal strNewStreet As String)
    If Len(strNewStreet) = 0 Then Err.Raise 5
    m_Street = strNewStreet
End Property

Public Property Get Street() As String
    Street = m_Street
End Property

Public Property Let City(ByVal strNewCity As String)
    If Len(strNewCity) = 0 Then Err.Raise 5
    m_City = strNewCity
End Property

Public Property Get City() As String
    City = m_City
End Property

Public Property Let State(ByVal strNewState As String)
    If Len(strNewState) = 0 Then Err.Raise 5
    m_State = strNewState
End Property

Public Property Get State() As String
    State = m_State
End Property

Public Property Let Zip(ByVal strNewZip As String)
    If Len(strNewZip) = 0 Then Err.Raise 5
    m_Zip = strNewZip
End Property

Public Property Get Zip() As String
    Zip = m_Zip
End Property

Public Property Let Country(ByVal strNewCountry As String)
    If Len(strNewCountry) = 0 Then Err.Raise 5
    m_Country = strNewCountry
End Property

Public Property Get Country() As String
    Country = m_Country
End Property

Public Function CompleteAddress() As String
    CompleteAddress = Street & vbCrLf & _
                      City & ", " & State & " " & Country & " " & Zip
End Function

Now you can add our new Address property to our Student class in declaration section of the Student class module:

'In the declaration section of the Student class module
'Enum type declaration omitted

Private m_Student_ID As String
Private m_FirstName As String
Private m_LastName As String
Private m_MajorCode As MajorCodeEnum
Private m_YearLevel As YearLevelEnum
Private m_BirthDate As Date
Private m_Gender As GenderEnum
Private m_Address As Address		' Student address

Property Set procedures

A Property Set procedure sets the value of a property that contains a reference to an object. When you assign a value to an object, you must use the Visual Basic Set statement. An example of a property which is an object itself would be the Font property of the TextBox control. Because you're dealing with object references, you must use the Setkeyword in both procedures.  Add the following property procedure and additional method, as well as the revised version of StudentInfo method in Student class module:

' Student Address property procedures
Property Get Address() As Address 
   Set Address = m_Address
End Property 

Property Set Address(ByVal strNewAddress As Address) 
   Set m_Address = strNewAddress 
End Property

' New Student method
Function StudentAddressInfo() As String
    If m_Address Is Nothing Then Err.Raise 5
    StudentAddressInfo = m_Address.CompleteAddress
End Function

' Student StudentInfo method revised
Function StudentInfo(Optional ByVal IncludedAddressInfo As Boolean = True) As String
' Returns the Student information
    Dim info As String
    
    info = "Student # : " & StudentID & vbCrLf & _
           "Name : " & FullName & vbCrLf & _
           "Age : " & Age & vbCrLf & _
           "Gender : " & GenderDescription & vbCrLf & _
           "Major Code : " & MajorCode & vbCrLf & _
           "Major Description: " & MajorCodeDescription & vbCrLf & _
           "Year Level : " & YearLevelDescription

    If IncludedAddressInfo Then info = info & "Address : " &  StudentAddressInfo()
                    
    StudentInfo = info
End Function

In our new StudentAddressInfo method, it is a good programming practice that you check first the existence of an object (Address) with in an object (Student), because a call to that method will raise an error number 91.

Now you can create a Address object in client form, initialize its properties, and then assign it to the Address property of the Student object.

' In client form
' Declare Student object and Address Object
Dim Student As Student
Dim Address As Address

' Initiate the object Student
Set Student = New Student

' Initiate the object Address
Set Address = New Address' Set up Address properties
With Address
   .Street = "Block 10 Lot 26, Molave Street, Calendola Village"
   .City = "San Pedro"
   .State = "Laguna"
   .Country = "Philippines"
   .Zip = "4023"
End With

' Set up Student pproperties
With Student
   .FullName = "Dante Salvador"
   ' Add the newly created Address object to Student Address property
   Set .Address = Address					
   .StudentID = "102472"
   .BirthDate = #10/24/1972#
   .Gender = Male
   .YearLevel = Senior
   .Major = BSCS
End With
    
' Show Student information
MsgBox Student.StudentInfo
 

You might also like...

Comments

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Never trust a programmer in a suit.” - Anonymous