এনক্যাপসুলেশন এবং ডেটা হাইডিং সি শার্প (C#) এ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এই বৈশিষ্ট্যগুলোর মাধ্যমে প্রোগ্রামের ডেটাকে নিরাপদ রাখা এবং নির্দিষ্ট নিয়ম অনুসারে অ্যাক্সেস নিয়ন্ত্রণ করা সম্ভব হয়।
এনক্যাপসুলেশন হলো একটি প্রক্রিয়া, যার মাধ্যমে ডেটা এবং মেথডকে একটি ক্লাসের মধ্যে বাঁধা হয়। এটি ডেটা এবং কার্যকলাপকে একটি সত্তা হিসেবে রাখে এবং বাইরের অংশ থেকে সরাসরি অ্যাক্সেস রোধ করে। ফলে ডেটা অ্যাক্সেস এবং আপডেট করার জন্য নির্দিষ্ট মেথড বা প্রোপার্টি ব্যবহারের প্রয়োজন হয়।
এনক্যাপসুলেশনের মাধ্যমে প্রাইভেট মেম্বারগুলোকে প্রাইভেট রাখা হয় এবং পাবলিক মেথড বা প্রোপার্টির মাধ্যমে ডেটা অ্যাক্সেস করা হয়।
public class Account
{
private double balance; // প্রাইভেট ভেরিয়েবল, সরাসরি অ্যাক্সেসযোগ্য নয়
// ব্যালেন্স চেক করার জন্য একটি পাবলিক মেথড
public double GetBalance()
{
return balance;
}
// ব্যালেন্স সেট করার জন্য একটি পাবলিক মেথড
public void Deposit(double amount)
{
if (amount > 0)
{
balance += amount;
}
}
public void Withdraw(double amount)
{
if (amount > 0 && amount <= balance)
{
balance -= amount;
}
}
}
উপরের উদাহরণে balance
ভেরিয়েবলটি প্রাইভেট রাখা হয়েছে, তাই সরাসরি বাইরের অংশ থেকে সেটি পরিবর্তন করা সম্ভব নয়। Deposit
এবং Withdraw
মেথডের মাধ্যমে balance
এর মান নিয়ন্ত্রিতভাবে পরিবর্তন করা হয়।
ডেটা হাইডিং হলো এমন একটি পদ্ধতি, যার মাধ্যমে প্রাইভেট ডেটা বা প্রোপার্টিকে বাইরের অংশ থেকে লুকিয়ে রাখা হয়। ডেটা হাইডিং এনক্যাপসুলেশনের মাধ্যমে নিশ্চিত করা হয়। প্রাইভেট ডেটা সরাসরি অ্যাক্সেসযোগ্য না হওয়ার কারণে ডেটার নিরাপত্তা নিশ্চিত হয়।
public class Employee
{
private double salary; // প্রাইভেট প্রোপার্টি, বাইরের অংশ থেকে সরাসরি অ্যাক্সেসযোগ্য নয়
// প্রাইভেট ডেটা অ্যাক্সেসের জন্য পাবলিক প্রোপার্টি
public double Salary
{
get { return salary; }
set
{
if (value > 0)
{
salary = value;
}
}
}
}
এখানে salary
প্রাইভেট প্রোপার্টি হিসেবে সংজ্ঞায়িত করা হয়েছে। বাইরের অংশ থেকে সরাসরি salary
অ্যাক্সেসযোগ্য নয়; বরং পাবলিক Salary
প্রোপার্টির মাধ্যমে এই ডেটা নিয়ন্ত্রিতভাবে সেট বা রিটার্ন করা যায়।
using System;
namespace EncapsulationAndDataHidingExample
{
public class Student
{
private string name; // প্রাইভেট ভেরিয়েবল, সরাসরি অ্যাক্সেসযোগ্য নয়
private int age;
// প্রাইভেট ভেরিয়েবলের জন্য পাবলিক প্রোপার্টি
public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set
{
if (value >= 0) // ডেটা যাচাই
{
age = value;
}
}
}
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
class Program
{
static void Main(string[] args)
{
Student student = new Student();
// প্রাইভেট ভেরিয়েবল অ্যাক্সেস না করেই ডেটা সেট
student.Name = "Alice";
student.Age = 20;
student.DisplayInfo();
}
}
}
Name: Alice
Age: 20
বৈশিষ্ট্য | এনক্যাপসুলেশন | ডেটা হাইডিং |
---|---|---|
উদ্দেশ্য | ডেটা এবং মেথডকে একত্রে বাঁধা | ডেটাকে বাইরের অংশ থেকে লুকিয়ে রাখা |
অ্যাক্সেস নিয়ন্ত্রণ | প্রাইভেট এবং পাবলিক মেম্বার ব্যবহার | শুধুমাত্র প্রাইভেট মেম্বার ব্যবহার |
উদাহরণ | প্রাইভেট ভেরিয়েবল ও পাবলিক মেথড | প্রাইভেট প্রোপার্টি বা ভেরিয়েবল |
সি শার্পে এনক্যাপসুলেশন এবং ডেটা হাইডিং প্রোগ্রামের ডেটাকে নিরাপদ রাখতে এবং নিয়ন্ত্রিত অ্যাক্সেস নিশ্চিত করতে সহায়ক। এনক্যাপসুলেশনের মাধ্যমে প্রোগ্রামে ডেটা ও মেথড একত্রে রাখা হয়, আর ডেটা হাইডিং এর মাধ্যমে প্রাইভেট ডেটাকে বাইরের অংশ থেকে লুকিয়ে রাখা যায়। এই ধারণাগুলো প্রোগ্রামিংয়ে নিরাপত্তা এবং কোডের গঠনশীলতা নিশ্চিত করে।
আরও দেখুন...