TypeScript-এ ক্লাস (Class) ব্যবহারের মাধ্যমে আপনি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) কনসেপ্টের সাহায্যে কোড লিখতে পারেন। TypeScript-এর ক্লাস কনস্ট্রাক্টর, প্রপার্টি, মেথড, ইনহেরিটেন্স, অ্যাবস্ট্রাক্ট ক্লাস, ইন্টারফেস ইত্যাদি বিভিন্ন ফিচার সাপোর্ট করে, যা কোডকে আরও মডুলার, পুনঃব্যবহারযোগ্য এবং রিডেবল করে তোলে।
১. ক্লাস ডিফিনিশন (Class Definition)
ক্লাস হলো একটি ব্লুপ্রিন্ট, যা অবজেক্ট তৈরি করতে ব্যবহৃত হয়। TypeScript-এ ক্লাস ডিফাইন করার জন্য class কিওয়ার্ড ব্যবহার করা হয়।
ক্লাস ডিফিনিশনের উদাহরণ:
class Person {
// প্রপার্টি ডিক্লেয়ারেশন
name: string;
age: number;
// কনস্ট্রাক্টর (Constructor)
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
// মেথড ডিফিনিশন
greet() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
এখানে:
nameএবংageক্লাসের প্রপার্টি।constructorমেথডটি ক্লাসের ইনস্ট্যান্স তৈরি করার সময় অর্গুমেন্ট নেয়।greetএকটি মেথড যা অবজেক্টের গ্রীটিং বার্তা প্রিন্ট করে।
২. অবজেক্ট ইন্সট্যান্সিং (Object Instancing)
ক্লাস ডিফাইন করার পর আপনি সেই ক্লাসের একটি ইনস্ট্যান্স তৈরি করতে পারেন। ইনস্ট্যান্স তৈরি করতে new কিওয়ার্ড ব্যবহার করা হয়। এটি ক্লাসের কনস্ট্রাক্টর মেথডকে কল করে এবং নতুন অবজেক্ট তৈরি করে।
উদাহরণ:
const person1 = new Person("John", 30);
person1.greet(); // Output: Hello, my name is John and I am 30 years old.
এখানে:
person1হলোPersonক্লাসের একটি ইনস্ট্যান্স, যেখানে কনস্ট্রাক্টরের মাধ্যমেnameওageসেট করা হয়েছে।
৩. ক্লাসের কনস্ট্রাক্টর মেথড
কনস্ট্রাক্টর একটি বিশেষ মেথড যা ক্লাসের ইনস্ট্যান্স তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের প্রপার্টি ইন্টারনাল স্টেট ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।
উদাহরণ:
class Car {
model: string;
year: number;
constructor(model: string, year: number) {
this.model = model;
this.year = year;
}
displayInfo() {
console.log(`Car model: ${this.model}, Year: ${this.year}`);
}
}
const myCar = new Car("Toyota", 2020);
myCar.displayInfo(); // Output: Car model: Toyota, Year: 2020
এখানে, Car ক্লাসের কনস্ট্রাক্টর মেথড model এবং year সেট করে, এবং displayInfo মেথড দিয়ে তাদের প্রদর্শন করা হয়।
৪. ক্লাসের প্রপার্টি (Class Properties)
ক্লাসের প্রপার্টি ডিফাইন করার জন্য সাধারণত ভেরিয়েবল ডিক্লেয়ার করা হয়, যেগুলো ক্লাসের ইনস্ট্যান্সের মাধ্যমে অ্যাক্সেস করা যায়।
উদাহরণ:
class Animal {
species: string;
constructor(species: string) {
this.species = species;
}
speak() {
console.log(`${this.species} makes a sound.`);
}
}
const animal = new Animal("Dog");
animal.speak(); // Output: Dog makes a sound.
এখানে, species হলো Animal ক্লাসের একটি প্রপার্টি এবং এটি কনস্ট্রাক্টরের মাধ্যমে সেট করা হচ্ছে।
৫. ক্লাসে মেথড (Methods in Class)
ক্লাসের ভিতরে মেথড ডিফাইন করা হয়, যা ক্লাসের ইনস্ট্যান্সের সাথে সম্পর্কিত ফাংশনালিটি প্রদান করে।
উদাহরণ:
class Calculator {
add(a: number, b: number): number {
return a + b;
}
subtract(a: number, b: number): number {
return a - b;
}
}
const calc = new Calculator();
console.log(calc.add(10, 5)); // Output: 15
console.log(calc.subtract(10, 5)); // Output: 5
এখানে, add এবং subtract দুটি মেথড ডিফাইন করা হয়েছে, যা দুটি সংখ্যা গোনে যোগ এবং বিয়োগ করার কাজ করে।
৬. ক্লাসের ইনহেরিটেন্স (Class Inheritance)
TypeScript-এ ক্লাস ইনহেরিটেন্স (Inheritance) সাপোর্ট করে, যা একটি ক্লাসের বৈশিষ্ট্য এবং মেথড অন্য একটি ক্লাসে উত্তরাধিকারসূত্রে পেতে সক্ষম করে।
উদাহরণ:
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a sound.`);
}
}
class Dog extends Animal {
constructor(name: string) {
super(name); // Call the parent class constructor
}
speak() {
console.log(`${this.name} barks.`);
}
}
const dog = new Dog("Buddy");
dog.speak(); // Output: Buddy barks.
এখানে, Dog ক্লাস Animal ক্লাস থেকে ইনহেরিট করেছে এবং speak মেথডের ওপরে নিজের সংস্করণ প্রদান করেছে।
৭. অ্যাবস্ট্রাক্ট ক্লাস (Abstract Classes)
TypeScript-এ অ্যাবস্ট্রাক্ট ক্লাস একটি বিশেষ ধরনের ক্লাস যা সরাসরি ইনস্ট্যান্স তৈরি করতে পারে না, কিন্তু এটি অন্য ক্লাসের জন্য একটি বেস ক্লাস হিসেবে কাজ করে।
উদাহরণ:
abstract class Animal {
abstract sound(): void; // Abstract method
move(): void {
console.log("The animal moves.");
}
}
class Cat extends Animal {
sound(): void {
console.log("Meow");
}
}
const cat = new Cat();
cat.sound(); // Output: Meow
cat.move(); // Output: The animal moves.
এখানে, Animal একটি অ্যাবস্ট্রাক্ট ক্লাস এবং Cat ক্লাস এটি এক্সটেন্ড করে sound মেথড ইমপ্লিমেন্ট করেছে।
সারাংশ
TypeScript-এ ক্লাস এবং অবজেক্ট ইন্সট্যান্সিং ব্যবহারের মাধ্যমে আপনি উন্নত অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) কনসেপ্ট প্রয়োগ করতে পারেন। ক্লাস ডিফিনিশন, প্রপার্টি, কনস্ট্রাক্টর, মেথড, ইনহেরিটেন্স, এবং অ্যাবস্ট্রাক্ট ক্লাস এর মাধ্যমে কোডকে আরও সংগঠিত ও পুনঃব্যবহারযোগ্য করা সম্ভব। TypeScript-এ এই সমস্ত বৈশিষ্ট্যগুলি ব্যবহারের ফলে কোডের সঠিকতা এবং রিডেবিলিটি উন্নত হয়।