Vivasoft-logo

এনক্যাপসুলেশনের ব্যবহার :

C# এনক্যাপসুলেশনের ব্যবহার :

C# এ কয়েক ভাবে এনক্যাপসুলেশন করা হয়ে থাকে যেমন –
মেথড এর ব্যবহার করে (২০০৭ এর পূর্বে):

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

Link : https://dotnetfiddle.net/A8JSes

using System;
public class Program
{
	public class Customer
	{
		private string name;
		public string GetName()
		{
			return name;
		}
		public void SetName(string value)
		{
			name = value;
		}
	}
	public static void Main()
	{
		// Can access Name through the GetName Method
		Customer customer = new Customer();
		customer.SetName(“Azad”);
		Console.WriteLine(customer.GetName());
	}
}

সাধারণত ওওপি (OOP) প্রোগ্রামিং ল্যাঙ্গুয়েজে getter/setter এভাবেই ব্যবহার করা হয়।

সাধারণত গেটার (getter) সেটার (setter) তৈরি করার জন্য

  1. Getter : গেট (Get) দিয়ে ফিল্ডের নাম (GetFieldName) , E.g. GetName
  2. Setter: সেটার তৈরি জন্য সেট দিয়ে ফিল্ডের নাম (SetFieldName), E.g. SetName

২০০৭ এর আগে সাধারণত এভাবেই গেটার (getter) / সেটার (setter) তৈরি করা হত । কিন্তু এর পরে C# এ প্রপার্টি নামে একটি ফিচার এড করা হয় এই প্রপার্টি ফিচারটা নিয়ে আমরা নিচে কথা বলব। এই প্রপার্টি ফিচারটা সাধারণত এই গেটার (getter) / সেটার (setter) মেথডকে একটু সংক্ষিপ্ত করে এবং সহজ করে।

প্রপার্টিস এর ব্যবহার করে:

যার মধ্যমে ফিল্ড এর এক্সেস কন্ট্রোল করার অনুমতি দিবে ও আপনি এর ভ্যালুতে সহজ এবং সুবিধাজনক ভাবে এক্সেস করতে পারবেন
Link : https://dotnetfiddle.net/3M6Dln

using System;
public class Program
{
	public class Customer
	{
		private string name; // field / backing field
		// C# property
		public string Name
		{
			get
			{
				return name;
			}
			set
			{
				// Check if the name is empty or null
				if (string.IsNullOrEmpty(value))
				{
					// Throw an exception with a message
					throw new ArgumentNullException(“Name cannot be empty or null”);
				}
				name = value;
			}
		}
		// C# Auto property, doesn’t require, backing field
		public string DateOfBirth { get; set; }
	}
	public static void Main()
	{
		// Can access Name through the name property
		Customer customer = new Customer();
		customer.Name = “Azad”;
		Console.WriteLine(customer.Name);
		customer.Name = string.Empty; // it will throw exception with stacktrace, example in the output
	}
}
Azad
Run-time exception (line 22): Value cannot be null.
Parameter name: Name cannot be empty or null
Stack Trace:
[System.ArgumentNullException: Value cannot be null.
Parameter name: Name cannot be empty or null]
   at Program.Customer.set_Name(String value) :line 22
   at Program.Main() :line 39

JAVA এনক্যাপসুলেশনের ব্যবহার:
মেথড এর ব্যবহার করে:

Link: http://tpcg.io/_I28ITR

public class Program {
    public static void main(String[] args) {
        Customer customer = new Customer();
        customer.setName(“Azad”);
        System.out.println(customer.getName());
    }
    public  class Customer {
        private String name;
        public String getName() {
            return name;
        }
        public void setName(String value) {
            name = value;
        }
    }
}

এনক্যাপসুলেশন মূলত আমাদের সুবিধাগুলো দেয় সেটাকে আমরা একটি ফিগারের মাধ্যমে বোঝার চেষ্টা করি।

  1. Data Hiding (Encapsulation is not directing information hiding but encapsulating fields)
  2. Restrict
  3. Data Validation

data