(কোডিং জে এস)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
  1. ক্লাস ও অবজেক্ট অরিয়েন্টেড (class & OOP)

এনসকেপসুলেশন (Encapsulations)

Previousইনহেরিটেন্স (Inhertance)Nextঅবস্ট্রাকশন(Abstraction)

Last updated 1 year ago

ছবির রেফারেন্সঃ

আশা করি চিত্রটি দেখার পরে অনেকের কাছেই বিষয়টা অনেক সহজ আর হয়ত অনেকেই ধারণা করতে পেরেছেন। যে আসলে বিষয়টা কি?

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

কিন্তু তখন আপনি আবার বলবেন কেন? কেন? এবং কেন? চলুন তাহলে আরেকটু সুড়ঙ্গ খুড়ে বের করি কেন? কেন? এবং কেন?। ধরুন আপনি একটা ভেরিয়েবল লিখলেন person = " A real man :) " এই যে person ভেরিএবলটা লিখলেন সেইটা একবারই লিখলেন। পরবর্তীতে যদি আবার এই নামে ভ্যারিএবল লিখতে চান তখনই লেগে যাবে ঝগড়া মারামারি বলবে আমি তো আগে বসে আছি তুমি আবার আমার নামে আবার জায়গা দখল করছ। আর যদিও লিখে ফেলতে পারেন তখন নিজেই বিভ্রান্ত হয়ে যাবেন একই নামের দুইটা ভ্যারিএবল দেখে। আর এই সমস্যা গুলো থেকে বাঁচার জন্য ওষুধ কোম্পানি গুলো যেমন ক্যাপসুল করে মিক্স হওয়ার জামেলা সমাধান করে। টিক তেমন করে আমাদের ও করা লাগবে। যাতে করে আমাদের সকল ফাংশন ও ভ্যারিএবল অবাঞ্ছিত পরিবর্তন ও বিভ্রান্তিকরণ থেকে রক্ষা পাই।

উদাহরণঃ
function Car(made_by, model) {
  // Private members
  let _made_by = made_by;
  let _model = model;

  // Public method to access private members
  this.getMaker = function() {
    return _made_by;
  };

  // Public method to access private members
  this.getModel = function() {
    return _model;
  };
}

const myCar = new Car("Toyota", "Camry");

console.log(myCar.getMaker()); // Output: Toyota
console.log(myCar.getModel()); // Output: Camry

কোড লক্ষ্য করলে দেখবেন আমি এইখানে Car নামে ক্লাস বানিয়েছি আর তার মধ্যে কিছু ফাংশন এবং কিছু ভেরিয়েবল লিখেছি এবং পরবর্তীতে তার একটা ইন্সটেন্স বানিয়েছি myCar নাম দিয়ে। তারপর আমি ঐ ক্লাসে অবজেক্ট বানানোর সময় তাতে দুইটা আরগুমেন্ট দিয়েছি "Toyota", "Camry" নামে প্রথম টা ছিল কে বানিয়েছে আর দ্বিতীয়টা ছিল গাড়ির মডেল। তার পরে আমি ঐ ইন্সটেন্সের উপর ভিত্তি করে দুইটা মেথড কল করেছি একটা হচ্ছে getMaker আরেকটা getModel ।

একটু ভাল করে লক্ষ্য করলেই বুঝতে পারবেন এইখানে যে প্রোপার্টি এবং মেথড গুলো আছে এগুলো এর সাথে অন্য কোন ফাংশনের বা প্রোপার্টির কোন সম্পর্ক নেই। কেউ চাইলেও বাইরে থেকে এখানে কোন পরিবর্ত্ন করতে পারবে না মানে getMaker কে পরিবর্তন করতে পারবে না।

আশা করি বুঝতে পেরেছেন আর বুঝতে পারলেই আমার লিখা টা বৃথা হলো না

এবার আসুন কিছু অনুশীলন দেই আপনি করে নিবেন টিক টাক মতো না করলে কিন্তু বঊ পাবেন না কেন পাবেন না পরে বলব।

অনুশীলনঃ-

১। আপনি আপনার নামে একটা ক্লাস বানাবেন আর তাতে আপনার বয়স, নাম ঠিকানা যুক্ত থাকবে এবং আপনার নাম ঠিকানা আর বয়স দেখাবেন কনসোল করে।

২। মনে করুন আপনি ব্যাংক একাউন্ট আছে এর জন্য আপনি একটা ক্লাস বানাবেন এবং এবং আপনার বর্তমান ব্যালেন্স , শেষ লেনদেন ও আপনার একাউন্ট নাম্বার দেখাবেন কনসোল করে ।

৩। আপনি এখন একটা তাপমাত্রার ক্যালকুলেটর বানাবেন যেইটাতে ইনপুট হিসেবে থাকবে সেলসিয়াস তাপমাত্রা আপনাকে দেখাতে হবে ফারেনহাইটে এবং কেলভিনে।

https://algodaily.com/lessons/understanding-encapsulation-in-programming/introduction
এনসকেপসুলেশন