TypeScript এ এক্সেস মডিফায়ারস (Access Modifiers) ব্যবহৃত হয় ক্লাসের প্রপার্টি এবং মেথডের দৃশ্যমানতা এবং অ্যাক্সেস নিয়ন্ত্রণ করতে। এগুলি তিনটি ধরণের হতে পারে: public, private, এবং protected। এগুলির সাহায্যে আপনি কোডের encapsulation এবং তথ্য গোপনীয়তা বজায় রাখতে পারেন।
এক্সেস মডিফায়ারস কী?
এক্সেস মডিফায়ারস একটি ক্লাসের সদস্যগুলোর (যেমন প্রপার্টি বা মেথড) অ্যাক্সেস কন্ট্রোল করতে ব্যবহৃত হয়। TypeScript এ তিনটি প্রধান এক্সেস মডিফায়ার রয়েছে:
publicprivateprotected
প্রত্যেকটি এক্সেস মডিফায়ার ক্লাসের সদস্যগুলির দৃশ্যমানতা এবং অ্যাক্সেসের সীমা নির্ধারণ করে।
১. public এক্সেস মডিফায়ার
publicহল ডিফল্ট এক্সেস মডিফায়ার। যদি কোনো সদস্যের জন্য এক্সেস মডিফায়ার নির্ধারণ না করা হয়, তবে এটি স্বয়ংক্রিয়ভাবেpublicধরা হয়।publicসদস্যগুলি ক্লাসের বাইরেও অ্যাক্সেসযোগ্য থাকে।
উদাহরণ:
class Person {
public name: string;
public age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public greet() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
const person = new Person("John", 30);
console.log(person.name); // Accessible outside the class
person.greet(); // Accessible outside the class
এখানে name, age, এবং greet() মেথড সবই public, তাই এগুলো ক্লাসের বাইরেও অ্যাক্সেস করা যেতে পারে।
২. private এক্সেস মডিফায়ার
privateসদস্যগুলি শুধুমাত্র ক্লাসের ভিতরে অ্যাক্সেসযোগ্য থাকে। এগুলো ক্লাসের বাইরের কোড থেকে অ্যাক্সেস করা যায় না।- এটি ক্লাসের সদস্যকে ইনক্যাপসুলেটেড রাখে, যাতে অন্য কেউ সরাসরি সেই সদস্যের মান পরিবর্তন করতে না পারে।
উদাহরণ:
class Person {
private name: string;
private age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
public getDetails() {
return `${this.name} is ${this.age} years old.`;
}
}
const person = new Person("John", 30);
console.log(person.getDetails()); // Allowed
// console.log(person.name); // Error: 'name' is private and only accessible within class 'Person'
এখানে, name এবং age প্রপার্টি private, তাই এগুলো ক্লাসের বাইরে থেকে অ্যাক্সেস বা পরিবর্তন করা যাবে না। তবে, getDetails() মেথডটি public থাকায়, এটি বাইরের কোড থেকে অ্যাক্সেস করা যাবে।
৩. protected এক্সেস মডিফায়ার
protectedসদস্যগুলি ক্লাসের ভিতর এবং এর কোনো সাবক্লাস থেকে অ্যাক্সেসযোগ্য থাকে, কিন্তু বাইরের কোড থেকে অ্যাক্সেস করা যায় না।- এটি একটি ক্লাসের ইনহেরিটেন্স ব্যবহারের সময় সাবক্লাসে প্রপার্টি বা মেথড শেয়ার করতে সাহায্য করে।
উদাহরণ:
class Animal {
protected name: string;
constructor(name: string) {
this.name = name;
}
protected speak() {
console.log(`${this.name} makes a sound`);
}
}
class Dog extends Animal {
constructor(name: string) {
super(name);
}
public bark() {
this.speak(); // Allowed: speak() is protected and can be accessed in subclass
console.log(`${this.name} barks`);
}
}
const dog = new Dog("Buddy");
dog.bark(); // Allowed
// dog.speak(); // Error: 'speak' is protected and only accessible within class 'Animal' and its subclasses
এখানে, name এবং speak() সদস্যগুলি protected, তাই এগুলি Animal ক্লাসের বাইরে থেকে সরাসরি অ্যাক্সেস করা যাবে না, তবে Dog ক্লাসে এগুলির অ্যাক্সেস রয়েছে, যেহেতু এটি Animal ক্লাস থেকে ইনহেরিট করেছে।
এক্সেস মডিফায়ারসের ব্যবহারের সুবিধা
- Encapsulation (এনক্যাপসুলেশন): এক্সেস মডিফায়ারস আপনাকে ক্লাসের অভ্যন্তরীণ তথ্য গোপন রাখতে সহায়তা করে এবং শুধুমাত্র দরকারি তথ্য বাইরে এক্সপোজ করে। এটি কোডের নিরাপত্তা ও স্থায়ীত্ব নিশ্চিত করে।
- প্রতি-সীমিত অ্যাক্সেস:
privateএবংprotectedএক্সেস মডিফায়ারসের মাধ্যমে আপনি ক্লাসের সদস্যদের সঠিকভাবে নিয়ন্ত্রণ করতে পারেন, যাতে অন্য কোনো কোড তাদের অবৈধভাবে অ্যাক্সেস বা পরিবর্তন করতে না পারে। - ইনহেরিটেন্স ব্যবস্থাপনা:
protectedমেম্বারগুলো সাবক্লাসে অ্যাক্সেসযোগ্য হওয়ায় ইনহেরিটেন্সে কোড রিইউজ করার সুবিধা পাওয়া যায়।
সারাংশ
public: কোনো বাধা ছাড়াই ক্লাসের বাইরের কোড থেকেও অ্যাক্সেসযোগ্য।private: শুধুমাত্র ক্লাসের ভিতর থেকেই অ্যাক্সেসযোগ্য, বাইরের কোড বা সাবক্লাসে অ্যাক্সেস সম্ভব নয়।protected: ক্লাসের ভিতর এবং এর সাবক্লাস থেকে অ্যাক্সেসযোগ্য, কিন্তু বাইরের কোড থেকে অ্যাক্সেস সম্ভব নয়।
এক্সেস মডিফায়ারস TypeScript কোডে নিরাপত্তা, রক্ষণাবেক্ষণ এবং এনক্যাপসুলেশন নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more