Well! I'll explain
the concept of properties with some examples to make a
clear understanding.
So First of all: What are properties?
Just normal variables, like other primitive variables!
Example A:
''''''''''''' ExA.vb
''''''''''''''''''''
Imports
System
Namespace Rahul
Class Colors
Public
Shared
Sub Main()
Dim UrColor
As
New UrChoice
'Overwriting your
favourite color to yellow
UrColor.Color = "Yellow"
Console.WriteLine(("Your favourite color is " +
UrColor.Color))
End
Sub
'Main
End
Class
'Colors
Public
Class UrChoice
' Want to provide the
access to everybody.
Public
Color As
String
' Default
Constructor setting up your favourite color
Public
Sub
New()
Color = "White"
End
Sub
'New
End
Class
'UrChoice
End
Namespace
'Rahul
Compile the program as: vbc ExA.vb.
Now type ExA and press enter
(return) key...
Output is: Your favorite color
is Yellow.
In Example 'A', I have declared
two classes in Rahul namspace:
One is UrChoice (as the names
are self explanatory) is talking about your choice, not
all of your choices but here we are discussing about
your favorite color and you have fixed your favorite
color as "White" (Just for an instance). Now everybody
is free to know about your favorite color and he can
tell others about your choice.
But there is a problem!
Somebody has changed the value
of your favorite color and now your favorite color is
Yellow.
Hey! That's cheating!!!!
Yes! Of course but is there any
way to protect your variable or your choice?
Here comes the turn of
properties.
Properties are like normal
variables but with more power and flexibility.
Now we convert the color
variable in a property with the same name.
Example B:
'''''''''''''' ExB.vb
'''''''''''''
Imports
System
Namespace Rahul
Class Colors
Public
Shared
Sub Main()
Dim UrColor
As
New UrChoice
'Overwriting your
favourite color to yellow
UrColor.Color = "Yellow"
Console.WriteLine(("Your favourite color is " +
UrColor.Color))
End
Sub
'Main
End
Class
'Colors
Public
Class UrChoice
' your private variable
to store your favourite color
Private
MyColor As
String
' Defining
property, Want to provide the access to everybody.
Public
ReadOnly
Property Color()
As
String
Get
Return MyColor
End
Get
End Property
' Default
Constructor setting up your favourite color
Public
Sub
New()
MyColor = "White"
End
Sub
'New
End
Class
'UrChoice
End
Namespace
'Rahul
This time we didn't define color variable as a normal
variable rather we defined a property named Color.
But in this case we had to
define a new variable MyColor to store the initial and
right value of your favorite color (also making it
private to hide it from outside world).
This time when we try to
compile our program as: vbc ExB.vb.
We get an error:
Property or indexer 'Rahul.UrChoice.Color'
can not be assigned to -- it is read only.
So, we got actually what we wanted. Now if somebody
tries to modify your favorite color, he can not do this.
If we discuss the syntax of the
property, this is really very easy.
Decide a name to the property
that can reflect its use and the Data Type of the
property and start with the braces, Like in our example:
' Declaring its scope as public
so that everybody can use it.
' Data Type is string
Public WriteOnly ReadOnly
Property Color() As String
End Property
Property or indexer declaration must contain at least
one accessorNow put the value of the variable in the
return statement of the get block, so that somebody can
only get the value but can not write the value to the
property. In our example:
Public ReadOnly
Property Color()
As
String
Get
Return MyColor
End
Get
End Property
That's it!!!
Can we do the same security of
our data by some other means....
Yes! I'll be discussing another method to do the same
thing in the PART 2 of this series and also about the
"set" block of a property, so that we can make a
variable in which everybody can write but can not read.
Hey! This is not all about
properties, there is a lot...
Something more than this!
Will continue in PART 2....