Nesne yönelimli sınıflar için dökümantasyon genellikle sınıfın kullanıcılarına tasarımını değiştirebilme esnekliği vermek yerine sınıfın tüketicilerinin potansiyelini tam olarak kullanmalarını sağlamak arasında değişmezlik içerir. Sabit bir sınıfı, belirli bir olacaktır özellikleri bir dizi olacaksa tesisinin (birbirleriyle ilişki, örneğin Left, RightveWidthBir tamsayı koordinat ızgarası hizalanmış dikdörtgenin özellikleri), biri sınıfı iki öğenin herhangi bir birleşimini saklamak ve üçünü hesaplamak için tasarlayabilir veya biri üçünü de saklamak için tasarlayabilir. Arabirim hakkında hiçbir şey hangi özelliklerin saklandığını netleştirmezse, sınıfın programcısı bir nedenden ötürü yardımcı olacağını ispat etmesi durumunda tasarımı değiştirebilir. Buna karşılık, örneğin özelliklerin ikisi finalalan olarak gösteriliyorsa ve üçüncü değilse, sınıfın gelecekteki sürümleri her zaman "temel" olarak aynı iki özelliği kullanmak zorunda kalacak.
(Onlar çünkü örneğin özellikleri kesin bir ilişki yoksa floatveya doubleyerine int), o zaman özelliklerini bir sınıf değerini "define" belgesine gerekli olabilir. Örneğin, Leftartı Widthdeğerinin eşit olması gerekmesine rağmen Right, kayan nokta matematiği genellikle yanlış. Örneğin, Rectanglehangisinin kullandığını Floatkabul edelim Leftve Widthyapıcı parametreleri Leftolarak 1234567fve Widtholarak verilen ile oluşturulduğunu varsayalım 1.1f. floatToplamın en iyi gösterimi 1234568.125 [1234568.13 olarak gösterilebilir]; bir sonraki küçük float1234568.0 olacaktır. Sınıf gerçekten depolarsa LeftveWidthgenişlik değerini belirtildiği gibi bildirebilir. Ancak yapıcı olarak hesaplanır Eğer Rightiçinde geçti dayalı Leftve Widthdaha sonra, ve bilgisayarlı Widthdayalı Leftve Rightbu şekilde genişliğini rapor verecek 1.25fziyade geçti-deki gibi 1.1f.
Değişken sınıflarda, birbiriyle ilişkili değerlerden birindeki değişiklik, en az bir diğerinde değişiklik anlamına geleceği için işler daha da ilginç olabilir, ancak hangisinin olduğu her zaman net olmayabilir. Bazı durumlarda, bu gibi hangi "set", tek bir özellik yöntemleri zorunda kalmamak için iyi olmaması, onun yerine ya ör yöntemleri olabilir SetLeftAndWidthveya SetLeftAndRightözellikleri belirtilmiş olan ve değişen onlarda hangi, ya da başka marka temizleyin (örn MoveRightEdgeToSetWidth, ChangeWidthToSetLeftEdgeya MoveShapeToSetRightEdge) .
Bazen hangi özelliklerin değerlerinin belirlendiğini ve diğerlerinden hesaplanan bir sınıfın olması yararlı olabilir. Örneğin, "zamandaki bir an" sınıfı, mutlak bir zaman, yerel bir zaman ve bir zaman dilimi uzaklığı içerebilir. Bu tür pek çok tipte olduğu gibi, herhangi iki bilgi parçası verildiğinde, biri üçüncü bilgiyi hesaplayabilir. Hangisini bilmekAncak, bilgi parçası hesaplandı, ancak bazen önemli olabilir. Örneğin, bir etkinliğin "17:00 UTC, saat dilimi -5, yerel saat 12:00" de kaydedildiğini ve bir saatin saat diliminin -6 olması gerektiğini keşfettiğini varsayalım. Birisi UTC'nin bir sunucudan kaydedildiğini biliyorsa, kayıt "18:00 UTC, saat dilimi -6, yerel saat 12:00"; Birisi bir saat yerel saatte anahtarlanmışsa "17:00 UTC, saat dilimi -6, yerel saat 11:00" olmalıdır. Küresel veya yerel zamanın “daha inanılır” olarak değerlendirilmesinin gerekip gerekmediğini bilmeden, hangi düzeltmenin uygulanması gerektiğini bilmek mümkün değildir. Bununla birlikte, kayıt hangi zamanın belirtildiğini takip ettiğinde, zaman diliminde yapılan değişiklikler diğerini değiştirirken onu yalnız bırakabilir.