VB.Net-এ Property Getters এবং Setters
Property Getters এবং Setters হল Encapsulation ধারণার অংশ, যা একটি ক্লাসের ভিতরের ডেটা (ফিল্ড) এর অ্যাক্সেস এবং নিয়ন্ত্রণ করতে ব্যবহৃত হয়। Properties হলো পাবলিক ফিল্ডের মতো, তবে এগুলোর মাধ্যমে ডেটার অ্যাক্সেস এবং পরিবর্তন সীমিত করা যায়। Property-এর মাধ্যমে আপনি একটি ক্লাসের প্রাইভেট ফিল্ডের মানের অ্যাক্সেস এবং পরিবর্তন নিয়ন্ত্রণ করতে পারেন।
Property Getters এবং Setters-এর কাজ:
- Getter: একটি ফিল্ডের মান (value) পড়ার জন্য ব্যবহৃত হয়।
- Setter: একটি ফিল্ডের মান (value) সেট বা পরিবর্তন করার জন্য ব্যবহৃত হয়।
Property Syntax:
Public Property PropertyName() As DataType
Get
' Return the value of the field
End Get
Set(value As DataType)
' Set the value of the field
End Set
End PropertyGet: এটি প্রপার্টি থেকে মান ফেরত দেয়। সাধারণত এটি ফিল্ডের মান ফেরত দেয়।Set: এটি প্রপার্টিতে নতুন মান সেট করতে ব্যবহৃত হয়।valueকীওয়ার্ড দিয়ে নতুন মানটি ধরে রাখা হয়।
Property Example with Getter and Setter:
Public Class Person
' Private fields
Private _name As String
Private _age As Integer
' Property for Name with Getter and Setter
Public Property Name() As String
Get
Return _name
End Get
Set(value As String)
_name = value
End Set
End Property
' Property for Age with Getter and Setter
Public Property Age() As Integer
Get
Return _age
End Get
Set(value As Integer)
If value >= 0 Then
_age = value
Else
Console.WriteLine("Age cannot be negative.")
End If
End Set
End Property
End Class
Sub Main()
' Create an object of the Person class
Dim person As New Person()
' Use the setter to set values
person.Name = "John"
person.Age = 25
' Use the getter to retrieve values
Console.WriteLine("Name: " & person.Name)
Console.WriteLine("Age: " & person.Age)
End Subব্যাখ্যা:
NameএবংAgeপ্রপার্টি তৈরি করা হয়েছে।Nameপ্রপার্টি একটি স্ট্রিং মান ধারণ করে এবংAgeপ্রপার্টি একটি পূর্ণসংখ্যা (Integer) ধারণ করে।- Setter:
NameএবংAgeএর মান সেট করার জন্য ব্যবহৃত হয়।Ageপ্রপার্টিতে, একটি চেক করা হয়েছে যাতেvalueকখনো নেতিবাচক (negative) না হয়। - Getter:
NameএবংAgeএর মান প্রাপ্তি (retrieve) করতে ব্যবহৃত হয়।
Property with Read-Only and Write-Only
আপনি প্রপার্টি তৈরির সময় শুধুমাত্র Getter অথবা Setter প্রদান করতে পারেন, অর্থাৎ আপনি Read-Only বা Write-Only প্রপার্টি তৈরি করতে পারেন।
1. Read-Only Property (শুধুমাত্র Getter):
Public Class Person
Private _name As String
' Read-only Property (Only Getter)
Public ReadOnly Property Name() As String
Get
Return _name
End Get
End Property
' Constructor to set name
Public Sub New(name As String)
_name = name
End Sub
End Classএখানে, Name প্রপার্টি শুধুমাত্র Get এর মাধ্যমে অ্যাক্সেস করা যাবে, এবং এটি শুধুমাত্র পাঠযোগ্য (read-only) হবে।
2. Write-Only Property (শুধুমাত্র Setter):
Public Class Person
Private _password As String
' Write-only Property (Only Setter)
Public WriteOnly Property Password() As String
Set(value As String)
_password = value
End Set
End Property
End Classএখানে, Password প্রপার্টি শুধুমাত্র Set এর মাধ্যমে মান পরিবর্তন করা যাবে এবং এটি লেখার জন্যই ব্যবহৃত হবে (write-only)।
Automatic Properties (অটোমেটিক প্রপার্টি)
যখন আপনি খুব সাধারণ প্রপার্টি তৈরি করতে চান এবং Getter এবং Setter এর মধ্যে কোনো অতিরিক্ত লজিক না রাখতে চান, তখন আপনি Automatic Properties ব্যবহার করতে পারেন। এটি VB.Net-এ কোড কমপ্যাক্ট এবং পরিষ্কার রাখে।
Public Class Person
' Automatic Property
Public Property Name As String
Public Property Age As Integer
End Classএখানে, VB.Net স্বয়ংক্রিয়ভাবে একটি ব্যাক-এন্ড ফিল্ড তৈরি করবে এবং Getter, Setter এর কাজ করবে। অর্থাৎ, আপনাকে আলাদাভাবে _name বা _age ফিল্ড ডিক্লেয়ার করতে হবে না।
Property Method Overloading
আপনি প্রপার্টির জন্য একাধিক Get বা Set মেথডও তৈরি করতে পারেন (প্যারামিটারাইজড), যা Method Overloading নামে পরিচিত। এটি একাধিক প্রপার্টি মেথডের জন্য বিভিন্ন প্যারামিটার নেওয়ার সুযোগ দেয়।
Public Class Person
Private _name As String
' Overloaded Setter with different parameters
Public Property Name() As String
Get
Return _name
End Get
Set(value As String)
_name = value
End Set
End Property
' Overloaded Setter with integer value (set name as number)
Public Sub SetName(age As Integer)
_name = "Age: " & age.ToString()
End Sub
End Classএখানে, একটি সাধারণ Name প্রপার্টি এবং একটি SetName মেথড রয়েছে, যা age এর মাধ্যমে নাম সেট করে।
সারাংশ
- Getter এবং Setter প্রপার্টি ব্যবহার করে আপনি একটি ক্লাসের প্রাইভেট ফিল্ডের অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন।
- Property ব্যবহার করার মাধ্যমে ডেটার সুরক্ষা নিশ্চিত করা যায় এবং কোডের স্থিতিশীলতা বৃদ্ধি পায়।
- Read-only, Write-only, এবং Automatic Properties ব্যবহার করে প্রপার্টি গঠন করা সহজ হয়।
- আপনি Method Overloading ব্যবহার করে প্রপার্টির জন্য একাধিক প্যারামিটার নিতে পারেন।
এই ধারণাগুলি Encapsulation এর অংশ, যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের একটি মূল অংশ এবং সঠিকভাবে কোডের সুরক্ষা ও গঠন উন্নত করতে সহায়তা করে।
Read more