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