1. OOP এর নীতিগুলি প্রবর্তন করা

আজ আপনি একটি নতুন এবং আকর্ষণীয় বিশ্বের আবিষ্কার হবে. অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এর জগত ( OOP )। আপনি আগে ক্লাস এবং অবজেক্ট সম্পর্কে শিখেছেন। আজ আপনি তাদের সম্পর্কে আরও অনেক কিছু শিখবেন।

ওওপি প্রোগ্রামগুলির ক্রমবর্ধমান জটিলতার প্রতিক্রিয়া হিসাবে আবির্ভূত হয়েছে। যখন প্রোগ্রামগুলিতে ভেরিয়েবল এবং পদ্ধতিগুলি কয়েক হাজারের সংখ্যা শুরু করে, তখন এটি স্পষ্ট হয়ে ওঠে যে কিছু করতে হবে। একটি সমাধান ছিল পৃথক বস্তুতে ডেটা এবং সংশ্লিষ্ট পদ্ধতিগুলিকে একত্রিত করা।

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

অনেক পন্থা চেষ্টা করা হয়েছে. এবং আবিষ্কৃত সর্বোত্তম অনুশীলনের উপর ভিত্তি করে, OOP- এর 4টি নীতি উদ্ভূত হয়েছে। এগুলি হল বিমূর্ততা, এনক্যাপসুলেশন, উত্তরাধিকার এবং পলিমরফিজম । পূর্বে, শুধুমাত্র তিনটি ছিল, কিন্তু বিশেষজ্ঞরা পরে বিমূর্ততা যোগ করার সিদ্ধান্ত নিয়েছে।


2. বিমূর্ততা

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

কিন্তু সেরা মন একমত বলে মনে হচ্ছে:

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

জাভাতে, বিমূর্ত ক্লাস এবং ইন্টারফেসের মাধ্যমে বিমূর্ততা সম্পন্ন করা হয়।

বাস্তব জীবনে বিমূর্ততা

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

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

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

OOP এর নীতিগুলি প্রবর্তন করা হচ্ছে।  বিমূর্ততা

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


3. এনক্যাপসুলেশন

এনক্যাপসুলেশনের লক্ষ্য হল বস্তুকে সহজ করে মিথস্ক্রিয়া উন্নত করা।

এবং কিছু সহজ করার সর্বোত্তম উপায় হল চোখ থেকে জটিল কিছু আড়াল করা। উদাহরণস্বরূপ, যদি আপনি একটি বোয়িং জাম্বো জেটের ককপিটে প্রবেশ করেন, আপনি তাৎক্ষণিকভাবে বুঝতে পারবেন না কিভাবে এটি পরিচালনা করবেন:

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

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


4. উত্তরাধিকার

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

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

  1. অনেক সময় এবং প্রচেষ্টা ব্যয় করে স্ক্র্যাচ থেকে আমাদের প্রয়োজনীয় জিনিসটি তৈরি করুন।
  2. ইতিমধ্যে বিদ্যমান কিছুর উপর ভিত্তি করে আমাদের প্রয়োজনীয় জিনিসটি তৈরি করুন।

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

আমরা যদি মানব ইতিহাসকে তার শুরুতে ফিরে দেখি, আমরা আবিষ্কার করি যে গ্রহে জীবন শুরু হওয়ার পর থেকে বিলিয়ন বছর কেটে গেছে। কিন্তু আমরা যদি মানুষের প্রারম্ভিক বিন্দুকে আমাদের আদিম পূর্বপুরুষ হিসেবে বিবেচনা করি (অর্থাৎ মানুষ প্রাইমেট পূর্বপুরুষদের "ভিত্তিক"), তাহলে মাত্র কয়েক মিলিয়ন বছর কেটে গেছে। স্ক্র্যাচ থেকে বিল্ডিং বেশি সময় নেয়। অনেক লম্বা.

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


5. পলিমরফিজম

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

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

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

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