continue with the Basics by Example; today's version of the post written in VB.NET Enjoy!
You can copy and paste the code below in your favorite IDE/Editor and start playing and learning with it. This little "working" program will teach you the basics of the Programming Language.
There are some "comments" on the code added just to tell you what are or how are some features called. In case you want to review the theory, you can read my previous post, where I give a definition of each of the concepts mentioned on the code. You can find it here: http://carlosqt.blogspot.com/2010/08/new-series-languages-basics-by-example.html
Greetings Program - Verbose
' VB.NET Basics
Imports System
Namespace VBGreetProgram
Friend Class Greet
' Fields or Attributes
Private _message As String
Private _name As String
Private _loopMessage As Integer
' Properties
Public Property Message() As String
Get
Return Me._message
End Get
Set(ByVal value As String)
Me._message = value
End Set
End Property
Public Property Name() As String
Get
Return Me._name
End Get
Set(ByVal value As String)
Me._name = value
End Set
End Property
Public Property LoopMessage() As String
Get
Return Me._loopMessage
End Get
Set(ByVal value As String)
Me._loopMessage = value
End Set
End Property
' Constructors
Public Sub New()
Me._message = ""
Me._name = ""
Me._loopMessage = 0
End Sub
' Overloaded Constructor
Public Sub New(ByVal message As Integer, ByVal name As String, ByVal loopMessage As Integer)
Me._message = Me.Capitalize(message)
Me._name = Me.Capitalize(name)
Me._loopMessage = loopMessage
End Sub
' Method 1
Private Function Capitalize(ByVal val As String) As String
' "if-then-else" statement
If Len(val) >= 1 Then
Return UCase(val(0)) & val.Substring(1, Len(val) - 1)
Else
Return ""
End If
End Function
' Method 2
Public Sub Salute()
' "for" statement
For i As Integer = 0 To Me._loopMessage
Console.WriteLine("{0} {1}!", Me._message, Me._name)
Next
End Sub
' Overloaded Method 2.1
Public Sub Salute(ByVal message As String, ByVal name As String, ByVal loopMessage As Integer)
' "while" statement
Dim i As Integer = 0
While i < loopMessage
Console.WriteLine("{0} {1}!", Me.Capitalize(message), Me.Capitalize(name))
i = i + 1
End While
End Sub
' Overloaded Method 2.2
Public Sub Salute(ByVal name As String)
' "switch/case" statement
Dim dtNow As DateTime = DateTime.Now()
Select Case dtNow.Hour
Case 6 To 11
Me._message = "good morning,"
Case 12 To 17
Me._message = "good afternoon,"
Case 18 To 22
Me._message = "good evening,"
Case 23, 0 To 5
Me._message = "good night,"
Case Else
Me._message = "huh?"
End Select
Console.WriteLine("{0} {1}!", Me.Capitalize(Me._message), Me.Capitalize(name))
End Sub
End Class
' Console Program
Friend Module Program
Public Sub Main()
' Define object of type Greet
Dim g As Greet
' Instantiate Greet. Call Constructor
g = New Greet()
' Call Set Properties
g.Message = "hello"
g.Name = "world"
g.LoopMessage = 5
' Call Method 2
g.Salute()
' Call Overloaded Method 2.1 and Get Properties
g.Salute(g.Message, "VB.net", g.LoopMessage)
' Call Overloaded Method 2.2
g.Salute("carlos")
' Stop and exit
Console.WriteLine("Press any key to exit...")
Console.Read()
End Sub
End Module
End NamespaceGreetings Program - Minimal
' VB.NET Basics
Imports System
Friend Class Greet
' Fields or Attributes
Private _message As String, _name As String
Private _loopMessage As Integer
' Properties
Property Message() As String
Get
Return _message
End Get
Set(ByVal value As String)
_message = value
End Set
End Property
Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Property LoopMessage() As String
Get
Return _loopMessage
End Get
Set(ByVal value As String)
_loopMessage = value
End Set
End Property
' Constructors
Sub New()
_message = ""
_name = ""
_loopMessage = 0
End Sub
' Overloaded Constructor
Sub New(ByVal message As Integer, ByVal name As String, ByVal loopMessage As Integer)
_message = Capitalize(message)
_name = Capitalize(name)
_loopMessage = loopMessage
End Sub
' Method 1
Private Function Capitalize(ByVal val As String) As String
' "if-then-else" statement
If Len(val) >= 1 Then
Return UCase(val(0)) & val.Substring(1, Len(val) - 1)
Else
Return ""
End If
End Function
' Method 2
Sub Salute()
' "for" statement
For i As Integer = 0 To _loopMessage
Console.WriteLine("{0} {1}!", _message, _name)
Next
End Sub
' Overloaded Method 2.1
Sub Salute(ByVal message As String, ByVal name As String, ByVal loopMessage As Integer)
' "while" statement
Dim i As Integer = 0
While i < loopMessage
Console.WriteLine("{0} {1}!", Capitalize(message), Capitalize(name))
i = i + 1
End While
End Sub
' Overloaded Method 2.2
Sub Salute(ByVal name As String)
' "switch/case" statement
Dim dtNow As DateTime = DateTime.Now()
Select Case dtNow.Hour
Case 6 To 11
_message = "good morning,"
Case 12 To 17
_message = "good afternoon,"
Case 18 To 22
_message = "good evening,"
Case 23, 0 To 5
_message = "good night,"
Case Else
_message = "huh?"
End Select
Console.WriteLine("{0} {1}!", Capitalize(_message), Capitalize(name))
End Sub
End Class
' Console Program
Friend Module Program
Sub Main()
' Define object of type Greet and Instantiate Greet. Call Constructor
Dim g As Greet = New Greet()
' Call Set Properties
g.Message = "hello"
g.Name = "world"
g.LoopMessage = 5
' Call Method 2
g.Salute()
' Call Overloaded Method 2.1 and Get Properties
g.Salute(g.Message, "VB.net", g.LoopMessage)
' Call Overloaded Method 2.2
g.Salute("carlos")
' Stop and exit
Console.WriteLine("Press any key to exit...")
Console.Read()
End Sub
End ModuleAnd the Output is:
Auto-Implemented Properties in VB.NET
Auto-implemented properties enable you to quickly specify a property of a class without having to write code to Get and Set the property. When you write code for an auto-implemented property, the Visual Basic compiler automatically creates a private field to store the property variable in addition to creating the associated Get and Set procedures. Taken from: http://msdn.microsoft.com/en-us/library/dd293589.aspx
' That means that we can omit the Fields/Attributes declaration
'and go directly to the properties
' Fields or Attributes
' Private _message As String
' Private _name As String
' Private _loopMessage As Integer
' Auto-Implemented Properties
Property Message() As String
Property Name() As String
Property LoopMessage() As String
' then, when ever you want to use them you get and set their value using the properties or using the auto-generated attributes (different from C# where you need to use the property) ' Let's see an example in our constructor
' Constructor
Sub New()
' accessing through the Property
Message = ""
Name = ""
LoopMessage = 0
' or through the auto created fields/attributes (even if you cannot see them using "Me.")
_Message = ""
_Name = ""
_LoopMessage = 0
End Sub

Hey Moi-Même!
ReplyDeleteYou should add the following to the Greetings Verbose version of the program.
Option Explicit On
Option Strict On
And that will 6 more keywords to the counting to the (already) king of verbosity! (based on this blog comparisons results)
Thanks for that, I will update the code and the counters asap :)
ReplyDelete