আমি সবসময় একটি ভাষায় একাধিক উত্তরাধিকার সমর্থনের ধারণাটি পছন্দ করেছি। বেশিরভাগ ক্ষেত্রে যদিও এটি ইচ্ছাকৃতভাবে ভুলে গেছে, এবং অনুমিত "প্রতিস্থাপন" ইন্টারফেস। ইন্টারফেসগুলি কেবল একই একই স্থলটিকে একাধিক উত্তরাধিকার হিসাবে কভার করে না এবং এই সীমাবদ্ধতা মাঝে মাঝে আরও বয়লারপ্লিট কোডের দিকে নিয়ে যেতে পারে।
আমি এর জন্য একমাত্র প্রাথমিক কারণটি শুনেছি বেস ক্লাসগুলির হীরা সমস্যা the আমি কেবল এটি গ্রহণ করতে পারি না। আমার কাছে, এটি একটি ভয়াবহর মতো আসে, "ভাল, এটি এড়িয়ে চলা সম্ভব , সুতরাং এটি স্বয়ংক্রিয়ভাবে একটি খারাপ ধারণা।" আপনি প্রোগ্রামিং ভাষায় যে কোনও কিছু স্ক্রু করতে পারেন, এবং আমি কিছু বোঝাতে চাইছি। আমি কেবল এটিকে গুরুত্ব সহকারে নিতে পারি না, কমপক্ষে আরও বিশদ বিবরণ ছাড়াই নয়।
এই সমস্যা সম্পর্কে সচেতন হওয়া যুদ্ধের 90%। তদুপরি আমি মনে করি যে আমি একটি সাধারণ-উদ্দেশ্যমূলক কাজের সম্পর্কে "খাম" এলগরিদম বা এমন কিছু জড়িত সম্পর্কে কিছু শুনেছিলাম (এটি কি কোনও ঘন্টা বাজায়, কেউ?)
হীরা সমস্যা সম্পর্কিত একমাত্র সম্ভাব্য সত্যিকারের সমস্যাটি আমি ভাবতে পারি যদি আপনি তৃতীয় পক্ষের লাইব্রেরিটি ব্যবহার করার চেষ্টা করছেন এবং দেখতে পাচ্ছেন না যে লাইব্রেরিতে দুটি আপাতদৃষ্টির সাথে সম্পর্কিত না হওয়া ক্লাসগুলির একটি সাধারণ বেস শ্রেণি রয়েছে তবে এটি ছাড়াও ডকুমেন্টেশন, একটি সাধারণ ভাষার বৈশিষ্ট্য, আসুন আমরা বলতে পারি যে হীরাটি তৈরি করার আপনার অভিপ্রায়টি আপনার জন্য আসলে এটি সংকলন করার আগে আপনাকে বিশেষভাবে ঘোষণা করতে হবে। এই জাতীয় বৈশিষ্ট্য সহ হীরাটির যেকোন সৃষ্টি হ'ল হয় ইচ্ছাকৃত, বেপরোয়া বা কারণ কেউ এই ক্ষতি সম্পর্কে অবগত নয়।
যাতে সমস্ত বলা হচ্ছে ... এমন কোনও বাস্তব কারণ আছে যা বেশিরভাগ লোক একাধিক উত্তরাধিকারকে ঘৃণা করে, বা এগুলি কি হিস্টিরিয়ার একগুচ্ছ যা ভাল হওয়ার চেয়ে বেশি ক্ষতির কারণ? এমন কিছু আছে যা আমি এখানে দেখছি না? ধন্যবাদ.
উদাহরণ
কারটি হুইলডহেলকে প্রসারিত করে, কেআইএএসস্পেক্টর প্রসারিত গাড়ি এবং বৈদ্যুতিন, কেআইএসপেক্টরে রেডিও রয়েছে। KIASpectra কেন বৈদ্যুতিন ধারণ করে না?
কারণ এটা হল একটি বৈদ্যুতিন। উত্তরাধিকার বনাম রচনাটি সর্বদা একটি সম্পর্ক-বনাম একটি সম্পর্ক হওয়া উচিত।
কারণ এটা হল একটি বৈদ্যুতিন। সেখানে জিনিসপত্র এবং তারপরে তার, সার্কিট বোর্ড, সুইচ ইত্যাদি রয়েছে।
কারণ এটা হল একটি বৈদ্যুতিন। যদি শীতকালে আপনার ব্যাটারিটি মারা যায়, আপনি ঠিক তেমন সমস্যায় পড়েছেন যেন আপনার সমস্ত চাকা হঠাৎ হারিয়ে গেছে।
ইন্টারফেস ব্যবহার করবেন না কেন? উদাহরণস্বরূপ # 3 নিন। আমি এটি বারবার লিখতে চাই না এবং এটি করার জন্য আমি সত্যিই কিছু উদ্ভট প্রক্সি সহায়ক শ্রেণি তৈরি করতে চাই না:
private void runOrDont()
{
if (this.battery)
{
if (this.battery.working && this.switchedOn)
{
this.run();
return;
}
}
this.dontRun();
}
(আমরা বাস্তবায়ন ভাল বা খারাপ কিনা তা আমরা intoুকতে পারছি না)) আপনি কল্পনা করতে পারেন যে কীভাবে বৈদ্যুতিনের সাথে এইরকম বেশ কয়েকটি ফাংশন থাকতে পারে যা হুইলেডভিহিকেলের কোনও কিছুর সাথে সম্পর্কিত নয় এবং তদ্বিপরীত।
আমি উদাহরণটি স্থির করব কিনা তা নিশ্চিত ছিলাম না, কারণ সেখানে ব্যাখ্যা করার সুযোগ রয়েছে। আপনি প্লেন প্রসারিত যানবাহন এবং ফ্লাইংওজেক্ট এবং পাখি প্রসারিত প্রাণী এবং ফ্লাইংবজেক্টের ক্ষেত্রে, বা আরও বিশুদ্ধ উদাহরণ হিসাবে বিবেচনা করতে পারেন।
Traits
- এগুলি optionচ্ছিক বাস্তবায়নের সাথে ইন্টারফেসের মতো কাজ করে তবে কিছু বিধিনিষেধ রয়েছে যা হীরা সমস্যা তৈরি হতে বাধা দিতে সহায়তা করে।
KiaSpectra
নয় একটি Electronic
; এটিতে ইলেকট্রনিক্স রয়েছে এবং এটি হতে পারে ElectronicCar
(যা প্রসারিত হবে Car
...)