পুরানো প্রোগ্রামিং দেবতা যখন ক্লাসগুলির সাথে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং উদ্ভাবন করছিলেন, তখন তারা সিদ্ধান্ত নিয়েছিলেন যে কখন কোনও বস্তুর সাথে দুটি সম্পর্ক স্থাপনের রচনা এবং উত্তরাধিকারের বিষয়টি আসে: "একটি" এবং "একটি আছে"।
এটি আংশিকভাবে প্যারেন্ট ক্লাসের তুলনায় সাবক্লাসগুলির সমস্যার সমাধান করেছে তবে কোড ভঙ্গ না করে এগুলি ব্যবহারযোগ্য করে তুলেছে। যেহেতু একটি সাবক্লাস উদাহরণ "একটি" সুপারক্লাস অবজেক্ট এবং এটির জন্য সরাসরি প্রতিস্থাপন করা যেতে পারে, যদিও সাবক্লাসে আরও সদস্য ফাংশন বা ডেটা সদস্য রয়েছে, "এর একটি" গ্যারান্টি দেয় যে এটি পিতামাতার সমস্ত কার্য সম্পাদন করবে এবং এর সমস্ত থাকবে সদস্যরা। সুতরাং আপনি বলতে পারেন যে পয়েন্ট 3 ডি "একটি" পয়েন্ট, এবং পয়েন্ট 2 ডি "হ'ল একটি" পয়েন্ট যদি তারা উভয়ই পয়েন্ট থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়। অতিরিক্তভাবে একটি পয়েন্ট 3 ডি পয়েন্ট 2 ডি এর একটি সাবক্লাস হতে পারে।
ক্লাসগুলির মধ্যে সাম্যতা সমস্যা ডোমেন-নির্দিষ্ট, তবে উপরোক্ত উদাহরণটি প্রোগ্রামারের সঠিকভাবে কাজ করার জন্য প্রোগ্রামারের কী প্রয়োজন তা দ্ব্যর্থক। সাধারণত, গণিত-ডোমেনের নিয়ম অনুসরণ করা হয় এবং আপনি যদি এই ক্ষেত্রে তুলনা করার সুযোগটি কেবলমাত্র দুটি মাত্রায় সীমাবদ্ধ করেন তবে ডেটার মানগুলি সমতা তৈরি করতে পারে তবে আপনি যদি সমস্ত ডেটা সদস্যদের তুলনা করেন তবে তা নয়।
সুতরাং আপনি সংকীর্ণ সাম্যের একটি টেবিল পাবেন:
Both objects have same values, limited to subset of shared members
Child classes can be equal to parent classes if parent and childs
data members are the same.
Both objects entire data members are the same.
Objects must have all same values and be similar classes.
Objects must have all same values and be the same class type.
Equality is determined by specific logical conditions in the domain.
Only Objects that both point to same instance are equal.
আপনি সাধারণত সবচেয়ে কঠোর নিয়ম চয়ন করেন যা আপনি এখনও আপনার সমস্যার ডোমেনে প্রয়োজনীয় সমস্ত কার্য সম্পাদন করতে পারেন। সংখ্যার জন্য অন্তর্নির্মিত সমতা পরীক্ষাগুলি যেমন গণিতের উদ্দেশ্যে হতে পারে তেমন সীমাবদ্ধ হিসাবে ডিজাইন করা হয়েছে, তবে প্রোগ্রামারটির চারপাশে অনেকগুলি উপায় রয়েছে যদি তা লক্ষ্য না হয় তবে রাউন্ড আপ / ডাউন, ট্র্যাঙ্কেশন, জিটি, এলটি ইত্যাদি including । টাইমস্ট্যাম্পগুলি সহ অবজেক্টগুলি প্রায়শই তাদের প্রজন্মের সময় দ্বারা তুলনা করা হয় এবং তাই প্রতিটি উদাহরণ অবশ্যই অনন্য হতে হবে তাই তুলনাগুলি খুব নির্দিষ্ট হয়ে যায়।
এই ক্ষেত্রে নকশা ফ্যাক্টর হ'ল বস্তুর তুলনা করার দক্ষ উপায় নির্ধারণ করা। কখনও কখনও সমস্ত বস্তুর ডেটা সদস্যদের একটি পুনরাবৃত্ত তুলনা হ'ল আপনার অবশ্যই যা করা উচিত এবং আপনার কাছে প্রচুর ডেটা সদস্য সহ প্রচুর এবং প্রচুর অবজেক্ট থাকলে তা খুব ব্যয়বহুল হয়ে উঠতে পারে। বিকল্পগুলি কেবলমাত্র প্রাসঙ্গিক ডেটা মানের সাথে তুলনা করা হয়, বা অন্য অনুরূপ বস্তুর সাথে দ্রুত তুলনা করার জন্য অবজেক্টটি তার ডেটা সদস্যদের একটি হ্যাশ মান উত্পন্ন করে, সংগ্রহগুলি বাছাই করে ছাঁটাই করে রাখে দ্রুত এবং কম সিপিইউ নিবিড় করে তুলতে, এবং সম্ভবত যে জিনিসগুলিকে অনুমতি দেয় সিলেজ করার জন্য ডেটাতে অভিন্ন এবং একক বস্তুর প্রতি নকল পয়েন্টার তার জায়গায় স্থাপন করা উচিত।