Eski programlama tanrıları, sınıfları ile nesne yönelimli programlama icat ederken, bir nesne için iki ilişkinin oluşması ve mirasa geldiğine karar verdiler: "bir" ve "vardır".
Bu, alt sınıfların ebeveyn sınıflarından farklı olma problemini kısmen çözdü, ancak kodları kırmadan kullanılabilir hale getirdi. Bir alt sınıf örneği "bir" süper sınıf nesnesi olduğundan ve doğrudan bunun yerine kullanılabildiğinden, alt sınıfın daha fazla üye işlevi veya veri üyesi olmasına rağmen, "bir" değeri, üst öğenin tüm işlevlerini yerine getireceğini ve tüm işlevlerini yerine getireceğini garanti eder. üyeler. Böylece bir Point3D'nin "Point" ve "Point2D" nin "Point" olduğunu ve ikisinin de Point'ten miras aldığını söyleyebilirsiniz. Ek olarak, bir Point3D, Point2D'nin bir alt sınıfı olabilir.
Bununla birlikte, sınıflar arasındaki eşitlik, alana özgüdür ve yukarıdaki örnek programcının programın doğru çalışması için neye ihtiyaç duyduğu konusunda belirsizdir. Genel olarak, matematik alanı kuralları takip edilir ve karşılaştırmanın kapsamını sadece bu durumda iki boyutla sınırlarsanız, ancak tüm veri üyelerini karşılaştırmazsanız, verilerin eşitliği sağlanır.
Böylece eşitliği daraltan bir tablo elde edersiniz:
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.
Genelde problem alanınızda gerekli tüm fonksiyonları yerine getirebilecek en katı kuralları seçersiniz. Sayılar için yerleşik eşitlik testleri, matematik amaçları için olabildiğince kısıtlayıcı olacak şekilde tasarlanmıştır, ancak programcının yuvarlama / aşağılama, kesme, gt, lt, vb. . Zaman damgalarına sahip nesneler genellikle oluşturma zamanlarına göre karşılaştırılır ve bu nedenle her bir örnek benzersiz olmalıdır, böylece karşılaştırmalar çok özel olur.
Bu durumda tasarım faktörü nesneleri karşılaştırmak için etkili yollar belirlemektir. Bazen tüm nesnelerin veri üyelerini yinelemeli bir karşılaştırması yapmanız gereken şeydir ve çok fazla veri üyesi olan çok ve çok sayıda nesneniz varsa bu çok pahalı olabilir. Alternatifler yalnızca ilgili veri değerlerini karşılaştırmak veya nesnenin diğer benzer nesnelerle hızlı bir karşılaştırma yapmak için ilgilendiği veri üyelerinin bir karma değerini üretmesini sağlamak, karşılaştırmaları daha hızlı ve daha az işlemci yoğunlaştırmak ve belki de bu nesnelerin karşılaştırılmasını sağlamak için koleksiyonları sıralı ve budanmış tutmaktır. toplanacak verilerle aynıdır ve tek bir nesneye kopyalayan bir işaretçi yerine konur.