(কোডিং জে এস)Coding JS
  • কোডিং JS
  • সূচিপত্র(Index)
  • ভূমিকা
  • লেখক পরিচিতি(Writer Intro)
  • ইতিহাস
  • জাভাস্ক্রিপ্টের বিস্তার কত দূর?
  • কাদের জন্য জাভাস্ক্রিপ্ট?
  • এনভায়রনমেন্ট সেটআপ
  • ব্রাউজার পরিচিতি
  • ভাল এডিটর বা আইডিই
  • জাভাস্ক্রিপ্টের ইঞ্জিন (JS Engine)
  • প্রথম প্রোগ্রাম = হ্যালো বাংলাদেশ
  • সিনট্যাক্স নিয়ে যত কথা।
  • ভেরি + এবল = ভেরিয়্যাবল কি?
  • ডেটা টাইপ
    • প্রিমিটিভ ডাটা টাইপ(Primitive data type)
      • বুলিয়ান (Boolean)
      • আন্ডিফাইন্ড (Undefined)
      • নাল (Null)
      • নাম্বার (Number)
      • বিগ ইন্টিজার (BigInt)
      • স্ট্রিং (String)
      • সিম্বল (Symbol)
    • নন-প্রিমিটিভ ডাটা টাইপ(Non-primitive data type)
      • অব্জেক্ট (Object)
      • অ্যারে(Array)
  • অপারেটর
  • কন্ডিশনাল কন্ট্রোল ফ্লো(Conditional Control flow)
  • লুপ এবং ইটারেশন(Loop & Iteration)
    • 🔃ফর লুপ(For loop)
    • 🔃ও্যাইয়ল লুপ (While Loop)
    • 📿পুনারাবৃত্তি (Iteration)
  • ফাংশন (Function)
    • রেগুলার ফাংশন (Regular Function)
    • অ্যারো ফাংশন(Arrow Function)
    • নেস্টেড ফাংশন ( Nested Function)
    • ক্লোজার ফাংশন(Closures Function)
    • আই. আই. এফ. ই. (IIFE)
    • হাইয়ার অর্ডার ফাংশন (Higher Order Function)
    • কারিং ফাংশন (Currying function)
    • এন এফ ই (NFE)
    • রিকার্সিভ ফংশন (Recursive Function)
    • জেনারেটর ফাংশন (Generator Function)
  • ক্লাস ও অবজেক্ট অরিয়েন্টেড (class & OOP)
    • মেম্বার ফাংশন (Member Function)
    • ইনহেরিটেন্স (Inhertance)
    • এনসকেপসুলেশন (Encapsulations)
    • অবস্ট্রাকশন(Abstraction)
    • পলিমরফিজম (Polymorphism)
  • কলব্যাক ফাংশন (callback function)
  • প্রমিস (Promise)
  • Async এবং await (Async & Await)
  • এজ্যাক্স (Ajax)
  • ফেচ (fetch)
  • ওয়েভ এপি আই(Web API)
    • ওয়েব স্টোরেজ (Web Storage)
      • বিস্কিটের টুকরো (Cookies)
      • সেশন (Session)
    • হিস্ট্রি এপি আই (History API)
    • জিওলোকেশন এপি আই (Geolocation API)
    • ওয়ার্কার এপি আই (Workers API)
    • ফর্ম এপি আই (Form API)
  • জে এস ডোম(JS DOM)
  • জে এস স্টাইল (JS Style)
  • এপিআই কী? (What is API)
    • SOAP API
    • রেস্ট এপি আই(REST API)
  • ফ্রেমওয়ার্ক লাইব্রেরী নিয়ে খোশ গল্প
  • জাভাস্ক্রিপ্টের বিল্ডইন কী ওয়ার্ড(Javascript Build in keyword)
  • কৃতজ্ঞতা স্বীকার
Powered by GitBook
On this page
Edit on GitHub

ক্লাস ও অবজেক্ট অরিয়েন্টেড (class & OOP)

সতর্ক বার্তাঃ কেউ যদি বইটির কোন অংশ খারাপ উদ্দেশ্যে বা বাণিজ্যিক উদ্দেশ্য ব্যবহার করে তাহলে কপিরাইট আইন অন্তর্ভুক্ত সকল প্রকার প্রক্রিয়া অনুসরণ করতে বাধ্য থাকব।

Previousজেনারেটর ফাংশন (Generator Function)Nextমেম্বার ফাংশন (Member Function)

Last updated 1 year ago

ক্লাস

ক্লাস মানেই যে আপনাকে বই খাতা নিয়ে স্কুল বা কলেজে যেতে হবে তা নয় কিন্তু । ক্লাস মানে এখানে একটা হাবিজাবি প্রোগ্রামিং এর ভাষায় লিখা। মানে কিছু লিখব আর সেটা কিছু করবে। অনেকটা আলাউদ্দিনের প্রদীপ এর জ্বীনের মত যা নির্দেশ দিব সে করে ফেলবে জটপট দেরি না করে। পার্থক্য শুধু আলাউদ্দিনের প্রদীপ এর জ্বীন ৩টা ইচ্ছা পূরণ করে আর আমাদের ক্লাস অসংখ্য ইচ্ছা পূরণ করবে। তাহলে মনে প্রশ্ন জাগতে পারে ক্লাস কাকে বলে? আমাকে যদি কেউ জিজ্ঞাসা করে আমি কি এটা বলে দিব ? উত্তর হলো দিতে পারেন তবে আরেকটু পড়ে জেনে বুঝে উত্তর দিলে খাপে খাপ কমালার বাপ হয় যাবে একদম । তাহলে আসেন সেটা কিভাবে জেনে নেই ।

