Skip to main content

Command Palette

Search for a command to run...

𝐎𝐎𝐏 𝐤𝐨𝐭𝐡𝐨𝐧 - 𝟎2

Published
•4 min read•View as Markdown
A

Frontend Developer with 3 years of experience building scalable, SEO-optimized web applications using React.js, Next.js, and modern JavaScript ecosystems. Skilled in performance optimization, advanced state management (Redux, React Query), and driving frontend architecture decisions within Agile development teams.

প্রোগ্রামিং মডেল [𝐏𝐫𝐨𝐠𝐫𝐚𝐦𝐦𝐢𝐧𝐠 𝐏𝐚𝐫𝐚𝐝𝐢𝐠𝐦]:

আমরা যখনই কোন প্রোগ্রাম লিখি তখন নিচের মডেলগুলোর মধ্যে যেকোন একটি মডেলকে অনুসরণ করে প্রোগ্রাম লিখে থাকি। অনেক মডেলই আছে এবং কিছু কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ নির্দিষ্ট কিছু মডেল মেনে চলে। Java কে একটি পিওর OOP ল্যাঙ্গুয়েজ বলা চলে। কারণ Java কোড চালাতে গেলে আপনাকে কমপক্ষে একটি ক্লাস ও একটি মেইন ফাংশন ব্যবহার করতেই হবে। আবার C++ এ আমরা Procedural/Functional/OOP ইত্যাদি যেকোন মডেল অ্যাপ্লাই করতে পারি। আমি এখানে দুইটি মডেলের কথা বলছি।

𝗣𝗿𝗼𝗰𝗲𝗱𝘂𝗿𝗮𝗹:

একে Imperative Programming বলা হয়ে থাকে। C তে আমরা যেসব কোড লিখি তা প্রায় সবই Procedural। কারণ কোডটি শুরু থেকে শেষ পর্যন্ত চলে এবং লাইন বাই লাইন (পড়ুন স্টেটমেন্ট বাই স্টেটমেন্ট) এক্সিকিউট হয়। অন্য কথায় Top To Bottom Approach। যখন একটা নির্দিষ্ট কাজ আমাদের করতে হয় এবং তার জন্য এমন একটি প্রোগ্রাম লিখলেই হয় যেটা টপ টু বটম রান করবে এবং সমস্যাটি সমাধান করবে তখন আমরা Procedural প্রোগ্রামিং মডেল ব্যবহার করে থাকি। এই মডেলে একাধিক ফাংশন ও একটি মেইন ফাংশন ব্যবহার করা হয়। BASIC, Pascal ও C তে Procedural Programming মডেল অনুসরণ করা হয়। সফটওয়্যার ডেভেলপিংয়ে এর প্রয়োগ নেই বললেই চলে।

𝐃𝐢𝐬𝐚𝐝𝐯𝐚𝐧𝐜𝐞 𝐨𝐟 𝐩𝐫𝐨𝐜𝐞𝐝𝐮𝐫𝐚𝐥 𝐏𝐫𝐨𝐠𝐫𝐚𝐦𝐦𝐢𝐧𝐠 :

  • Code is not reusable

  • large code base is hard to manage

  • difficult to track & fix bugs

  • Data is exposed to the whole program

  • Here, the operation's priority is higher than the data

  • difficult to relate to real-world data

To get rid of the above problems we use OOP

C তে একটি Procedural Programming এর উদাহরণ:

int add(int a, int b)

int main(){
int firstNum = 6;
int secondNum = 15;
int sum;

sum = add(firstNum,secondNum);
printf("sum= ",sum);
return 0;
}

int add(int a,int b){
int result;
result = a + b;
return result;
}

𝗢𝗯𝗷𝗲𝗰𝘁 𝗢𝗿𝗶𝗲𝗻𝘁𝗲𝗱:

একই প্রোগ্রাম যদি আমরা C++ এ অবজেক্ট ওরিয়েন্টেড স্টাইলে লিখি তাহলে হবে এইরকম:


#include <iostream>
class addNumbers
{
public:
int sum;
addNumbers(int, int); // এটা হল Constructor, Constructor কিছু রিটার্ন করে না, চিন্তা করার কিছু নেই পরে আলোচনা করা হবে
};

addNumbers::addNumbers(int num1, int num2){
    sum = num1 + num2;
}

int main(){
    addNumbers object(1,2);
    std::cout << "Sum: " << object.sum;
}

