সি শার্প (C#) এ ক্লাস এবং অবজেক্ট অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি মৌলিক ধারণা। ক্লাস হলো একটি ব্লুপ্রিন্ট বা টেমপ্লেট, যা বিভিন্ন বৈশিষ্ট্য (property) এবং পদ্ধতি (method) ধারণ করে। অবজেক্ট হলো সেই ক্লাসের একটি নির্দিষ্ট উদাহরণ বা ইনস্ট্যান্স, যা বাস্তব জীবনের কোনো কিছুর প্রতিনিধিত্ব করে।
ক্লাস (Class)
ক্লাস হলো একটি কাস্টম ডেটা টাইপ যা বৈশিষ্ট্য (ফিল্ড/প্রোপার্টি) এবং আচরণ (মেথড) ধারণ করে। এটি একটি রেফারেন্স টাইপ, এবং এতে শুধুমাত্র ডেটা ধারণ করা হয় না, সেই ডেটার সাথে সম্পর্কিত কার্যক্রমও সংরক্ষিত থাকে।
ক্লাসের গঠন:
class ClassName
{
// ফিল্ড বা প্রোপার্টি
public string PropertyName;
// মেথড বা পদ্ধতি
public void MethodName()
{
// মেথডের কাজ
}
}
উদাহরণ: ক্লাস
class Person
{
// ফিল্ড বা প্রোপার্টি
public string Name;
public int Age;
// মেথড
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
অবজেক্ট (Object)
অবজেক্ট হলো ক্লাসের একটি নির্দিষ্ট ইনস্ট্যান্স। এটি ক্লাসের ভিতরে সংজ্ঞায়িত বৈশিষ্ট্য এবং পদ্ধতির ব্যবহারিক প্রয়োগ করে। একটি ক্লাস থেকে একাধিক অবজেক্ট তৈরি করা যায়, এবং প্রতিটি অবজেক্টের নিজস্ব ডেটা থাকে।
অবজেক্ট তৈরি এবং ব্যবহার
Person person1 = new Person(); // একটি নতুন অবজেক্ট তৈরি
person1.Name = "Alice";
person1.Age = 25;
person1.DisplayInfo();
উপরে Person ক্লাস থেকে person1 অবজেক্ট তৈরি করা হয়েছে। এরপরে অবজেক্টের Name এবং Age প্রোপার্টিতে মান এসাইন করা হয়েছে এবং DisplayInfo মেথডটি কল করা হয়েছে।
ক্লাস এবং অবজেক্টের ব্যবহার উদাহরণ
using System;
namespace ClassAndObjectExample
{
class Person
{
public string Name;
public int Age;
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
class Program
{
static void Main(string[] args)
{
// প্রথম অবজেক্ট তৈরি
Person person1 = new Person();
person1.Name = "Alice";
person1.Age = 25;
person1.DisplayInfo();
// দ্বিতীয় অবজেক্ট তৈরি
Person person2 = new Person();
person2.Name = "Bob";
person2.Age = 30;
person2.DisplayInfo();
}
}
}
আউটপুট
Name: Alice
Age: 25
Name: Bob
Age: 30
ক্লাস এবং অবজেক্টের মূল বৈশিষ্ট্য
- ক্যাপসুলেশন (Encapsulation): ক্লাসে ডেটা এবং মেথড একসঙ্গে অন্তর্ভুক্ত থাকে, যা ডেটার নিরাপত্তা নিশ্চিত করে।
- কোড রিইউজ (Code Reusability): একবার ক্লাস তৈরি করা হলে এটি বিভিন্ন স্থানে ব্যবহার করা যায় এবং একাধিক অবজেক্ট তৈরি করা যায়।
- বৈশিষ্ট্য এবং কার্যক্রম: ক্লাসে বৈশিষ্ট্য এবং কার্যক্রম সংজ্ঞায়িত করা যায়, যা অবজেক্টের জন্য নির্দিষ্ট হয়।
কনস্ট্রাক্টর (Constructor)
ক্লাসে কনস্ট্রাক্টর একটি বিশেষ মেথড যা অবজেক্ট তৈরি করার সময় ইনিশিয়ালাইজেশনের কাজ করে। কনস্ট্রাক্টরের নাম অবশ্যই ক্লাসের নামের মতো হতে হবে এবং এতে কোনো রিটার্ন টাইপ থাকে না।
উদাহরণ: কনস্ট্রাক্টর ব্যবহার
class Person
{
public string Name;
public int Age;
// কনস্ট্রাক্টর
public Person(string name, int age)
{
Name = name;
Age = age;
}
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
class Program
{
static void Main(string[] args)
{
// কনস্ট্রাক্টরের মাধ্যমে অবজেক্ট ইনিশিয়ালাইজ করা
Person person1 = new Person("Alice", 25);
person1.DisplayInfo();
}
}
আউটপুট
Name: Alice
Age: 25
সারসংক্ষেপ
সি শার্পে ক্লাস এবং অবজেক্ট অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের গুরুত্বপূর্ণ ভিত্তি। ক্লাস হলো ডেটা এবং ফাংশনের একটি ব্লুপ্রিন্ট বা টেমপ্লেট, যা বিভিন্ন বৈশিষ্ট্য এবং মেথড ধারণ করে। অবজেক্ট হলো ক্লাসের একটি নির্দিষ্ট উদাহরণ, যার মাধ্যমে ক্লাসে সংজ্ঞায়িত বৈশিষ্ট্য এবং মেথড ব্যবহার করা যায়।
ক্লাস হলো অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর একটি মৌলিক কাঠামো, যা ডেটা এবং মেথড (ফাংশন) ধারণ করে। ক্লাস হলো একধরনের টেমপ্লেট বা ব্লুপ্রিন্ট, যার মাধ্যমে অবজেক্ট তৈরি করা যায়। C# এ একটি ক্লাস ডেটা ফিল্ড এবং মেথড ধারণ করে, যা কোনো নির্দিষ্ট কার্য সম্পাদন করতে ব্যবহৃত হয়। ক্লাস ব্যবহার করে কোডকে সহজে পুনরায় ব্যবহারযোগ্য, পরিচালনাযোগ্য এবং মডুলার করা যায়।
ক্লাসের গঠন
C# এ একটি সাধারণ ক্লাসের গঠন নিম্নরূপ:
class ClassName
{
// ফিল্ড (ডেটা সদস্য)
// প্রোপার্টি
// মেথড (ফাংশন)
}
- ফিল্ড: ক্লাসের বৈশিষ্ট্য বা ডেটা ধারণ করে।
- প্রোপার্টি: ফিল্ডের মান সেট ও পড়তে ব্যবহৃত হয়।
- মেথড: ক্লাসের ক্রিয়াকলাপ বা কাজ সম্পন্ন করে।
উদাহরণ: ক্লাস তৈরি এবং ব্যবহার
নিচে একটি সাধারণ ক্লাস "Person" তৈরি করা হয়েছে, যেখানে ব্যক্তির নাম এবং বয়স ধারণ করার জন্য ফিল্ড রয়েছে এবং একটি মেথড রয়েছে যা ব্যক্তির তথ্য প্রদর্শন করে।
using System;
namespace ClassExample
{
// ক্লাস ডিক্লেয়ারেশন
class Person
{
// ফিল্ড
public string Name;
public int Age;
// মেথড
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
class Program
{
static void Main(string[] args)
{
// অবজেক্ট তৈরি
Person person1 = new Person();
person1.Name = "Alice";
person1.Age = 25;
// মেথড কল
person1.DisplayInfo();
}
}
}
আউটপুট
Name: Alice
Age: 25
ক্লাসের বিভিন্ন অংশ
১. ফিল্ড (Field)
ফিল্ড হলো ক্লাসের ডেটা সদস্য, যা ক্লাসের মধ্যে ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। উপরের উদাহরণে, Name এবং Age হলো Person ক্লাসের ফিল্ড।
২. প্রোপার্টি (Property)
প্রোপার্টি একটি ফিল্ডের মান পড়া এবং সেট করার জন্য ব্যবহৃত হয়। এতে সাধারণত get এবং set অ্যাক্সেসর থাকে।
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
৩. মেথড (Method)
মেথড হলো ক্লাসের একটি ফাংশন, যা নির্দিষ্ট কাজ সম্পাদন করে। উপরের উদাহরণে, DisplayInfo হলো একটি মেথড, যা Name এবং Age প্রিন্ট করে।
৪. কন্সট্রাক্টর (Constructor)
কন্সট্রাক্টর হলো একটি বিশেষ মেথড, যা অবজেক্ট তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের ফিল্ডগুলোর প্রাথমিক মান নির্ধারণ করতে ব্যবহৃত হয়।
class Person
{
public string Name;
public int Age;
// কন্সট্রাক্টর
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
উদাহরণ: কন্সট্রাক্টর ব্যবহার করে অবজেক্ট তৈরি
class Program
{
static void Main(string[] args)
{
// কন্সট্রাক্টর ব্যবহার করে অবজেক্ট তৈরি
Person person2 = new Person("Bob", 30);
person2.DisplayInfo();
}
}
আউটপুট
Name: Bob
Age: 30
ক্লাসের ব্যবহার
১. ডেটা সংগঠিত করা: ক্লাস বিভিন্ন ডেটা ফিল্ডের মাধ্যমে ডেটাকে সুসংগঠিত রাখতে সাহায্য করে।
২. কোড পুনরায় ব্যবহারযোগ্য করা: একবার ক্লাস তৈরি করলে, তা থেকে একাধিক অবজেক্ট তৈরি করা যায়। ফলে কোড পুনরায় ব্যবহারযোগ্য হয়।
৩. মডুলার প্রোগ্রামিং: ক্লাস কোডকে ছোট ছোট অংশে বিভক্ত করে, যা প্রোগ্রামের পড়া এবং রক্ষণাবেক্ষণ সহজ করে।
সারসংক্ষেপ
সি শার্পে (C#) ক্লাস হলো এমন একটি কাঠামো যা ডেটা এবং মেথড ধারণ করে এবং অবজেক্ট তৈরি করতে ব্যবহৃত হয়। ক্লাস প্রোগ্রামের কোডকে সহজে ব্যবস্থাপনা এবং পুনরায় ব্যবহারযোগ্য করে তোলে। এর মাধ্যমে ডেটা ফিল্ড, প্রোপার্টি, মেথড এবং কন্সট্রাক্টর ব্যবহার করে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের সুবিধা নেওয়া যায়।
সি শার্পে (C#) অবজেক্ট তৈরি এবং ইনিশিয়ালাইজেশন করা হয় new কীওয়ার্ড ব্যবহার করে। যখন আমরা একটি ক্লাসের অবজেক্ট তৈরি করি, তখন সেই ক্লাসের ফিল্ড বা প্রোপার্টিতে মান এসাইন করা যায় এবং মেথডগুলো অ্যাক্সেস করা যায়। অবজেক্ট তৈরি করার সময় আমরা কনস্ট্রাক্টরের মাধ্যমে সেটির ইনিশিয়ালাইজেশনও করতে পারি।
অবজেক্ট তৈরি এবং ইনিশিয়ালাইজেশন
অবজেক্ট তৈরি করার সময় আমরা new কীওয়ার্ড ব্যবহার করে একটি নির্দিষ্ট ক্লাসের নতুন ইনস্ট্যান্স তৈরি করি। নিচে উদাহরণসহ অবজেক্ট তৈরি এবং ইনিশিয়ালাইজেশনের প্রক্রিয়া আলোচনা করা হলো।
উদাহরণ ক্লাস: Person
class Person
{
// ফিল্ড বা প্রোপার্টি
public string Name;
public int Age;
// মেথড
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
উপরের উদাহরণে একটি Person ক্লাস তৈরি করা হয়েছে, যার দুটি প্রোপার্টি (Name এবং Age) এবং একটি মেথড (DisplayInfo) রয়েছে।
অবজেক্ট তৈরি এবং প্রোপার্টি ইনিশিয়ালাইজেশন
১. অবজেক্ট তৈরি করে আলাদাভাবে প্রোপার্টি ইনিশিয়ালাইজ করা
// অবজেক্ট তৈরি
Person person1 = new Person();
// প্রোপার্টি ইনিশিয়ালাইজ
person1.Name = "Alice";
person1.Age = 25;
// মেথড কল
person1.DisplayInfo();
এখানে প্রথমে একটি অবজেক্ট person1 তৈরি করা হয়েছে, তারপর Name এবং Age প্রোপার্টিগুলো আলাদাভাবে ইনিশিয়ালাইজ করা হয়েছে।
২. অবজেক্ট ইনিশিয়ালাইজার ব্যবহার করে অবজেক্ট তৈরি এবং ইনিশিয়ালাইজেশন
সি শার্পে অবজেক্ট ইনিশিয়ালাইজার সিনট্যাক্স ব্যবহার করে এক লাইনে অবজেক্টের প্রোপার্টি ইনিশিয়ালাইজ করা যায়।
Person person2 = new Person { Name = "Bob", Age = 30 };
person2.DisplayInfo();
এখানে new Person এর পরে { Name = "Bob", Age = 30 } অংশটি অবজেক্ট ইনিশিয়ালাইজারের মাধ্যমে Name এবং Age প্রোপার্টির মান নির্ধারণ করে।
কনস্ট্রাক্টর ব্যবহার করে অবজেক্ট ইনিশিয়ালাইজেশন
ক্লাসে কনস্ট্রাক্টর যোগ করলে অবজেক্ট তৈরি করার সময় সরাসরি প্রোপার্টির মান প্রদান করা যায়। কনস্ট্রাক্টর হলো একটি বিশেষ মেথড যা অবজেক্ট তৈরি করার সময় প্রথমবারের মতো চালু হয়।
class Person
{
public string Name;
public int Age;
// কনস্ট্রাক্টর
public Person(string name, int age)
{
Name = name;
Age = age;
}
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
class Program
{
static void Main(string[] args)
{
// কনস্ট্রাক্টরের মাধ্যমে অবজেক্ট ইনিশিয়ালাইজ করা
Person person3 = new Person("Charlie", 35);
person3.DisplayInfo();
}
}
এখানে Person ক্লাসে একটি কনস্ট্রাক্টর যোগ করা হয়েছে, যা অবজেক্ট তৈরি করার সময় Name এবং Age এর মান সেট করে। person3 অবজেক্ট তৈরি করার সময় সরাসরি কনস্ট্রাক্টরের মাধ্যমে প্রোপার্টি ইনিশিয়ালাইজ করা হয়েছে।
উদাহরণ প্রোগ্রাম: অবজেক্ট তৈরি এবং ইনিশিয়ালাইজেশন
csharp
using System;
namespace ObjectInitializationExample
{
class Person
{
public string Name;
public int Age;
public Person(string name, int age) // কনস্ট্রাক্টর
{
Name = name;
Age = age;
}
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
class Program
{
static void Main(string[] args)
{
// অবজেক্ট ইনিশিয়ালাইজার ব্যবহার
Person person1 = new Person("Alice", 25);
person1.DisplayInfo();
// অবজেক্ট ইনিশিয়ালাইজার সহ অন্য অবজেক্ট
Person person2 = new Person("Bob", 30);
person2.DisplayInfo();
}
}
}
আউটপুট
Name: Alice
Age: 25
Name: Bob
Age: 30
সারসংক্ষেপ
সি শার্পে অবজেক্ট তৈরি এবং ইনিশিয়ালাইজেশন বিভিন্নভাবে করা যায়। new কীওয়ার্ড ব্যবহার করে অবজেক্ট তৈরি করা হয় এবং ইনিশিয়ালাইজেশন করা যেতে পারে প্রোপার্টির মান সরাসরি এসাইন করে, অবজেক্ট ইনিশিয়ালাইজার সিনট্যাক্স ব্যবহার করে, অথবা কনস্ট্রাক্টর ব্যবহার করে। কনস্ট্রাক্টর ব্যবহার করলে অবজেক্ট তৈরি করার সময় প্রাথমিক মান প্রদান করা যায় এবং এটি প্রোগ্রামের কার্যকারিতা সহজ করে তোলে।
প্রোপার্টিজ (Properties) এবং মেথড (Methods) সি শার্প (C#) ক্লাসের দুটি গুরুত্বপূর্ণ উপাদান, যা ক্লাসের ডেটা অ্যাক্সেস ও পরিচালনা করতে সহায়ক।
প্রোপার্টিজ (Properties)
প্রোপার্টি হলো ক্লাসের ডেটা মেম্বারের মান পড়া এবং সেট করার জন্য ব্যবহৃত এক ধরনের মেম্বার। এটি একটি ফিল্ডের মতো কাজ করে, তবে সরাসরি ডেটা অ্যাক্সেসের পরিবর্তে get এবং set অ্যাক্সেসর ব্যবহার করে ডেটা নিয়ন্ত্রণ করে। প্রোপার্টিজ একটি ক্লাসের ফিল্ডের জন্য সুরক্ষা প্রদান করে এবং প্রয়োজনমতো মান যাচাই করতে সহায়ক।
প্রোপার্টিজের গঠন
csharp
Copy code
class ClassName
{
private ডেটা_টাইপ ফিল্ড_নাম; // Private field
public ডেটা_টাইপ প্রোপার্টি_নাম
{
get { return ফিল্ড_নাম; }
set { ফিল্ড_নাম = value; }
}
}
- get অ্যাক্সেসর: ফিল্ডের মান পড়তে ব্যবহৃত হয়।
- set অ্যাক্সেসর: ফিল্ডের মান সেট করতে ব্যবহৃত হয়।
valueকীওয়ার্ড দিয়ে প্রোপার্টিতে সেট করা মান বোঝানো হয়।
উদাহরণ: প্রোপার্টি ব্যবহার
class Person
{
private string name; // Private field
// প্রোপার্টি
public string Name
{
get { return name; }
set { name = value; }
}
}
প্রোপার্টি ব্যবহার করে অবজেক্ট তৈরি
Person person = new Person();
person.Name = "Alice"; // প্রোপার্টির মাধ্যমে মান সেট করা
Console.WriteLine(person.Name); // Output: Alice
অটোমেটিক প্রোপার্টিজ (Automatic Properties)
সি শার্পে অটোমেটিক প্রোপার্টিজ ব্যবহারের সুবিধা রয়েছে, যেখানে ফিল্ড ডিক্লেয়ার করার প্রয়োজন হয় না। এটি দ্রুত প্রোপার্টি তৈরি করতে সহায়ক।
class Person
{
public string Name { get; set; } // Automatic Property
}
মেথড (Methods)
মেথড হলো ক্লাসের এমন একটি ফাংশন, যা নির্দিষ্ট কার্য সম্পাদন করে। মেথড সাধারণত ক্লাসের ফিল্ড বা প্রোপার্টির মান নিয়ে কাজ করে এবং প্রয়োজন অনুযায়ী মান রিটার্ন করতে পারে। মেথড একটি নির্দিষ্ট কাজ সম্পন্ন করে এবং প্রোগ্রামিংয়ে কোডকে মডুলার করতে সাহায্য করে।
মেথডের গঠন
class ClassName
{
public রিটার্ন_টাইপ মেথড_নাম(প্যারামিটার_লিস্ট)
{
// কোড ব্লক
return মান; // (যদি রিটার্ন টাইপ void না হয়)
}
}
- রিটার্ন টাইপ: মেথডের ফলাফলের ডেটা টাইপ নির্ধারণ করে।
- মেথড নাম: মেথডকে চিহ্নিত করে, যা সাধারণত কার্য বুঝতে সহায়ক।
- প্যারামিটার লিস্ট: মেথডে প্রয়োজনীয় ইনপুট ডেটা প্রদান করে।
- return: মেথড থেকে মান ফেরত দিতে ব্যবহৃত হয় (যদি রিটার্ন টাইপ
voidনা হয়)।
উদাহরণ: মেথড ব্যবহার
class Calculator
{
// যোগফল নির্ণয় করার মেথড
public int Add(int a, int b)
{
return a + b;
}
// ফলাফল প্রদর্শনের মেথড
public void DisplayResult(int result)
{
Console.WriteLine("Result: " + result);
}
}
মেথড ব্যবহার করে অবজেক্ট তৈরি এবং কল করা
Calculator calculator = new Calculator();
int sum = calculator.Add(10, 20);
calculator.DisplayResult(sum); // Output: Result: 30
প্রোপার্টি এবং মেথডের ব্যবহার
উদাহরণ: প্রোপার্টি ও মেথড ব্যবহার করে ক্লাসের কার্যক্রম পরিচালনা
class Person
{
// ফিল্ড এবং প্রোপার্টি
private int age;
public string Name { get; set; }
public int Age
{
get { return age; }
set
{
if (value >= 0) // বয়স নেগেটিভ না নিশ্চিত করার জন্য
age = value;
else
Console.WriteLine("Age cannot be negative.");
}
}
// মেথড
public void DisplayInfo()
{
Console.WriteLine("Name: " + Name);
Console.WriteLine("Age: " + Age);
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "Alice";
person.Age = 25;
person.DisplayInfo();
}
}
আউটপুট
Name: Alice
Age: 25
সারসংক্ষেপ
- প্রোপার্টিজ (Properties): ক্লাসের ফিল্ডে ডেটা পড়া ও সেট করার জন্য ব্যবহৃত হয়। এটি
getএবংsetঅ্যাক্সেসরের মাধ্যমে ডেটা নিয়ন্ত্রণ করে। - মেথড (Methods): একটি ক্লাসের কাজ সম্পন্ন করে, যেমন ফিল্ড ও প্রোপার্টির উপর নির্দিষ্ট কাজ করা এবং প্রয়োজন অনুযায়ী মান রিটার্ন করা।
প্রোপার্টিজ এবং মেথডের মাধ্যমে C# এ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংকে কার্যকরভাবে পরিচালনা করা যায়।
সি শার্প (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 একই অ্যাসেম্বলিতে সীমাবদ্ধ। অ্যাক্সেস মডিফায়ারগুলি সঠিকভাবে ব্যবহার করলে ডেটার নিরাপত্তা এবং এনক্যাপসুলেশন নিশ্চিত করা যায়।
Read more