7.5 Constructor Pattern ব্যবহার করে জাভাস্ক্রিপ্টের ক্লাস তৈরি:

 

আমরা constructor ফাংশন ব্যবহার করে জাভাস্ক্রিপ্টের constructor pattern সম্পর্কে জেনেছি। Constructor Function এমন একটি ফাংশন যা Object তৈরি করতে পারে। Constructor function ব্যবহার করে Object তৈরি করার প্রক্রিয়াই আসলে constructor pattern। নিচের কোডটি খেয়াল করিঃ

function CreateCircle(radius){
    this.radius = radius;
    this.draw = function () {
      console.log(`Circle radius is ${this.radius}`);
    };
}

const circle1 = new CreateCircle(5);

 

আমরা এখানে ফাংশন দিয়ে constructor pattern ইমপ্লিমেন্ট করেছি। CreateCircle Constructor Function ব্যবহার করে circle Object তৈরি করেছি। উপরের কোডে আমারা একটা নতুন Keyword ব্যবহার করেছি তা হল new নিশ্চয়ই লক্ষ্য করেছেন।আমরা যখন এই new Keyword টা ব্যবহার করি তখন আসলে তিনটি জিনিস ঘটে। প্রথমত, এই new Keyword একটি খালি বা empty জাভাস্ক্রিপ্ট Object তৈরি করে। অনেকটা const x = {} এইরকম, যা আসলে Background এ কাজ করে বলে আমরা দেখতে পাই না। দ্বিতীয়ত, এইটি this টিকে সেট করবে খালি বা empty Object টিকে পয়েন্ট করার জন্য যার মধ্যমে আমরা খালি বা empty Object টিতে property বা মেথড যোগ করব। আর অবশেষে, Object টিকে ফাংশন থেকে return করবে। এই প্রক্রিয়াটিও আসলে Background এ কাজ করে বলে আমরা দেখতে পাই না।

সুতরাং আমরা এখন CreateCircle Constructor Function কে বিভিন্ন মান বা বিভিন্ন আর্গুমেন্ট দিয়ে কল করে বিভিন্ন circle অবজেক্ট পেতে পারি। চলুন আমরা আরও কিছু circle অবজেক্ট তৈরি করি আমাদের লিখা Constructor Function দিয়ে।

 

function CreateCircle(radius) {
    this.radius = radius;
    this.draw = function () {
      console.log(`Circle radius is ${this.radius}`);
    };
}

const circle1 = new CreateCircle(5);
console.log(circle1.draw());
const circle2 = new CreateCircle(10);
console.log(circle2.draw());


// output:
// Circle radius is 5
// Circle radius is 10

 

আমরা Constructor Function সম্পর্কে জানলাম। এখন আমরা ক্লাস ব্যবহার করে একই জিনিস করব।

ক্লাসের সুবিধা হল, প্রত্যেকটা ক্লাসের অটোম্যাটিকালি constructor ফাংশন থাকে। যা ক্লাসের ইন্সট্যান্স বা অবজেক্ট তৈরি করে তা রিটার্ন করে। আমরা উপরে যেমন new keyword ব্যবহার করেছি, ক্লাসের ক্ষেত্রেও নতুন অবজেক্ট তৈরির ক্ষেত্রে new keyword ব্যবহার করব। যখনি new keyword দিয়ে ক্লাসের অবজেক্ট ডিক্ল্যেয়ার করি, তখনি constructor ফাংশন কল হয়ে যায়। যখনি constructor কল হয় তখন একটি নতুন অবজেক্ট তৈরি হয় এবং this এর ভ্যালু নতুন অবজেক্টটিতে সেট হয়। তারপর নতুন তৈরি করা অবজেক্ট অটোমেটিক্যালি রিটার্ন হয়।

