বিমূর্ত শ্রেণি বনাম ইন্টারফেস
 

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

একটি বিমূর্ত শ্রেণি কি?

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

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

একটি ইন্টারফেস কি?

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

অ্যাবস্ট্রাক্ট ক্লাস এবং ইন্টারফেসের মধ্যে পার্থক্য কী?

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