একই প্রোগ্রাম যদি আমরা typescript এ অবজেক্ট ওরিয়েন্টেড স্টাইলে লিখি তাহলে হবে এইরকম:

class Sum {
  firstNum!: number;
  secondNum!: number;
  constructor(first: number, second: number) {
    (this.firstNum = first), (this.secondNum = second);
  }
  addNumbers() {
    const sum = this.firstNum + this.secondNum;
    return sum;
  }
  result() {
    console.log('Sum: ', this.addNumbers());
  }
}

const addNumbers = new Sum(10, 20);
addNumbers.result();

Object Oriented Programming এর অ্যাপ্রোচ বটম টু টপ। অবজেক্ট ওরিয়েন্টেড ডিজাইনে যেটা থাকতেই হবে তা হল ক্লাস ও অবজেক্ট। এটা ছাড়া OOP চিন্তাই করা যায় না।

দেখা যাক 𝐎𝐎𝐏 তে আমরা কি কি 𝐟𝐞𝐚𝐭𝐮𝐫𝐞 পাচ্ছিঃ

  • All the features of Structured Programming

  • Class, Object

  • Encapsulation

  • Inheritance

  • Polymorphism

ক্লাস (𝐜𝐥𝐚𝐬𝐬) (𝐁𝐥𝐮𝐞𝐏𝐫𝐢𝐧𝐭 𝐨𝐟 𝐎𝐛𝐣𝐞𝐜𝐭) :

  • ক্লাস হচ্ছে একটি প্রোটোটাইপ যা একটি অবজেক্টের আচরণ নির্ধারণ করে। একটি ক্লাসের অবজেক্ট গুলো কেমন হবে বা তাদের বৈশিষ্ট্য কেমন থাকবে তা একটি ক্লাসে ডিফাইন করা থাকে। অর্থাৎ ক্লাস হচ্ছে একটি ব্লু-প্রিন্ট যার প্যাটার্ন অনুযায়ী সব গুলো অবজেক্ট তৈরি হয়।

ধরা যাক, আমাদের একটা বাড়ি বানানোর নকশা আছে। এখন ঐ নকশা দেখে আমরা যতগুলো বাড়ি বানাবো সব গুলো হবে সেই নকশার একেকটা অবজেক্ট এবং সেই নকশাটি হবে এদের ক্লাস।

অবজেক্ট(𝐨𝐛𝐣𝐞𝐜𝐭) (𝐈𝐧𝐬𝐭𝐚𝐧𝐜𝐞 𝐨𝐟 𝐂𝐥𝐚𝐬𝐬) :

  • কোন ক্লাসের অবজেক্ট হল সেই ক্লাসের সকল প্রপার্টি ধারন করা একটি ভ্যারিয়েবল। অবজেক্ট কে ইন্সট্যান্স ও বলা হয়। প্রত্যেকটি অবজেক্ট ই একটি নির্দিষ্ট টাইপের। ক্লাসের অবজেক্ট-কে দুই ভাবে তৈরি করা যায়। অ্যাট্রিবিউট রেফারেন্স ও ইন্সটেন্সিয়েশন। অ্যাট্রিবিউট হল কোন ক্লাসের ভেতরে থাকে এর প্রোপার্টিস, মেথডস ইত্যাদি।

ক্লাস ভ্যারিয়েবল -:

  • ক্লাসের যে ভ্যারিয়েবল গুলো ওই ক্লাসের সকল অবজেক্ট ব্যবহার করতে পারে সেগুলোই হল ক্লাস ভ্যারিয়েবল।ক্লাস ভ্যারিয়েবল ক্লাসের ভেতরে ডিফাইন করা হলে ও যেকোন মেথডের বাহিরে ডিফাইন করা হয়।

ইন্সটেন্স ভ্যারিয়েবল -:

  • যে ভ্যারিয়েবল ক্লাসের কোন মেথডের ভেতর ডিফাইন করা হয় তাকে ইন্সট্যান্স ভ্যারিয়েবল বলে।

ডেটা মেম্বার -:

  • ক্লাস ভ্যারিয়েবল এবং ইন্সট্যান্স ভ্যারিয়েবল কে ওই ক্লাসে ডেটা মেম্বার বলে।
**Class declares:**

class Vehicle{

//properties/Attribute (color, price, speed)

constructor(){ }
//Methods/Behaviors (Start(), Stop() )
}

