সি শার্প (C#) প্রোগ্রামিং ভাষায় অ্যাক্সেস মডিফায়ারস ব্যবহার করে ক্লাস, মেথড, এবং ভেরিয়েবলের অ্যাক্সেস নিয়ন্ত্রণ করা হয়। অ্যাক্সেস মডিফায়ারস নির্ধারণ করে একটি প্রোগ্রামের কোন অংশে কোন সদস্য (মেথড, প্রোপার্টি, ইত্যাদি) অ্যাক্সেসযোগ্য হবে। এতে মূলত private, public, protected, এবং internal অ্যাক্সেস মডিফায়ারস রয়েছে।
১. public
public মডিফায়ার দ্বারা সংজ্ঞায়িত কোনো ক্লাস, মেথড, বা প্রোপার্টি সব জায়গা থেকে অ্যাক্সেসযোগ্য। এটি সর্বোচ্চ স্তরের অ্যাক্সেস প্রদান করে।
public class Person
{
public string Name; // Public property
public void DisplayInfo() // Public method
{
Console.WriteLine("Name: " + Name);
}
}
- ব্যবহার: ক্লাস বা মেথডকে সব জায়গা থেকে অ্যাক্সেসযোগ্য করতে
publicব্যবহার করা হয়। - অ্যাক্সেস: প্রোগ্রামের সকল অংশ থেকে অ্যাক্সেসযোগ্য।
২. private
private মডিফায়ার ব্যবহার করে সংজ্ঞায়িত কোনো ফিল্ড, প্রোপার্টি বা মেথড শুধুমাত্র সেই ক্লাসের ভিতরে অ্যাক্সেসযোগ্য। এটি সর্বনিম্ন স্তরের অ্যাক্সেস প্রদান করে।
public class Person
{
private string name; // Private property
public void SetName(string name) // Public method to set private property
{
this.name = name;
}
public void DisplayInfo() // Public method to display private property
{
Console.WriteLine("Name: " + name);
}
}
- ব্যবহার: অভ্যন্তরীণ ব্যবহারের জন্য এবং ডেটা এনক্যাপসুলেশন নিশ্চিত করতে।
- অ্যাক্সেস: শুধুমাত্র সেই ক্লাসের মধ্যে সীমাবদ্ধ।
৩. protected
protected মডিফায়ার ব্যবহার করে সংজ্ঞায়িত কোনো মেম্বার শুধুমাত্র সেই ক্লাস এবং তার ইনহেরিটেড (derived) ক্লাসগুলিতে অ্যাক্সেসযোগ্য।
public class Person
{
protected string Name; // Protected property
public void SetName(string name)
{
Name = name;
}
}
public class Employee : Person
{
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name); // Accessing protected property from derived class
}
}
- ব্যবহার: বেস ক্লাস এবং ডেরাইভড ক্লাসের মধ্যে তথ্য শেয়ার করতে।
- অ্যাক্সেস: সেই ক্লাস এবং ইনহেরিটেড (derived) ক্লাসগুলোতে সীমাবদ্ধ।
৪. internal
internal মডিফায়ার ব্যবহার করে সংজ্ঞায়িত কোনো মেম্বার শুধুমাত্র সেই অ্যাসেম্বলি বা প্রোজেক্টের মধ্যে অ্যাক্সেসযোগ্য। এটি সাধারণত একই প্রোজেক্ট বা অ্যাসেম্বলি থেকে কোড শেয়ারিংয়ের জন্য ব্যবহৃত হয়।
internal class Person
{
internal string Name; // Internal property
internal void DisplayInfo() // Internal method
{
Console.WriteLine("Name: " + Name);
}
}
- ব্যবহার: একটি অ্যাসেম্বলি বা প্রোজেক্টের ভিতরে তথ্য শেয়ার করতে।
- অ্যাক্সেস: একই অ্যাসেম্বলি বা প্রোজেকল থেকে অ্যাক্সেসযোগ্য।
৫. protected internal
protected internal একটি কম্বাইন্ড মডিফায়ার যা সেই ক্লাসের মধ্যে, একই অ্যাসেম্বলি থেকে এবং ইনহেরিটেড (derived) ক্লাস থেকে অ্যাক্সেসযোগ্য।
public class Person
{
protected internal string Name; // Protected internal property
}
- ব্যবহার: একসাথে
protectedএবংinternalঅ্যাক্সেস নিশ্চিত করতে। - অ্যাক্সেস: একই অ্যাসেম্বলি বা ইনহেরিটেড ক্লাস থেকে।
উদাহরণ প্রোগ্রাম: বিভিন্ন অ্যাক্সেস মডিফায়ারের ব্যবহার
using System;
namespace AccessModifiersExample
{
public class Person
{
// Private field
private string name;
// Public property
public int Age { get; set; }
// Internal method
internal void SetName(string name)
{
this.name = name;
}
// Protected method
protected void DisplayName()
{
Console.WriteLine("Name: " + name);
}
// Public method
public void ShowAge()
{
Console.WriteLine("Age: " + Age);
}
}
public class Employee : Person
{
public void ShowInfo()
{
// Calling protected method from base class
DisplayName();
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Age = 25;
person.ShowAge();
Employee employee = new Employee();
employee.SetName("Alice");
employee.ShowInfo();
}
}
}
আউটপুট
Age: 25
Name: Alice
সারসংক্ষেপ
সি শার্পে বিভিন্ন অ্যাক্সেস মডিফায়ার ব্যবহার করে প্রোগ্রামের বিভিন্ন অংশে মেম্বারদের অ্যাক্সেস নিয়ন্ত্রণ করা যায়। public সব জায়গা থেকে অ্যাক্সেসযোগ্য, private শুধুমাত্র সেই ক্লাসের মধ্যে সীমাবদ্ধ, protected বেস এবং ডেরাইভড ক্লাসে অ্যাক্সেসযোগ্য, এবং internal একই অ্যাসেম্বলিতে সীমাবদ্ধ। অ্যাক্সেস মডিফায়ারগুলি সঠিকভাবে ব্যবহার করলে ডেটার নিরাপত্তা এবং এনক্যাপসুলেশন নিশ্চিত করা যায়।