এটা কি বলা উচিত যে কোনও কিছুর private
কোডিং করার সময় সবকিছুকে সামনে রেখে ডিফল্ট করা ভাল অনুশীলন ?
এবং তারপরে কেবল এটিকে আপগ্রেড করুন protected
যদি একটি সাবক্লাসের এটি প্রয়োজন হয়, বা public
অন্য শ্রেণীর যদি এটির প্রয়োজন হয়?
এটা কি বলা উচিত যে কোনও কিছুর private
কোডিং করার সময় সবকিছুকে সামনে রেখে ডিফল্ট করা ভাল অনুশীলন ?
এবং তারপরে কেবল এটিকে আপগ্রেড করুন protected
যদি একটি সাবক্লাসের এটি প্রয়োজন হয়, বা public
অন্য শ্রেণীর যদি এটির প্রয়োজন হয়?
উত্তর:
সংক্ষিপ্ত উত্তর: হ্যাঁ
দীর্ঘ উত্তর:
হ্যাঁ, তবে এটিকে ব্যক্তিগত সমস্ত কিছু দিয়ে আপনার ক্লাস লিখে শুরু করার পরামর্শ হিসাবে ব্যাখ্যা করা উচিত নয়; এই পদ্ধতির মাধ্যমে আপনি কোনও ইন্টারফেসে স্থির হওয়ার আগে প্রয়োগের বিশদটিতে দৃষ্টি নিবদ্ধ করে শ্রেণি নকশা বোঝায়।
শ্রেণি নকশা করার সময় বিবেচনা করা সবচেয়ে গুরুত্বপূর্ণ বিষয়গুলির মধ্যে এটি কীভাবে ব্যবহৃত হবে; যার মধ্যে আপনার ব্যক্তিগত / বাস্তবায়নের বিশদ সম্পর্কে চিন্তা শুরু করার আগে আপনার সর্বজনীন পদ্ধতি সম্পর্কে চিন্তাভাবনা জড়িত।
তদুপরি, এই পদ্ধতির নিজেকে সাধারণত জিজ্ঞাসা করার সম্ভাবনাগুলি হারিয়ে যায় "আমি এই শ্রেণীর জন্য ইউনিট পরীক্ষা কীভাবে লিখব?" - আপনি প্রকৃতপক্ষে ইউনিট পরীক্ষা না লিখলেও এটি জিজ্ঞাসা করা একটি গুরুত্বপূর্ণ প্রশ্ন। (সম্পর্কিত: "ডিজাইনের নীতিগুলি যা টেস্টেবল কোড প্রচার করে?" )
সুতরাং, একবার আপনি পাবলিক ইন্টারফেসটি সংজ্ঞায়িত করে নিলেন, তবে বাকীগুলি ব্যক্তিগত হিসাবে ডিফল্ট করা ভাল ধারণা কারণ এটির বেশিরভাগটি সাধারণত গ্রিটি বাস্তবায়ন বিশদ হবে যা শ্রেণীর বাইরের কোনও বিষয় নিয়েই উদ্বেগ নয় of
"এবং তারপরে কেবল একটি সাবক্লাসের এটির প্রয়োজন হলে এটি সুরক্ষিত করতে আপগ্রেড করুন, অথবা অন্য শ্রেণীর যদি এটির প্রয়োজন হয় তবে সর্বজনীন?"
এটা ভুল পদ্ধতির। নকশাকালীন সময়ে, আপনার জানা উচিত যে আপনি কী সর্বজনীন অ্যাক্সেস দিতে চান । সাধারণত আপনি সর্বজনীন অ্যাক্সেস দেন কারণ এটি আপনার শ্রেণীর পুরো উদ্দেশ্য। এবং আপনি সুরক্ষিত অ্যাক্সেস দিন কারণ আপনি সাবক্লাসগুলি জিনিসগুলিতে অ্যাক্সেস করতে চান । এবং আপনি এমন জিনিসগুলির জন্য ব্যক্তিগত ব্যবহার করেন যা অন্য কারও ব্যবসা নয়।
এখন যদি কারও কাছে এমন জিনিসগুলিতে অ্যাক্সেসের প্রয়োজন হয় যা তারা অ্যাক্সেস করতে পারে না, তবে আপনার সেই প্রয়োজন সম্পর্কে সত্যিই কঠোর চিন্তা করা উচিত । তাদের সেই অ্যাক্সেসের প্রয়োজন হবে না বা আপনার নকশাটি ভুল। হয়তো আপনার নকশা হয় ভুল, এবং এমন কিছু বিষয় যা, পাবলিক হওয়া উচিত যাতে আপনি যে পরিবর্তন সার্বজনীন নয়। তবে যদি আপনার নকশাটি সঠিক হয়, তবে প্রয়োজনে কিছু ভুল আছে , তাই আপনি আপনার নকশাকে ক্ষতিগ্রস্থ করার পরিবর্তে এটি ঠিক করেন ।
private
নাকি protected
?
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের এই দিকটি বোঝার মূল বিষয়টি হ'ল ডেটা এনক্যাপসুলেশন ধারণা । ধারণাটি হ'ল কোনও শ্রেণীর প্রয়োগের বিশদটি গোপন করে বোঝার সহজ করে তোলা। একে ডেটা হিডিং বলা হয় । সুতরাং, আমরা কেবল ক্লাসটি ব্যবহার করার জন্য প্রয়োজনীয় সেই ফাংশনগুলি প্রকাশ করতে (সর্বজনীন করতে) চাই। এই ফাংশনগুলি শ্রেণীর ইন্টারফেস are
একটি গাড়ির চাকার মত একটি ইন্টারফেস চিন্তা করুন। আপনি চাকা ঘুরিয়ে গাড়িটি কোন দিকে চলে যায় তা স্থির করে নিন, তবে প্রচ্ছদের নীচে রয়েছে রোটারি ভালভ, হাইড্রোলিকস, পুলগুলি আপনার চাকাগুলির ঘূর্ণন পরিবর্তন করে, তবে গাড়ি চালানোর জন্য আপনার কোনও যান্ত্রিক প্রকৌশলী হওয়ার দরকার নেই।
সুতরাং আপনার প্রশ্নের উত্তর হ্যাঁ। আপনি যতটা সম্ভব অন্যান্য ক্লাস থেকে একটি ক্লাস সম্পর্কে অনেকগুলি তথ্য গোপন করতে চান। কোনও কিছু কখন সর্বজনীন, ব্যক্তিগত বা সুরক্ষিত হওয়া উচিত তা বোঝা শেখা সহজ তবে দক্ষ to