"হ্যালো, অ্যামিগো! আজ আমি আপনার দৃষ্টিভঙ্গির জন্য একটি নতুন এবং আকর্ষণীয় জগত খুলতে যাচ্ছি। আমি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) সম্পর্কে কথা বলছি । আপনি ইতিমধ্যে ক্লাস এবং অবজেক্টগুলি জানতে পেরেছেন। আজ আপনি যাচ্ছেন তাদের সম্পর্কে আরও জানতে, আরও অনেক কিছু।"

আমরা OOP এর চারটি স্তম্ভ দিয়ে শুরু করব। এগুলি হল বিমূর্ততা, এনক্যাপসুলেশন, উত্তরাধিকার এবং পলিমরফিজম। (তিনটি ছিল, কিন্তু বিমূর্ততা পরে যোগ করা হয়েছিল)

1) বিমূর্ততা।

বাস্তব জীবনে বিমূর্ততার একটি ভাল উদাহরণ হল একটি কোম্পানিতে কাজের বিবরণ। একটি কাজের শিরোনাম একটি জিনিস, কিন্তু তার কর্তব্য একটি সম্পূর্ণ ভিন্ন বিষয়।

কল্পনা করুন আপনি আপনার ভবিষ্যত কোম্পানির জন্য org চার্ট তৈরি করছেন। আপনি একজন সচিবের দায়িত্ব ভাগ করে নিতে পারেন, সেগুলিকে আরও কয়েকটি পদে ছড়িয়ে দিতে পারেন। আপনি সিইও-এর চাকরিকে কয়েকটি পৃথক পদে বিভক্ত করতে পারেন: প্রধান আর্থিক কর্মকর্তা, প্রধান প্রযুক্তি কর্মকর্তা, প্রধান বিপণন কর্মকর্তা, প্রধান মানব সম্পদ কর্মকর্তা। অথবা আপনি অফিস ম্যানেজার এবং নিয়োগকারীর পদ একত্রিত করতে পারেন।

ধরুন আপনি আপনার কোম্পানিতে পদগুলির জন্য নাম নিয়ে এসেছেন এবং তারপর আপনি এই পদগুলির জন্য দায়িত্বগুলি "ডিশ আউট" করেন। এটি বিমূর্ততা - বড় এবং একচেটিয়া কিছুকে কয়েকটি ছোট অংশে বিভক্ত করা।

OOP: মৌলিক নীতি - 1

একজন প্রোগ্রামারের দৃষ্টিকোণ থেকে, বিমূর্ততা সঠিকভাবে একটি প্রোগ্রামকে বস্তুতে ভাগ করে।

একটি বড় প্রোগ্রাম সাধারণত এক ডজন বিভিন্ন উপায়ে ইন্টারঅ্যাক্টিং অবজেক্ট হিসাবে উপস্থাপন করা যেতে পারে। বিমূর্ততা আপনাকে একটি বস্তুর প্রধান বৈশিষ্ট্য বাছাই করতে এবং কম গুরুত্বপূর্ণ কিছু বাদ দিতে দেয়।

বিমূর্ততা একটি সামরিক কৌশলের মতো। আপনি যদি ভুল কৌশল বেছে নেন, কোন বুদ্ধিদীপ্ত কৌশল দিনটিকে বাঁচাতে পারবে না।

2) এনক্যাপসুলেশন।

এনক্যাপসুলেশন বস্তুর মধ্যে মিথস্ক্রিয়াকে সরলীকরণের মাধ্যমে উন্নত করার উদ্দেশ্যে।

OOP: মৌলিক নীতি - 2

কোন কিছুকে সহজ করার সর্বোত্তম উপায় হল তাদের কাছ থেকে জটিল কিছু লুকিয়ে রাখা যাদের এটি সম্পর্কে জানার প্রয়োজন নেই। উদাহরণস্বরূপ, আপনি যদি একটি বোয়িং জেটের পাইলট নিয়ন্ত্রণের পিছনে বসে থাকেন, তাহলে তারা কীভাবে কাজ করে তা বুঝতে অনেক সময় লাগবে:

OOP: মৌলিক নীতি - 3

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

প্রোগ্রামিং এর পরিপ্রেক্ষিতে, এনক্যাপসুলেশন হল "বাস্তবায়ন লুকিয়ে রাখা"। আমি সেই সংজ্ঞা পছন্দ করি। আমাদের ক্লাসে শত শত পদ্ধতি থাকতে পারে এবং বিভিন্ন পরিস্থিতিতে অত্যন্ত জটিল আচরণ প্রয়োগ করতে পারে। কিন্তু আমরা এর সমস্ত পদ্ধতি লুকিয়ে রাখতে পারি চোখ ধাঁধানো (এগুলিকে " ব্যক্তিগত " চিহ্নিত করে ), অন্যান্য শ্রেণীর সাথে মিথস্ক্রিয়া করার জন্য শুধুমাত্র দুই বা তিনটি পদ্ধতি রেখে (এগুলিকে " পাবলিক " চিহ্নিত করে)। তারপর আমাদের প্রোগ্রামের অন্যান্য সমস্ত ক্লাস এই ক্লাসে এই কয়েকটি পদ্ধতি শুধুমাত্র দেখবে—এবং কল করবে । ক্লাসের সমস্ত জটিলতা ভিতরে লুকিয়ে থাকবে, ঠিক যেমন ককপিট খুশি যাত্রীদের দৃষ্টি থেকে রাখা হয়।

