তাহলে কেন নেস্টেড ক্লাস তৈরি করবেন?
আমি কয়েকটি গুরুত্বপূর্ণ কারণ সম্পর্কে ভাবতে পারি:
1. এনক্যাপসুলেশন সক্ষম করুন
অনেক সময় নেস্টেড ক্লাসগুলি ক্লাসের প্রয়োগের বিবরণ দেয়। প্রধান শ্রেণীর ব্যবহারকারীদের তাদের অস্তিত্ব সম্পর্কে যত্ন নেওয়া উচিত নয়। প্রধান শ্রেণীর ব্যবহারকারীদের কোড পরিবর্তন করার প্রয়োজন ছাড়াই আপনার ইচ্ছামত এগুলি পরিবর্তন করতে সক্ষম হওয়া উচিত।
২. নাম দূষণ এড়ান
প্রকার, ভেরিয়েবল, ফাংশন ইত্যাদিকে কোনও সুযোগে যুক্ত করা উচিত নয় যতক্ষণ না সেগুলি সুযোগে উপযুক্ত হয়। এটি এনক্যাপসুলেশনের চেয়ে কিছুটা পৃথক। নেস্টেড টাইপের ইন্টারফেসটি এক্সপোজ করার জন্য এটি দরকারী হতে পারে তবে নেস্টেড টাইপের উপযুক্ত স্থানটি এখনও প্রধান শ্রেণি। সি ++ জমিতে, পুনরুক্তি করার ধরণগুলি এরকম একটি উদাহরণ। এটির ক্ষেত্রে কংক্রিটের উদাহরণ দেওয়ার জন্য আমি সি # তে যথেষ্ট অভিজ্ঞ নই।
আসুন কেন একটি নেস্টেড বর্গকে মূল শ্রেণীর মতো একই স্কোপে স্থানান্তরিত করাই তা বোঝানোর জন্য একটি সরল উদাহরণ বানাতে পারি নাম হ'ল নাম দূষণ। ধরা যাক আপনি একটি লিঙ্কযুক্ত তালিকার শ্রেণি প্রয়োগ করছেন। সাধারণত, আপনি ব্যবহার করতে হবে
publid class LinkedList
{
class Node { ... }
// Use Node to implement the LinkedList class.
}
আপনি যদি Nodeসেই একই সুযোগে চলে যাওয়ার সিদ্ধান্ত নেন তবে আপনার কাছে তা LinkedListথাকবে
public class LinkedListNode
{
}
public class LinkedList
{
// Use LinkedListNode to implement the class
}
LinkedListNodeLinkedListক্লাস নিজেই ছাড়া দরকারী হওয়ার সম্ভাবনা নেই । এমনকি যদি LinkedListএমন কিছু ফাংশন সরবরাহ করা LinkedListNodeথাকে যা কোনও ব্যবহারকারীর LinkedListব্যবহার করতে পারে এমন কোনও বস্তুটিকে ফিরিয়ে দেয় তবে এটি LinkedListNodeকেবল তখনই LinkedListব্যবহারযোগ্য হয়। যে কারণে, "নোড" শ্রেণিকে একটি পিয়ার ক্লাস তৈরি করে LinkedListএটির সমন্বিত সুযোগকে দূষিত করছে।