নিচের কোডটি খেয়াল করি। আমরা CreateCircle নামে একটা ক্লাস তৈরি করেছি, যার constructor ফাংশনে radius এর ভ্যালু সেট করেছি। যখনি new keyword ব্যবহার করে আমরা নতুন circle1 অবজেক্ট তৈরি করেছি, তখনি constructor ফাংশন কল হয়েছে এবং আর্গুমেন্টের radius এর ভ্যালু নতুন তৈরি করা অবজেক্টে সেট হয়েছে। এরপর অবজেক্টটি রিটার্ন হয়েছে। এভাবে চাইলে আমরা হাজারটাও circle তৈরি করতে পারব।

class CreateCircle {
   constructor(radius){
      this.radius = radius;
   }
   draw(){
      console.log(`Circle radius is ${this.radius}`)
   }
}

const circle1 = new CreateCircle(5);
circle1.draw()                    // আউটপুটঃ Circle radius is 5

 

উদাহরন

উদাহরণ-১: 

class Animal {
  constructor(name, type) {
    this.name = name;
    this.type = type;
  }
  getDetails() {
    return `This is a ${this.type}. The name of this ${this.type} is ${this.name}`;
  }
}

const myPet = new Animal('Jupiter', 'Cat');
console.log(myPet.getDetails());    // This is a Cat. The name of this Cat is Jupiter

 

উদাহরণ-২:

class Vehicle {
  color = '';
  constructor(brand, model) {
    this.brand = brand;
    this.model = model;
  }
  setColor(color) {
    this.color = color;
  }
}

const myBike = new Vehicle('Yamaha', 'R15 v3');
console.log(myBike);    // Vehicle { color: '', brand: 'Yamaha', model: 'R15 v3' }
myBike.setColor('Black');
console.log(myBike);    // Vehicle { color: 'Black', brand: 'Yamaha', model: 'R15 v3' }

 

উদাহরণ-৩:

function Student(name, institute) {
  this.name = name;
  this.institute = institute;
  this.getInstituteName = function () {
    return this.institute;
  }
}

const tajnur = new Student('Tajnur', 'Bangladesh Open University');
console.log(tajnur.getInstituteName());    // Output: Bangladesh Open University

 

উদাহরণ-৪:

class Rectangle {
  height; width;
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  getArea() {
    return this.height * this.width;
  }
}

const rect = new Rectangle(3, 5);
console.log(rect.getArea());    // Output: 15

 

 

এসো নিজে করি
  • Triangle নামে একটি ফাংশন ডিক্লেয়ার করো যার x, y, z নামে প্রোপার্টি থাকবে এবং getArea নামে একটি ফাংশন থাকবে যেটার মাধ্যমে Triangle এর আয়তন পাওয়া যাবে। এখন Triangle কে ব্যবহার করে একটি অবজেক্ট তৈরী করো এবং সেটার আয়তন বের করে দেখাও।
  • Phone নামে একটি ক্লাস ডিক্লেয়ার করো যার constructor ব্যবহার করে brand নামক প্রোপার্টি সেট করা যাবে এবং অন্য একটি ফাংশনের মধ্যমে model প্রোপার্টি সেট করা যাবে। এবার Phone ক্লাসকে ব্যবহার করে একটি অবজেক্ট তৈরী করো এবং সেটার model সেট করো।
  • উপরের Triangle ফাংশনকে ক্লাসে এবং Phone ক্লাসকে ফাংশনে রূপান্তর করে একই ধরনের কাজ করে দেখাও।
  • Country নামে একটি ক্লাস ডিক্লেয়ার করো যার constructor এর মাধ্যমে কয়েকটি প্রোপার্টি সেট করা যাবে এবং একটি ফাংশনের মাধ্যমে প্রোপার্টি গুলোর মান জানা যাবে।
  • Employee নামে একটি ক্লাস ডিক্লেয়ার করো এবং এমন একটি মেথড সেট করো যার মাধ্যমে ঐ ক্লাসের কোন একটা প্রোপার্টিকে ডিলিট করে দেওয়া যায়।