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