স্থির পদ্ধতিগুলির সাথে ওভাররাইড প্রক্রিয়াটির যথাযথ নিয়ন্ত্রণ সরবরাহ করার কোনও বিষয় নেই।
সাধারণ শ্রেণি / দৃষ্টান্ত ভার্চুয়াল পদ্ধতি প্রক্রিয়াটি নীচে ওভাররাইডগুলির সূক্ষ্মভাবে সুরক্ষিত নিয়ন্ত্রণের জন্য অনুমতি দেয়: প্রতিটি আসল বস্তু হ'ল এক শ্রেণির উদাহরণ। এই শ্রেণিটি ওভাররাইডগুলির আচরণ নির্ধারণ করে; এটি ভার্চুয়াল পদ্ধতিতে সর্বদা প্রথম ক্র্যাক পায়। এরপরে এটি বাস্তবায়নের জন্য সঠিক সময়ে পিতামাতাকে কল করতে পছন্দ করতে পারে। তারপরে প্রতিটি প্যারেন্ট পদ্ধতিতে তার পিতামাতার পদ্ধতিটি শুরু করার পালা আসে। এর ফলে পিতামাতাদের অনুরোধগুলির একটি দুর্দান্ত ক্যাসকেডের ফলস্বরূপ, যা কোডটির পুনরায় ব্যবহারের একটি ধারণাটি উপস্থাপন করে যা অবজেক্ট অরিয়েন্টেশনটির জন্য পরিচিত। (এখানে বেস / সুপার ক্লাসের কোডটি তুলনামূলকভাবে জটিল উপায়ে পুনরায় ব্যবহার করা হচ্ছে; ওওপি-তে কোড পুনরায় ব্যবহারের আরেকটি অরথোগোনাল ধারণাটি কেবল একই শ্রেণীর একাধিক অবজেক্টে রয়েছে))
বেস ক্লাসগুলি বিভিন্ন সাবক্লাস দ্বারা পুনরায় ব্যবহার করতে পারে এবং প্রতিটি স্বাচ্ছন্দ্যে সহাবস্থান করতে পারে। প্রতিটি শ্রেণি যা বস্তুগুলিকে তার নিজস্ব আচরণ নির্দেশ করে শান্তিতে এবং একই সাথে অন্যের সাথে সহাবস্থান করতে ব্যবহৃত হয়। ক্লায়েন্টটি কোন আচরণটি চায় তার উপর নিয়ন্ত্রণ করে এবং কখন কোন শ্রেণিটি বেছে নিয়ে কোনও বস্তুকে তাত্ক্ষণিকভাবে ব্যবহার করতে এবং পছন্দসইভাবে অন্যের কাছে চলে যায় choosing
(এটি একটি নিখুঁত প্রক্রিয়া নয়, যেহেতু কেউ সর্বদা সমর্থিত নয় এমন ক্ষমতাগুলি সনাক্ত করতে পারে তবে অবশ্যই কারখানা পদ্ধতি এবং নির্ভরতা ইনজেকশনের মতো নিদর্শনগুলি শীর্ষে স্তরযুক্ত))
সুতরাং, যদি আমরা স্ট্যাটিক্সের জন্য অন্য কোনও পরিবর্তন না করে ওভাররাইডের ক্ষমতা তৈরি করি তবে আমাদের ওভাররাইডগুলি অর্ডার করতে অসুবিধা হবে। ওভাররাইডের প্রয়োগযোগ্যতার জন্য একটি সীমাবদ্ধ প্রসঙ্গটি সংজ্ঞায়িত করা শক্ত হবে, সুতরাং আপনি স্থানীয়ভাবে বস্তুর মতো স্থানীয়ভাবে ওভাররাইড পাবেন না। আচরণে স্যুইচ করার কোনও উদাহরণ নেই। সুতরাং, কেউ যদি স্থির পদ্ধতিটিকে অন্য শ্রেণীর দ্বারা ওভাররাইড করা হয়েছে বলে ডাকে, ওভাররাইডটি নিয়ন্ত্রণ পাওয়া উচিত কি না? যদি এমন একাধিক ওভাররাইড থাকে তবে প্রথমে কারা নিয়ন্ত্রণ পান? দ্বিতীয়? উদাহরণস্বরূপ অবজেক্টের ওভাররাইডগুলির সাথে, এই সমস্ত প্রশ্নের অর্থপূর্ণ এবং যুক্তিসঙ্গত উত্তর রয়েছে, তবে স্ট্যাটিক্সের সাথে তারা তা দেয় না।
স্ট্যাটিক্সের জন্য ওভাররাইডগুলি যথেষ্ট বিশৃঙ্খলাযুক্ত হবে এবং এর আগে এমন কিছু আগেও হয়ে গেছে।
উদাহরণস্বরূপ, ম্যাক ওএস সিস্টেম 7 এবং পূর্বে অপারেটিং সিস্টেমের আগে অ্যাপ্লিকেশন-তৈরি সিস্টেম কলগুলির নিয়ন্ত্রণ পেয়ে সিস্টেমটি প্রসারিত করার জন্য একটি ট্র্যাপ প্যাচিং প্রক্রিয়া ব্যবহৃত হয়েছিল। আপনি সিস্টেম কল প্যাচ টেবিলটি ফাংশন পয়েন্টারগুলির একটি অ্যারে হিসাবে ভাবতে পারেন , উদাহরণস্বরূপ অবজেক্টগুলির জন্য অনেকগুলি যেমন একটি একক গ্লোবাল টেবিল ছাড়া।
এটি ট্র্যাপার প্যাচিংয়ের নিরবচ্ছিন্ন প্রকৃতির কারণে প্রোগ্রামারদের জন্য অবিচ্ছিন্ন শোকের কারণ হয়েছিল। যে জালটি সর্বশেষে ফাঁদ পেতে পেল সে মূলত জিতল, এমনকি তারা না চাইলেও জিতেছে। ট্র্যাপের প্রতিটি প্যাচার পূর্ববর্তী ট্র্যাপ মানটি বাছাই করে পিতামাতার কল সাধ্যের জন্য, যা অত্যন্ত ভঙ্গুর ছিল। ট্র্যাপ প্যাচ অপসারণ করে বলুন, যখন আপনার আর কোনও সিস্টেম কল সম্পর্কে জানার দরকার পড়েনি তখন খারাপ ফর্ম হিসাবে বিবেচিত হত কারণ আপনার প্যাচ সরিয়ে দেওয়ার জন্য আপনার কাছে সত্যিকারের তথ্য নেই (যদি আপনি এটি করেন তবে আপনি অনুসরণ করা অন্য কোনও প্যাচও আনপ্যাচ করবেন) আপনি).
এটি বলার অপেক্ষা রাখে না যে স্ট্যাটিক্সের ওভাররাইডগুলির জন্য একটি প্রক্রিয়া তৈরি করা অসম্ভব হবে, তবে আমি সম্ভবত এর পরিবর্তে যা করতে পছন্দ করব তা হ'ল স্থির ক্ষেত্রগুলি এবং স্থির পদ্ধতিগুলি উদাহরণস্বরূপ ক্ষেত্রগুলিকে এবং মেটাক্লাসগুলির উদাহরণ পদ্ধতিগুলিতে পরিণত করা, যাতে স্বাভাবিক বস্তু ওরিয়েন্টেশন কৌশলগুলি তখন প্রয়োগ করা হবে। নোট করুন যে সিস্টেমগুলিও এটি করে: সিএসই 341: ছোট্টকল ক্লাস এবং মেটাক্লাস ; আরও দেখুন: জাভা এর স্ট্যাটিকের সমকক্ষ সমতুল্য কী?
আমি এটি বলার চেষ্টা করছি যে এটি যুক্তিসঙ্গতভাবে আরও ভালভাবে কাজ করতে আপনাকে কিছু গুরুতর ভাষা বৈশিষ্ট্য নকশা করতে হবে। উদাহরণস্বরূপ, একটি নির্বোধ দৃষ্টিভঙ্গি করা হয়েছিল, পাশাপাশি দুর্বল হয়েছিলেন, তবে খুব সমস্যাযুক্ত ছিল এবং যুক্তিযুক্তভাবে (অর্থাত্ আমি তর্ক করব) অসম্পূর্ণ এবং অ্যাবস্ট্রাকশন ব্যবহার করা কঠিন সরবরাহ করে স্থাপত্যগতভাবে ত্রুটিযুক্ত।
চমত্কারভাবে কাজ করার জন্য আপনি স্ট্যাটিক ওভাররাইড বৈশিষ্ট্যটি ডিজাইনিংয়ের কাজটি সম্পন্ন করে সবেমাত্র আপনি মেটাচ্লাসের কিছু ফর্ম উদ্ভাবন করেছেন যা শ্রেণিভিত্তিক পদ্ধতিতে / ওওপির একটি প্রাকৃতিক বর্ধন। সুতরাং, এটি না করার কোনও কারণ নেই - এবং কিছু ভাষা আসলে করে। সম্ভবত এটি বেশ কয়েকটি সীমানার প্রয়োজন যা বেশ কয়েকটি ভাষা না করাকে পছন্দ করে।
self
পয়েন্টার পাস করে যা ক্লাসের দিকে নির্দেশ করে, শ্রেণীর উদাহরণ নয়।