3) উত্তরাধিকার।

উত্তরাধিকার প্রোগ্রামিং এবং বাস্তব জীবনের একটি ধারণা। প্রোগ্রামিং-এ, উত্তরাধিকার হল দুটি শ্রেণীর মধ্যে একটি বিশেষ সম্পর্ক। কিন্তু বাস্তব জীবনে উত্তরাধিকার অনেক বেশি আকর্ষণীয়।

আমাদের যদি বাস্তব জীবনে কিছু তৈরি করতে হয়, আমাদের কাছে দুটি বিকল্প রয়েছে:

1) স্ক্র্যাচ থেকে আমাদের যা প্রয়োজন তা তৈরি করুন এবং এটি করতে প্রচুর সময় এবং প্রচেষ্টা ব্যয় করুন।

2) ইতিমধ্যে বিদ্যমান জিনিসগুলি ব্যবহার করে আমাদের যা প্রয়োজন তা তৈরি করুন।

সর্বোত্তম কৌশলটি হল: আমরা একটি বিদ্যমান ভাল সমাধান গ্রহণ করি, আমাদের প্রয়োজন মেটাতে এটিকে পুনরায় কাজ করি এবং পরিবর্তন করি এবং তারপরে এটি ব্যবহার করি।

বিবেচনা করুন, মানুষের বিবর্তন। আমরা যদি গ্রহে জীবনের শুরুতে তাদের সূচনা খুঁজে দেখি, আমরা দেখতে পাই যে কোটি কোটি বছর কেটে গেছে। কিন্তু আমরা যদি মানুষকে বানর থেকে শুরু করে ভাবি, তাহলে মাত্র কয়েক মিলিয়ন বছর কেটে গেছে। স্ক্র্যাচ থেকে কিছু তৈরি করতে বেশি সময় লাগে। অনেক লম্বা.

একইভাবে, প্রোগ্রামিংয়ে আমরা একটি ক্লাসের উপর ভিত্তি করে আরেকটি শ্রেণী তৈরি করতে পারি। নতুন শ্রেণী একটি বিদ্যমান শ্রেণীর বংশধর (উত্তরাধিকারী) হয়। এটি অত্যন্ত সহায়ক যখন আপনার ইতিমধ্যে একটি ক্লাস থাকে যাতে প্রয়োজনীয় ডেটা এবং পদ্ধতিগুলির 80-90% থাকে। আমরা কেবল একটি উপযুক্ত শ্রেণীকে আমাদের নতুন শ্রেণীর অভিভাবক হিসাবে ঘোষণা করি। অভিভাবক শ্রেণীর সমস্ত ডেটা এবং পদ্ধতি স্বয়ংক্রিয়ভাবে নতুন ক্লাসের অংশ হয়ে যায়। সুবিধাজনক, ডান?

4) পলিমরফিজম।

পলিমরফিজম হল প্রোগ্রামিং ধারণা যা সেই পরিস্থিতি বর্ণনা করে যেখানে একই ইন্টারফেসের পিছনে বিভিন্ন বাস্তবায়ন লুকিয়ে থাকে। বাস্তব জীবনে একটি এনালগ খুঁজে পেতে, আমরা একটি গাড়ি চালানোর প্রক্রিয়ার দিকে তাকাতে পারি।

যদি একজন ব্যক্তি একটি ট্রাক চালাতে পারে, তাহলে তাকে অ্যাম্বুলেন্স বা স্পোর্টস কারের চাকার পিছনেও রাখা যেতে পারে। একজন ব্যক্তি যে ধরনের গাড়িই হোক না কেন গাড়ি চালাতে পারেন, কারণ তাদের সবার একই নিয়ন্ত্রণ ইন্টারফেস রয়েছে: একটি স্টিয়ারিং হুইল, প্যাডেল এবং একটি গিয়ারশিফ। গাড়ি ভিতরে ভিন্নভাবে সংগঠিত হয়, কিন্তু তারা সব একই নিয়ন্ত্রণ ইন্টারফেস ভাগ.

প্রোগ্রামিং-এ ফিরে আসুন, পলিমরফিজম আমাদের বিভিন্ন শ্রেণীর বস্তুর সাথে (সাধারণত একটি সাধারণ পূর্বপুরুষের সাথে) একইভাবে যোগাযোগ করতে দেয়। এর তাত্পর্যকে অতিরিক্ত গুরুত্ব দেওয়া যায় না। একটি প্রোগ্রাম বড় হওয়ার সাথে সাথে এটি আরও গুরুত্বপূর্ণ হয়ে ওঠে।

OOP হল নীতি। প্রোগ্রামিং আইন। তাদের প্রত্যেকটিই আমাদেরকে কোনো না কোনোভাবে সীমাবদ্ধ করে , কিন্তু এর বিনিময়ে প্রোগ্রামগুলো বড় হওয়ার সাথে সাথে বিশাল সুবিধা প্রদান করে। ওওপির চারটি নীতি চেয়ারের চার পায়ের মতো। আপনি যদি তাদের একটিও নিয়ে যান তবে পুরো সিস্টেমটি অস্থির হয়ে যায়।