অন্যান্য ক্ষেত্রের থেকে জাভাস্ক্রিপ্টে ক্লাসের বিষয়টা একটু ভিন্ন। জাভাস্ক্রিপ্টে ক্লাস টাও একটা ফাংশন । ECMAScript 2015 এর পর থেকে জাভাস্ক্রিপ্টে ক্লাস বৈশিষ্ট্য যুক্ত করা হয়। সুতরাং ক্লাস হচ্ছে জাভাস্ক্রিপ্টে স্পেশাল একটা ফাংশন। যেখানে আপনি ফাংশন লিখতে পারবেন প্রোপার্টি যুক্ত করতে পারবেন। অন্য আরেকটি ক্লাসের প্রোপার্টি ইনহেরিট করতে পারবেন। সুবিধা মত ব্যবহার করতে পারবেন । কিন্তু যদি প্রোগ্রামিং কে অনুসরন করে বলতে যায় ক্লাস হচ্ছে একটা ইউজার ডিফাইন্ড ডাটাটাইপ যেখানে ইউজার তাদের তাদের প্রয়োজনীয় ডাটা গুলো লিখে রাখে এবং প্রয়োজনে ব্যবহার করে থাকে। MDN অফিশিয়াল সাইটে ক্লাস সম্পর্কে যা বলা হয়েছে

Classes are a template for creating objects. They encapsulate data with code to work on that data. Classes in JS are built on but also have some syntax and semantics that are unique to classes.

অর্থাৎ ক্লাস অবজেক্ট তৈরি করার জন্য একটি টেমপ্লেট। তারা সেই ডেটাতে কাজ করার জন্য কোড সহ ডেটা এনক্যাপসুলেট করে। JS-এর ক্লাসগুলি প্রোটোটাইপের উপর নির্মিত কিন্তু কিছু সিনট্যাক্স এবং নিজস্ব কিছু বৈশিষ্ট্য রয়েছে যা ক্লাসের জন্য অনন্য।

ক্লাস কিভাবে লিখে সেটা একটু দেখে নেই ...

class Book{
   constructor(){
   this.property_1;
   this.property_2;
   this.property_3;
   }
  
  func_1(){
  
  }
  func_2(){
  
  }
  
  func_3(){
  
  }
  
  -------------------
  ------------------
  func_n(){
  
  }
  
}

আচ্ছা কিভাবে লিখতে তা তো দেখলাম এখন আমারা দেখব কতভাবে ক্লাস Declare করা যায়

// বেসিক Decleartion
class Animal {
  constructor(leg, size, color) {
    this.leg = leg;
    this.size = size;
    this.color = color;
  }
}

// Expression; Variable এ ক্লাস decleartion
const Animal = class {
  constructor(leg, size, color) {
    this.leg = leg;
    this.size = size;
    this.color = color;
  }
}

// Expression; ক্লাসের নাম দিয়ে ক্লাস decleartion
const Animal = class AnimalClass {
  constructor(leg, size, color) {
    this.leg = leg;
    this.size = size;
    this.color = color;
  }
}

ক্লাস শুরু হয় কিন্তু ২য় বন্ধনি বা curly brackets { }দিয়ে। এর মাঝেই আপনাকে লিখতে হবে আপনি ক্লাসে যে কাজ গুলো করতে চান । সেইটা হতে পারে মেম্বার ফাংশন অথবা কন্সট্রাক্টর ফাংশন।চলুন আরেকটা উদাহরণ দেখে নেইঃ

class Person{
  //constructor function
  constructor(name, age, height){
     this.name = name;
     this.age = age;
     this.height = height;
  }
  
  //member function which show name of person
  showName(){
    return this.name;
  }
  
  //member function which show age of person
  showAge(){
    return this.age;
  }
  
  //member function which show height of person
  showHeight(){
    return this.height;
  }
  

ক্লাসের সুবিধা কি এবং কেন ব্যবহার করব?

  • Abstraction ইমপ্লিমেন্ট করতে বা ডাটা এবং প্রসেস হাইডিং এর জন্য।

  • Encapsulation ইমপ্লিমেন্ট করে ডাটার নিরপত্তা প্রদানের জন্য।

  • কোডে Reusability বাড়ানোর জন্য।

  • ক্লাস Modularity ডিজাইন সাপোর্ট করে যেইটার মাধ্যমে আপনি সহজেই স্বাধীন ভাবে আপনার কোডের নির্দিষ্ট অংশকে অন্য মডিউলে ব্যবহারের সুজো পাচ্ছেন।

  • Inheritance ব্যবহার করে অন্য ক্লাসের বৈশিষ্ট্য নিজ ক্লাসে ব্যবহারের সুযোগ পাচ্ছেন।

  • Polymorphism এর মাধ্যমে আপনি একই অবজেক্ট বা ফাংশনের বিভিন্ন রূপে ব্যবহারের সুযোগ পাবেন।

  • গুছালো কোড সেই সাথে নির্দিষ্ট কোন অবজেক্ট কে কোড রূপান্তর করে বিভিন্ন ভাবে ব্যাবহারের সুযোগ পাচ্ছেন।

  • প্রয়োজন অনুযায়ী নিজস্ব ডাটা টাইপ তৈরির সুবিধা পাচ্ছেন built-in ডাটা টাইপ ব্যবহার করে।

  • কিছু গুচ্ছ কোড কেন লিখেছেন সেইটা অবজেক্ট নাম দেখেই বুঝতে পাড়া এবং কোড কমপ্লেক্সিটি কমিয়ে আনা।

prototypes