class Car{

model: string | undefined; //class variable + //properties/Attribute
year: number | undefined; => year is the Attribute name and the number is the Attribute type
price: string | undefined;

constructor(model, year,price){
    this.model = model;
    this.year = year;
    this.price = price
}

drive() { //Methods/Behavious
    console.log('The Car has Started driving');
}

stop() {
    console.log('The car has stopped'); }
}

const tesla = new Car();
tesla.model = 'Model X';
tesla.price = '$114,990'; 
tesla.year = 2022;
tesla.drive(); tesla.stop();

Constructor

The constructor is a special type of method that is called when creating an object. In TypeScript, the constructor method is always defined with the name "constructor".

class Employee {

    empCode: number;
    empName: string;

    constructor(empcode: number, name: string ) {
        this.empCode = empcode;
        this.name = name;
    }
}

check my previous post :

𝗢𝗢𝗣 𝗸𝗼𝘁𝗵𝗼𝗻 -𝟬1
রেন্ডারিং কি জিনিস, কেন শিখবো, এটা দিয়ে কি করে এবং csr,ssr,ssg

𝙾𝙾𝙿𝚔𝚘𝚝𝚑𝚘𝚗𝟶3……𝙻𝙾𝙰𝙳𝙸𝙽𝙶……

More from this blog

🚀 Docker Bind Mount ও Anonymous Volume ব্যবহার করে Local Codebase এর সাথে Container যুক্ত করা —

➡️ যখন আমরা bind mount ব্যবহার করি, তখন আমরা host machine-এর নির্দিষ্ট কোনো ফোল্ডার ঠিক করে দিই, যেটা কন্টেইনারের কোনো ফোল্ডারের সঙ্গে সরাসরি যুক্ত হয়ে যায়। এতে কন্টেইনারে পরিবর্তন করলে লোকাল ফাইলেও সেটা সাথে সাথে দেখা যায় — একেবারে রিয়েল টাইমে। 🧠...

Jul 3, 20253 min read

🚢 ডকার ভলিউম (Docker Volumes)

ডকার ভলিউম (Docker Volumes) : ডকার ভলিউম এমন একটি পদ্ধতি, যার মাধ্যমে কনটেইনারের ভিতরের ডেটা হোস্ট মেশিনে সংরক্ষণ করা যায়।যা ডকার কন্টেইনারের মধ্যে ডেটা সংরক্ষণ এবং শেয়ার করার জন্য ব্যবহৃত হয়। এটি ডেটাকে পারসিস্ট (স্থায়ীভাবে রাখা) করতে সাহায্য করে...

Jun 26, 20252 min read

How to Use MongoDB Transactions & Rollbacks

Transaction কী? Transaction এর মাধ্যমে একাধিক ডাটাবেইস অপারেশন একসাথে execute হয়, এবং সবগুলো সফল হলে তবেই ডাটাবেজে স্থায়ীভাবে save হয়। যদি কোনো একটি অপারেশন fail করে, তাহলে সবকিছু rollback হয়ে যায় — অর্থাৎ, কোনো ডেটা চেঞ্জই হয় না। উদাহরণ: ধরো তুমি এ...

May 27, 20251 min read

🐳 Docker Registry ও Repository: এক নজরে সহজ ব্যাখ্যা

🗂️ Docker Registry Docker Registry হল একটি centralized location যেখানে Docker কন্টেইনার ইমেজগুলি সংরক্ষণ এবং শেয়ার করা হয়। এটি পাবলিক বা প্রাইভেট হতে পারে। 👉 Docker Hub একটি পাবলিক রেজিস্ট্রি যা যে কেউ ব্যবহার করতে পারে এবং এটি ডিফল্ট রেজিস্ট্রি। ...

Apr 15, 20252 min read

🐳 Docker Image ও Container বোঝার জন্য সহজ ব্যাখ্যা (Class এর সাথে তুলনা)

Docker Image হচ্ছে Docker container রান করার জন্য একটি ব্লুপ্রিন্ট। Docker Image হচ্ছে একটি executable ফাইল, যার মধ্যে আমাদের অ্যাপ্লিকেশন রান করার জন্য প্রয়োজনীয় সব instruction, configuration এবং dependency আগে থেকেই সংরক্ষিত থাকে। অর্থাৎ, আমরা ...

Apr 14, 20251 min read

Untitled Publication

13 posts