এটি নির্ভর করে আপনি বিকাশের চক্রে কোথায় দাঁড়িয়েছেন, তবে কখনও কখনও অ্যালগরিদমকে স্কেচ করার সময় আপনি এখনই বাস্তবায়ন ছাড়াই জটিল ব্লকগুলি সম্পর্কে বিমূর্ততা তৈরি করতে চান।
def full_algo():
init_stuff()
process_stuff()
...
আপনি কীভাবে init_stuff
কাজ করবেন তা জানেন , এটি আপনার মাথায় বরং সহজ তবে আপনার এখনই এটির দরকার নেই, তাই আপনি এটিকে একটি খালি ফাংশন হিসাবে ঘোষণা করেন। এটি আপনার কোডটি সঙ্কলিত বিশদ সম্পর্কে বিরক্ত না করে সংকলন এবং চলার অনুমতি দেবে।
প্রকাশিত অ্যাপ্লিকেশনগুলির জন্য অন্য ব্যবহার হ'ল উত্তরাধিকার ব্যবহার করার সময়। মনে করুন যে আপনার কাছে একটি বৃহত শ্রেণি রয়েছে যা প্ল্যাটফর্ম নির্দিষ্ট কোডের আচরণকে সংজ্ঞায়িত করে। আপনি এটির মতো একটি যুক্তি দিয়ে শেষ করতে পারেন:
init_filesystem();
access_files();
release_filesystem();
এই কোডটি অনেক প্ল্যাটফর্মগুলিতে কাজ করবে, তবে কিছু প্ল্যাটফর্মগুলিতে ফাইল সিস্টেমের সূচনা প্রয়োজন হতে পারে না। তারপরে আপনার উত্তরাধিকারটি দেখতে এটির মতো হবে (সি ++ এর সাথে 0 0 সহ ভার্চুয়ালটির অর্থ হ'ল উদ্ভূত শ্রেণিগুলি এই পদ্ধতিগুলি প্রয়োগ করতে হবে):
class FileSystem{
virtual void init_filesystem() = 0;
virtual void access_files() = 0;
virtual void release_filesystem() = 0;
};
তারপরে এই শ্রেণীর একটি নির্দিষ্ট প্রয়োগ (ইন্টারফেস) সেই কয়েকটি পদ্ধতির জন্য কিছু নাও করতে পারে। বিকল্পভাবে, বেস ক্লাসটি ভার্চুয়াল ঘোষণার পরিবর্তে আরম্ভ / প্রকাশের জন্য খালি পদ্ধতিগুলি ঘোষণা করতে পারে।
অবশেষে (এবং লজ্জাজনকভাবে), কখনও কখনও আপনি খুব পুরানো অ্যাপ্লিকেশন বজায় রাখেন। আপনি আশঙ্কা করছেন যে মোছার পদ্ধতিগুলি জিনিসগুলিকে ভেঙে দেবে। আপনার যখন জটিল উত্তরাধিকার থাকে যা সঠিকভাবে বোঝা যায় না বা যখন আপনার অনেক ফাংশন পয়েন্টার (কলব্যাকস) থাকে তখন এটি ঘটে। আপনি কেবল সেগুলির মধ্যে কোড মুছুন যাতে তারা কিছু না ভেঙে যেভাবেই কল করতে পারে।