CoffeeScript-এ ইনহেরিটেন্স (Inheritance) এবং সাবক্লাসিং (Subclassing) সহজ এবং পরিষ্কারভাবে ব্যবহার করা যায়। এটি JavaScript-এর ক্লাস সিস্টেমের উপরে ভিত্তি করে এবং ES6-এর ক্লাস ফিচারের মতোই কাজ করে, তবে CoffeeScript-এ এটি আরও সংক্ষিপ্ত এবং ব্যবহারযোগ্য। এখানে CoffeeScript-এ ইনহেরিটেন্স এবং সাবক্লাসিং কীভাবে কাজ করে তা বিস্তারিতভাবে আলোচনা করা হলো।
CoffeeScript-এ Inheritance (ইনহেরিটেন্স)
CoffeeScript-এ ক্লাস তৈরি করা এবং ইনহেরিটেন্স ব্যবহার করা খুবই সহজ। CoffeeScript class কীওয়ার্ড ব্যবহার করে ক্লাস তৈরি করতে এবং ক্লাসের মধ্যে ইনহেরিটেন্স (parent-child relationship) সেটআপ করতে সাহায্য করে।
১. বেস ক্লাস (Base Class) তৈরি করা
প্রথমে একটি বেস ক্লাস (Parent Class) তৈরি করা হয়, যা সাধারণ বৈশিষ্ট্য এবং পদ্ধতি (methods) ধারণ করে।
class Animal
constructor: (@name) -> # ডিফল্ট কন্সট্রাক্টর
speak: -> console.log "#{@name} makes a noise."
এখানে Animal একটি বেস ক্লাস, যার মধ্যে একটি কন্সট্রাক্টর এবং একটি speak মেথড রয়েছে।
২. সাবক্লাস (Subclass) তৈরি করা
সাবক্লাস তৈরি করতে CoffeeScript-এ extends ব্যবহার করা হয়। এটি বেস ক্লাসের সকল বৈশিষ্ট্য এবং পদ্ধতি সাবক্লাসে অ্যাক্সেস করতে সাহায্য করে।
class Dog extends Animal
speak: -> console.log "#{@name} barks."
এখানে Dog ক্লাস Animal ক্লাসকে extends করে ইনহেরিট করেছে এবং speak মেথডকে কাস্টমাইজ করেছে।
৩. ইনস্ট্যান্স তৈরি করা
এখন আপনি Animal এবং Dog ক্লাসের ইনস্ট্যান্স তৈরি করতে পারবেন:
dog = new Dog("Buddy")
dog.speak() # Buddy barks.
JavaScript-এ কম্পাইল হওয়া কোড:
var Animal, Dog;
Animal = class {
constructor(name) {
this.name = name;
}
speak() {
return console.log(`${this.name} makes a noise.`);
}
};
Dog = class extends Animal {
speak() {
return console.log(`${this.name} barks.`);
}
};
var dog;
dog = new Dog("Buddy");
dog.speak(); // Buddy barks.
CoffeeScript-এ Super (সুপার) ব্যবহার
কখনও কখনও আপনি সাবক্লাসে বেস ক্লাসের মেথডও কল করতে চাইবেন। এর জন্য CoffeeScript-এ super কীওয়ার্ড ব্যবহার করা হয়।
উদাহরণ: সুপার মেথড কল করা
class Dog extends Animal
speak: ->
super() # বেস ক্লাসের speak মেথড কল করা হচ্ছে
console.log "#{@name} barks."
এখানে super() বেস ক্লাসের speak মেথডকে কল করবে, এবং তারপর সাবক্লাসের কাস্টম speak মেথড এক্সিকিউট হবে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Animal, Dog;
Animal = class {
constructor(name) {
this.name = name;
}
speak() {
return console.log(`${this.name} makes a noise.`);
}
};
Dog = class extends Animal {
speak() {
super.speak();
return console.log(`${this.name} barks.`);
}
};
var dog;
dog = new Dog("Buddy");
dog.speak(); // Buddy makes a noise. Buddy barks.
CoffeeScript-এ Multiple Inheritance (একাধিক ইনহেরিটেন্স)
CoffeeScript নিজে একাধিক ইনহেরিটেন্স সমর্থন করে না, তবে আপনি মিশ্রিত বা ম্যানুয়ালি একাধিক ক্লাসের বৈশিষ্ট্য ব্যবহার করতে পারেন।
উদাহরণ: মিক্সিন ব্যবহার
class Animal
constructor: (@name) ->
speak: -> console.log "#{@name} makes a noise."
class Swimmer
swim: -> console.log "#{@name} swims."
class Fish extends Animal
include Swimmer
constructor: (@name) -> super(@name)
এখানে Fish ক্লাস Animal এবং Swimmer দুটি ক্লাস থেকে বৈশিষ্ট্য ইনহেরিট করেছে।
JavaScript-এ কম্পাইল হওয়া কোড:
var Animal, Fish, Swimmer;
Animal = class {
constructor(name) {
this.name = name;
}
speak() {
return console.log(`${this.name} makes a noise.`);
}
};
Swimmer = class {
swim() {
return console.log(`${this.name} swims.`);
}
};
Fish = class extends Animal {
constructor(name) {
super(name);
}
};
Object.assign(Fish.prototype, Swimmer.prototype);
var fish;
fish = new Fish("Goldfish");
fish.speak(); // Goldfish makes a noise.
fish.swim(); // Goldfish swims.
সারাংশ
CoffeeScript-এ ইনহেরিটেন্স এবং সাবক্লাসিং অনেক সহজ এবং পরিষ্কার। আপনি class এবং extends ব্যবহার করে ক্লাস তৈরি করতে এবং ইনহেরিটেন্স তৈরি করতে পারেন। super কীওয়ার্ড ব্যবহার করে আপনি বেস ক্লাসের মেথডও কল করতে পারেন। এতে কোড আরও সুন্দর এবং আরও দ্রুত লেখা যায়, এবং JavaScript কোডের তুলনায় খুব কম কোডে একই কাজ করা সম্ভব। CoffeeScript ইনহেরিটেন্স ডেভেলপারদের আরও কার্যকরী এবং পাঠযোগ্য কোড লেখার সুযোগ দেয়।
Read more