সি শার্প (C#) এ ক্লাস এবং অবজেক্ট অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর দুটি মৌলিক ধারণা। ক্লাস হলো একটি ব্লুপ্রিন্ট বা টেমপ্লেট, যা বিভিন্ন বৈশিষ্ট্য (property) এবং পদ্ধতি (method) ধারণ করে। অবজেক্ট হলো সেই ক্লাসের একটি নির্দিষ্ট উদাহরণ বা ইনস্ট্যান্স, যা বাস্তব জীবনের কোনো কিছুর প্রতিনিধিত্ব করে।
ক্লাস হলো একটি কাস্টম ডেটা টাইপ যা বৈশিষ্ট্য (ফিল্ড/প্রোপার্টি) এবং আচরণ (মেথড) ধারণ করে। এটি একটি রেফারেন্স টাইপ, এবং এতে শুধুমাত্র ডেটা ধারণ করা হয় না, সেই ডেটার সাথে সম্পর্কিত কার্যক্রমও সংরক্ষিত থাকে।
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);
}
}
অবজেক্ট হলো ক্লাসের একটি নির্দিষ্ট ইনস্ট্যান্স। এটি ক্লাসের ভিতরে সংজ্ঞায়িত বৈশিষ্ট্য এবং পদ্ধতির ব্যবহারিক প্রয়োগ করে। একটি ক্লাস থেকে একাধিক অবজেক্ট তৈরি করা যায়, এবং প্রতিটি অবজেক্টের নিজস্ব ডেটা থাকে।
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
ক্লাসে কনস্ট্রাক্টর একটি বিশেষ মেথড যা অবজেক্ট তৈরি করার সময় ইনিশিয়ালাইজেশনের কাজ করে। কনস্ট্রাক্টরের নাম অবশ্যই ক্লাসের নামের মতো হতে হবে এবং এতে কোনো রিটার্ন টাইপ থাকে না।
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
ফিল্ড হলো ক্লাসের ডেটা সদস্য, যা ক্লাসের মধ্যে ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। উপরের উদাহরণে, Name
এবং Age
হলো Person
ক্লাসের ফিল্ড।
প্রোপার্টি একটি ফিল্ডের মান পড়া এবং সেট করার জন্য ব্যবহৃত হয়। এতে সাধারণত get
এবং set
অ্যাক্সেসর থাকে।
class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
মেথড হলো ক্লাসের একটি ফাংশন, যা নির্দিষ্ট কাজ সম্পাদন করে। উপরের উদাহরণে, DisplayInfo
হলো একটি মেথড, যা Name
এবং Age
প্রিন্ট করে।
কন্সট্রাক্টর হলো একটি বিশেষ মেথড, যা অবজেক্ট তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের ফিল্ডগুলোর প্রাথমিক মান নির্ধারণ করতে ব্যবহৃত হয়।
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#) ক্লাসের দুটি গুরুত্বপূর্ণ উপাদান, যা ক্লাসের ডেটা অ্যাক্সেস ও পরিচালনা করতে সহায়ক।
প্রোপার্টি হলো ক্লাসের ডেটা মেম্বারের মান পড়া এবং সেট করার জন্য ব্যবহৃত এক ধরনের মেম্বার। এটি একটি ফিল্ডের মতো কাজ করে, তবে সরাসরি ডেটা অ্যাক্সেসের পরিবর্তে get
এবং set
অ্যাক্সেসর ব্যবহার করে ডেটা নিয়ন্ত্রণ করে। প্রোপার্টিজ একটি ক্লাসের ফিল্ডের জন্য সুরক্ষা প্রদান করে এবং প্রয়োজনমতো মান যাচাই করতে সহায়ক।
csharp
Copy code
class ClassName
{
private ডেটা_টাইপ ফিল্ড_নাম; // Private field
public ডেটা_টাইপ প্রোপার্টি_নাম
{
get { return ফিল্ড_নাম; }
set { ফিল্ড_নাম = value; }
}
}
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
সি শার্পে অটোমেটিক প্রোপার্টিজ ব্যবহারের সুবিধা রয়েছে, যেখানে ফিল্ড ডিক্লেয়ার করার প্রয়োজন হয় না। এটি দ্রুত প্রোপার্টি তৈরি করতে সহায়ক।
class Person
{
public string Name { get; set; } // Automatic Property
}
মেথড হলো ক্লাসের এমন একটি ফাংশন, যা নির্দিষ্ট কার্য সম্পাদন করে। মেথড সাধারণত ক্লাসের ফিল্ড বা প্রোপার্টির মান নিয়ে কাজ করে এবং প্রয়োজন অনুযায়ী মান রিটার্ন করতে পারে। মেথড একটি নির্দিষ্ট কাজ সম্পন্ন করে এবং প্রোগ্রামিংয়ে কোডকে মডুলার করতে সাহায্য করে।
class ClassName
{
public রিটার্ন_টাইপ মেথড_নাম(প্যারামিটার_লিস্ট)
{
// কোড ব্লক
return মান; // (যদি রিটার্ন টাইপ void না হয়)
}
}
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
get
এবং set
অ্যাক্সেসরের মাধ্যমে ডেটা নিয়ন্ত্রণ করে।প্রোপার্টিজ এবং মেথডের মাধ্যমে 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
}
}
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
একই অ্যাসেম্বলিতে সীমাবদ্ধ। অ্যাক্সেস মডিফায়ারগুলি সঠিকভাবে ব্যবহার করলে ডেটার নিরাপত্তা এবং এনক্যাপসুলেশন নিশ্চিত করা যায়।
আরও দেখুন...