+ Reply to Thread
Results 1 to 2 of 2

Thread: Classes in VB.NET

  1. #1
    Join Date
    Apr 2009
    Location
    Uppsala, Sweden
    Posts
    9,547
    Blog Entries
    5
    Rep Power
    98

    Classes in VB.NET

    In this tutorial I'm going to learn you how to create your own classes, both from scratch and with another class as the base.





    A Basic Class



    First we just create a class, you can write it at the bottom in the other codes or just add a new class item for it.

    Code:
    Public Class CTutorialClass
    
    End Class
    My class is here called CTutorialClass.





    Now we add some content in the class:


    Code:
    Public Class CTutorialClass
    
        Private Message As String = "Hello CodeCall!"
    
        Public Sub PrintMessage()
            MessageBox.Show(Message)
        End Sub
    
    End Class
    I just declared a private string. This string can only be accessed from the class itself. And then I also added a public sub called PrintMessage which just show the text in our string in a messagebox.



    Now if we go back to our other section of code(the one we want to use the class in).

    When we starts writing our class is in the list of proposed items:





    We continue to write to get this:


    Code:
        Private Sub frmTutorial_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim CMyInstance As New CTutorialClass
            CMyInstance.PrintMessage()
        End Sub

    This will create a new instance of our class and then call the PrintMessage sub which will show a messagebox with our message. It will look like this:




    This was just a simple class and isn't useful in any way, but more advanced classes will be.







    A Class with properties


    We're going to continue with our last class, but now we'll add a property.

    Code:
    Public Class CTutorialClass
    
        Private Message As String = "Hello CodeCall!"
        Private Caption As String
    
        Public Sub PrintMessage()
            MessageBox.Show(Message, Caption)
        End Sub
    
        Public Property Title() As String
            Get
                Return Caption
            End Get
            Set(ByVal Title As String)
                Caption = Title
            End Set
        End Property
    End Class
    If we change this a little:

    Code:
            Dim CMyInstance As New CTutorialClass
            CMyInstance.PrintMessage()
    to this:

    Code:
            Dim CMyInstance As New CTutorialClass
            CMyInstance.Title = "CC"
            CMyInstance.PrintMessage()
    We'll set the Title to CC. This will give our messagebox the caption "CC".

    We can also use it the other way to Get the caption:
    Code:
            Dim Caption as String = CMyInstance.Title

    Observe that when we get/set our property we doesn't only need to return/set a variable straight of. We can do like this:

    Code:
        Public Property Title() As String
            Get
                Return Caption & "!!!"
            End Get
            Set(ByVal Title As String)
                Caption = Title
                If Title = "CC" Then
                    MessageBox.Show("Nice Caption!!!")
                End If
            End Set
        End Property
    If you only want the user to be able to get the property's value or only allow the user to change it you can create a readonly property or a writeonly property like this:

    Code:
        Public ReadOnly Property Title() As String
            Get
                Return Caption & "!!!"
            End Get
        End Property
    Code:
        Public WriteOnly Property Title() As String
            Set(ByVal Title As String)
                Caption = Title
                If Title = "CC" Then
                    MessageBox.Show("Nice Caption!!!")
                End If
            End Set
        End Property

    After adding a property to the class it's proposed in the list like this:









    More alternatives when calling subs

    When calling subs/functions of built in classes you often have many alternatives of which variables to use:




    This is easily done in the same way you're making normal subs with different alternatives. Don't worry I will explain how:



    We'll add 2 subs with the same name:

    Code:
    Public Class CTutorialClass
    
        Public Sub moveMouse(ByVal P As Point)
            Cursor.Position = P
        End Sub
    
        Public Sub moveMouse(ByVal X As Integer, ByVal Y As Integer)
            Cursor.Position = New Point(X, Y)
        End Sub
    
    End Class

    But one has the variable Point while the other one has 2 integer variables. Remember they must have different or it won't work.

    So now the user have the option to enter the position he/she wants to move the mouse to(as this example shows) in either a point or in a X and an Y value .

    Now it looks like this if we try to call our sub:










    Creating and using events


    We add an event to our class and then a sub which only calls that event:

    Code:
    Public Class CTutorialClass
    
        Public Sub raiseOurEvent()
            RaiseEvent ourEvent(Me, New EventArgs())
        End Sub
    
        Public Event ourEvent(ByVal sender As Object, ByVal e As EventArgs)
    
    End Class
    So when we later will call the sub the program will raise the event, more to that soon.

    Now we use this code to try our event:

    Code:
        Private Sub frmTutorial_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim CMyInstance As New CTutorialClass
            AddHandler CMyInstance.ourEvent, AddressOf eventRaised
    
            CMyInstance.raiseOurEvent()
    
        End Sub
    
        Private Sub eventRaised(ByVal sender As Object, ByVal e As EventArgs)
            MessageBox.Show("Event Raised")
        End Sub

    This will, when our program loads, create a new instance of our class. Then it will add a handler to eventRaised sub from our event.

    Then we call our sub which will raise the event which will in its turn make the eventRaised sub to go off which will show the messagebox.








    Build a class with another one as base


    In this example I will create 2 classes, one which will be the base and the other one that uses the base class as its base.


    Here's our base class:

    Code:
    Public Class CTutorialClassBase
    
        Public Variable1 As Integer
        Public Variable2 As String
        Public Variable3 As Char
    
    
        Public Function ReturnCC()
            Return "CC"
        End Function
    
    End Class
    Doesn't contains much actually, but it's just some examples after all.



    And the other class:


    Code:
    Public Class CTutorialClass
        Inherits CTutorialClassBase
    
        Public Variable4 as Double
        Public Variable5 as Short
    
    End Class

    Now we have Inherited everything from our base class into our other class.
    Now we can access the things from our base class from inside the other class:





    Or from our instance of the other class:












    Make your class easier to use


    Now the main functions of the class is done but we want to make it easier to use, it's hard to know what everything does.


    Here I've created a class to show how to add "instructions":


    Code:
    ''' <summary>
    ''' A class with the purpose on helping people
    ''' </summary>
    ''' <remarks>This class is made for Vswe's tutorial about classes,
    ''' it doesn't really have any good functions.</remarks>
    Public Class CTutorialClass
    
        ''' <summary>
        ''' The shoesize number.
        ''' </summary>
        ''' <remarks>Holding the double value of the shoe's size</remarks>
        Public ShoeSize As Double
    
        ''' <summary>
        ''' The walking speed, used to calculate the time of walks.
        ''' </summary>
        ''' <remarks>This constant is used to calculate the the time it takes to walk a certain amount of meters.
        ''' Use CalculateTime to calculate the time it takes.</remarks>
        Public Const WalkSpeed As Short = 7
    
    
        ''' <summary>
        ''' Calculate the time it takes to walk a special lenght
        ''' </summary>
        ''' <param name="meters">The amount of meters to walk</param>
        ''' <returns>Returns the time it takes in seconds</returns>
        ''' <remarks>Calculates the time it takes to walk by using the meter input and the walkingspeed constant</remarks>
        Public Function CalculateTime(ByVal meters As Integer)
            Dim Time As Integer
            'calculation goes here
            Return Time
        End Function
    
        ''' <summary>
        ''' Calculate the time it takes to walk a special lenght, also check if you got
        ''' any good shoes
        ''' </summary>
        ''' <param name="meters">The amount of meters to walk</param>
        ''' <param name="Shoes">The biggest shoesize avalible</param>
        ''' <returns>Returns the time it takes in seconds</returns>
        ''' <remarks>Calculates the time it takes to walk by using the meter input and the walkingspeed constant</remarks>
        Public Function CalculateTime(ByVal meters As Integer, ByVal Shoes As Double)
            Dim Time As Integer
            If ShoeSize > Shoes Then
                MessageBox.Show("You don't have any shoes that fits")
            Else
                'calculation goes here
            End If
            Return Time
        End Function
    
    End Class



    The four I used, It exists a lot more:
    • Summery - A short info about the "thing"
    • Remarks - A longer description
    • Param - Info about a parameter, here you need to write the name of it
    • Return - Info about the returning value.


    Here I show some examples on how it will look like with these informations:



























    This was the tutorial Hope you have learned anything because it took me 3 hours to write.

    Have a good time Codeing
    /Vswe

  2. CODECALL Circuit advertisement
    Join Date
    Always
    Location
    Advertising world
    Posts
    Many

     
  3. #2
    Jordan Guest

    Re: Classes in VB.NET

    Very cool tutorial! Classes are very important in VB! I like the last section where you showed proper function documentation. Nice work! +rep

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 13
    Last Post: 09-09-2011, 09:18 PM
  2. C++ classes
    By bgjyd834 in forum C and C++
    Replies: 1
    Last Post: 04-26-2011, 06:43 AM
  3. Classes
    By hbk in forum C and C++
    Replies: 4
    Last Post: 10-30-2010, 09:49 AM
  4. (#) and (.) classes
    By k4m1k4z1 in forum HTML Programming
    Replies: 5
    Last Post: 06-21-2010, 08:35 AM
  5. Classes
    By sthenri in forum Java Help
    Replies: 2
    Last Post: 12-06-2007, 05:16 AM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts