কম্পিউটার

C# এ একটি শ্রেণীর ধারণা ব্যাখ্যা কর।


C# এ একটি ক্লাস একটি অপরিহার্য প্রকার। আমরা সমস্যা ডোমেনের সাথে প্রাসঙ্গিক বস্তুর জন্য একটি ব্লুপ্রিন্ট হিসাবে একটি শ্রেণীকে ভাবতে পারি। এটি একটি টেমপ্লেট যা থেকে আমরা অবজেক্ট তৈরি করি, গঠন এবং আচরণকে সংজ্ঞায়িত করে যা এই ক্লাস থেকে তৈরি করা বস্তুর সেট দ্বারা ভাগ করা হবে। সহজ কথায়, একটি ক্লাস একটি কুকি-কাটার, এবং বস্তুগুলি নিজেই কুকিজ৷

একটি ক্লাস এনক্যাপসুলেশন সক্ষম করে, যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ ধারণা। এর অর্থ ডেটা এবং ক্রিয়াকলাপগুলিকে একত্রিত করা যা ডেটাতে কাজ করে এবং সেই বস্তুর ব্যবহারকারীদের একটি সাধারণ API প্রদান করে। একটি ক্লাস আমাদের ডেটা এনক্যাপসুলেট করতে দেয় এবং অন্যান্য ক্লাস থেকে অপ্রাসঙ্গিক বিবরণ লুকিয়ে রাখে।

আমরা ক্লাস কীওয়ার্ড ব্যবহার করে ক্লাস তৈরি করতে পারি, তার পরে ক্লাসের নাম।

// User.cs
public class User{
   private string name;
   private int salary;
   public void Promote(){
      salary += 1000;
   }
}

উপরের উদাহরণে, ব্যবহারকারী এমন একটি শ্রেণী যা ব্যবহারকারীদের প্রতিনিধিত্ব করে। ক্লাসটি দুটি টুকরো ডেটা − নাম এনক্যাপসুলেট করে এবং বেতন . এগুলি ক্লাস ফিল্ড হিসাবে পরিচিত এবং ব্যবহারকারীদের নাম এবং বেতন ধরে রাখে। এটিতে Promote() নামে একটি পদ্ধতিও রয়েছে৷ , যা ব্যবহারকারীর বেতন বাড়ায়।

প্রতিটি ক্লাসে একটি যুক্ত অ্যাক্সেস মডিফায়ার থাকে যা নিয়ন্ত্রণ করে যে ক্লাসটি অন্য ক্লাসের কাছে দৃশ্যমান হবে কিনা। এখানে পাঁচটি সম্ভাব্য মান রয়েছে যা আমরা অ্যাক্সেস মডিফায়ারের জন্য প্রদান করতে পারি।

অ্যাক্সেস মডিফায়ার বিবরণ
সর্বজনীন সীমাহীন অ্যাক্সেস
সুরক্ষিত উত্পন্ন ক্লাসে সীমিত অ্যাক্সেস
অভ্যন্তরীণ সমাবেশে সীমিত অ্যাক্সেস
সুরক্ষিত অভ্যন্তরীণ সমাবেশ বা প্রাপ্ত ক্লাসে সীমিত অ্যাক্সেস
ব্যক্তিগত কোন বাইরের অ্যাক্সেস নেই

একটি ক্লাসের একটি উদাহরণ তৈরি করতে, আমরা নতুন ব্যবহার করতে পারি কীওয়ার্ড নতুন অপারেটর বস্তুর ডেটার জন্য প্রয়োজনীয় বাইটের সংখ্যা গণনা করে এবং বস্তুর জন্য মেমরি বরাদ্দ করে। তারপর এটি নতুন তৈরি বস্তুতে একটি পয়েন্টার (যাকে একটি রেফারেন্সও বলা হয়) ফেরত দেয়।

var alice = new User();
var bob = new User();

এই রেফারেন্সটি তখন =চিহ্নের বাম দিকে থাকা ভেরিয়েবলে সংরক্ষিত হয়। উপরের উদাহরণে, এলিস এবং বব নতুন তৈরি করা বস্তুর রেফারেন্স বা পয়েন্টার ধরে রেখেছেন।

C# এ একটি শ্রেণীর ধারণা ব্যাখ্যা কর।

C#-এ, একটি শ্রেণীর নামকরণের নিয়মটি PascalCase অনুসরণ করে যা একটি যৌগিক শব্দের প্রতিটি শব্দের প্রথম অক্ষরকে বড় করে তোলে, যেমন StringBuilder, UserController, ইত্যাদি। একটি ফাইলে ক্লাস তৈরি করার প্রয়োজন নেই যার নাম ক্লাসের নামের সাথে মিলে যায়। যাইহোক, এটি একটি কনভেনশন যা বেশিরভাগ C# প্রকল্প দ্বারা ব্যবহৃত হয়।

নির্মাতা

উপরের উদাহরণে, যখন আমরা ইউজার ক্লাসের উদাহরণ তৈরি করেছি, যেমন এলিস এবং বব, আমরা তাদের প্রাথমিক নাম এবং বেতন প্রদান করিনি। প্রায়শই একটি নতুন তৈরি বস্তুর কাজ করার জন্য কিছু তথ্যের প্রয়োজন হয়, এবং একটি কন্সট্রাক্টর ব্যবহার করা হয় ক্লাস ডেটা শুরু করার জন্য।

আমরা একজন কনস্ট্রাক্টর যোগ করতে পারি একজন ব্যবহারকারীকে তার নাম এবং বেতন নিম্নরূপ দিতে -

public class User{
   private string name;
   private int salary;
   public User(string name, int salary){
      this.name = name;
      this.salary = salary;
   }
   public void Promote(){
      salary += 1000;
   }
}

একটি কনস্ট্রাক্টর থাকার ফলে আমরা একটি নতুন উদাহরণ তৈরি করার সময় একজন ব্যবহারকারীর নাম এবং বেতন পাস করতে পারি৷

var alice = new User("Alice", 50000);
var bob = new User("Bob", 45000);

একটি ক্লাসে একাধিক কনস্ট্রাক্টর থাকা সম্ভব। একাধিক কনস্ট্রাক্টর থাকা আমাদেরকে বিভিন্ন উপায়ে ক্লাস শুরু করতে দেয়। উদাহরণস্বরূপ, আমরা অন্য কনস্ট্রাক্টর যোগ করতে পারি যেটি শুধুমাত্র ব্যবহারকারীর নাম নেয় এবং একটি ডিফল্ট বেতন নির্ধারণ করে।

public User(string name){
   this.name = name;
   this.salary = 50000;
}

উদাহরণ

using System;
class Program{
   static void Main(){
      var alice = new User();
      alice.Print();

      var bob = new User();
      bob.Print();
      var chris = new User("Chris", 50000);
      chris.Print();
      var debs = new User("Debs", 45000);
      debs.Print();

      var scott = new User("Scott");
      scott.Print();
   }
}
public class User{
   private string name;
   private int salary;
   public User(){

   }
   public User(string name){
      this.name = name;
      this.salary = 50000;
   }
   public User(string name, int salary){
      this.name = name;
      this.salary = salary;
   }
   public void Promote(){
      salary += 1000;
   }
   public void Print(){
      Console.WriteLine($"{name}: {salary}");
   }
}

আউটপুট

: 0
: 0
Chris: 50000
Debs: 45000
Scott: 50000

  1. লিংকড লিস্টের ধারণাটি সি ভাষায় ব্যাখ্যা কর

  2. সি প্রোগ্রামিং-এ অ্যারে অফ পয়েন্টার এবং পয়েন্টার থেকে পয়েন্টার ধারণাটি ব্যাখ্যা কর

  3. সি ল্যাঙ্গুয়েজে পয়েন্টার এক্সেসিংয়ের ধারণাটি ব্যাখ্যা কর

  4. পাইথনে অবজেক্ট ওরিয়েন্টেড ধারণাগুলো সংক্ষেপে ব্যাখ্যা কর?