এনক্যাপসুলেশনের ব্যবহার :
C# এনক্যাপসুলেশনের ব্যবহার :
C# এ কয়েক ভাবে এনক্যাপসুলেশন করা হয়ে থাকে যেমন –
মেথড এর ব্যবহার করে (২০০৭ এর পূর্বে):
মেথড ব্যবহার করে প্রাইভেট ফিল্ড একসেস ও মোডিফাই করতে পারেন যা আপনার ফিল্ডের এক্সেস নিয়ন্ত্রণ করতে এবং প্রয়োজনীয় বিসনেস লজিক ও ভ্যালিডেশন প্রয়োগে অনুমতি প্রদান করে।
Link : https://dotnetfiddle.net/A8JSes
using System;
public class Program
{
public class Customer
{
private string name;
public string GetName()
{
return name;
}
public void SetName(string value)
{
name = value;
}
}
public static void Main()
{
// Can access Name through the GetName Method
Customer customer = new Customer();
customer.SetName(“Azad”);
Console.WriteLine(customer.GetName());
}
}
সাধারণত ওওপি (OOP) প্রোগ্রামিং ল্যাঙ্গুয়েজে getter/setter এভাবেই ব্যবহার করা হয়।
সাধারণত গেটার (getter) সেটার (setter) তৈরি করার জন্য
- Getter : গেট (Get) দিয়ে ফিল্ডের নাম (GetFieldName) , E.g. GetName
- Setter: সেটার তৈরি জন্য সেট দিয়ে ফিল্ডের নাম (SetFieldName), E.g. SetName
২০০৭ এর আগে সাধারণত এভাবেই গেটার (getter) / সেটার (setter) তৈরি করা হত । কিন্তু এর পরে C# এ প্রপার্টি নামে একটি ফিচার এড করা হয় এই প্রপার্টি ফিচারটা নিয়ে আমরা নিচে কথা বলব। এই প্রপার্টি ফিচারটা সাধারণত এই গেটার (getter) / সেটার (setter) মেথডকে একটু সংক্ষিপ্ত করে এবং সহজ করে।
প্রপার্টিস এর ব্যবহার করে:
যার মধ্যমে ফিল্ড এর এক্সেস কন্ট্রোল করার অনুমতি দিবে ও আপনি এর ভ্যালুতে সহজ এবং সুবিধাজনক ভাবে এক্সেস করতে পারবেন
Link : https://dotnetfiddle.net/3M6Dln
using System;
public class Program
{
public class Customer
{
private string name; // field / backing field
// C# property
public string Name
{
get
{
return name;
}
set
{
// Check if the name is empty or null
if (string.IsNullOrEmpty(value))
{
// Throw an exception with a message
throw new ArgumentNullException(“Name cannot be empty or null”);
}
name = value;
}
}
// C# Auto property, doesn’t require, backing field
public string DateOfBirth { get; set; }
}
public static void Main()
{
// Can access Name through the name property
Customer customer = new Customer();
customer.Name = “Azad”;
Console.WriteLine(customer.Name);
customer.Name = string.Empty; // it will throw exception with stacktrace, example in the output
}
}
Azad Run-time exception (line 22): Value cannot be null. Parameter name: Name cannot be empty or null Stack Trace: [System.ArgumentNullException: Value cannot be null. Parameter name: Name cannot be empty or null] at Program.Customer.set_Name(String value) :line 22 at Program.Main() :line 39
JAVA এনক্যাপসুলেশনের ব্যবহার:
মেথড এর ব্যবহার করে:
Link: http://tpcg.io/_I28ITR
public class Program {
public static void main(String[] args) {
Customer customer = new Customer();
customer.setName(“Azad”);
System.out.println(customer.getName());
}
public class Customer {
private String name;
public String getName() {
return name;
}
public void setName(String value) {
name = value;
}
}
}
এনক্যাপসুলেশন মূলত আমাদের সুবিধাগুলো দেয় সেটাকে আমরা একটি ফিগারের মাধ্যমে বোঝার চেষ্টা করি।
- Data Hiding (Encapsulation is not directing information hiding but encapsulating fields)
- Restrict
- Data Validation