ऑब्जेक्ट-ओरिएंटेड क्लासेस के लिए दस्तावेज़ीकरण में अक्सर अपनी डिज़ाइन को बदलने के लिए वर्ग के लचीलेपन को बनाए रखने के बीच व्यापार का समावेश होता है, या वर्ग के उपभोक्ताओं को इसकी क्षमता का पूरा उपयोग करने की अनुमति देता है। अपरिवर्तनीय वर्ग जो एक निश्चित होगा गुणों का एक नंबर होगा, तो सही एक दूसरे के साथ संबंध (जैसे Left, Right, औरWidthपूर्णांक-समन्वित ग्रिड-संरेखित आयत के गुण), कोई व्यक्ति दो गुणों के किसी भी संयोजन को संग्रहीत करने के लिए वर्ग को डिज़ाइन कर सकता है और तीसरे की गणना कर सकता है, या कोई इसे तीनों को संग्रहीत करने के लिए डिज़ाइन कर सकता है। यदि इंटरफ़ेस के बारे में कुछ भी स्पष्ट नहीं है कि कौन से गुण संग्रहीत हैं, तो कक्षा का प्रोग्रामर उस घटना में डिज़ाइन को बदलने में सक्षम हो सकता है जो ऐसा करना किसी कारण से मददगार साबित होगा। इसके विपरीत, उदाहरण के लिए, यदि दो गुणों को finalफ़ील्ड के रूप में उजागर किया जाता है और तीसरा नहीं है, तो कक्षा के भविष्य के संस्करणों को हमेशा "आधार" होने के नाते समान दो गुणों का उपयोग करना होगा।
यदि संपत्तियों का एक सटीक संबंध नहीं है (जैसे वे क्योंकि floatया doubleइसके बजाय int) हैं, तो यह आवश्यक हो सकता है कि किसी वर्ग के मूल्य को "गुण" को परिभाषित करने वाले दस्तावेज के लिए आवश्यक हो। उदाहरण के लिए, भले ही Leftप्लस Widthको बराबर माना जाता है Right, फ़्लोटिंग-पॉइंट गणित अक्सर अक्षम होता है। उदाहरण के लिए, एक लगता है Rectangleजो प्रकार का उपयोग करता Floatस्वीकार करता है Leftऔर Widthनिर्माता पैरामीटर के रूप में के साथ निर्माण किया है Leftके रूप में दिया 1234567fऔर Widthके रूप में 1.1f। floatयोग का सबसे अच्छा प्रतिनिधित्व 1234568.125 है [जो 1234568.13 के रूप में प्रदर्शित हो सकता है]; अगला छोटा float1234568.0 होगा। यदि वर्ग वास्तव में संग्रहीत करता है LeftऔरWidth, यह चौड़ाई मान की रिपोर्ट कर सकता है क्योंकि यह निर्दिष्ट किया गया था। अगर, हालांकि, निर्माता अभिकलन Rightपर पारित कर दिया-में आधारित Leftऔर Width, और बाद में अभिकलन Widthपर आधारित Leftऔर Right, यह के रूप में चौड़ाई रिपोर्ट करेंगे 1.25fबजाय के रूप में पारित-इन 1.1f।
उत्परिवर्तनीय कक्षाओं के साथ, चीजें और भी दिलचस्प हो सकती हैं, चूंकि अंतर-संबंधित मूल्यों में से एक में बदलाव से कम से कम एक दूसरे के लिए एक परिवर्तन होगा, लेकिन यह हमेशा स्पष्ट नहीं हो सकता है कि कौन सा है। कुछ मामलों में, यह तरीकों जो "सेट" इस तरह के रूप में एक संपत्ति रखना ही बेहतर हो सकता है, लेकिन इसके बजाय या तो जैसे तरीके है SetLeftAndWidthया SetLeftAndRight(जैसे, वरना यह स्पष्ट करना गुण क्या निर्दिष्ट किए जा रहे हैं और जो बदल रहे हैं MoveRightEdgeToSetWidth, ChangeWidthToSetLeftEdgeया MoveShapeToSetRightEdge) ।
कभी-कभी यह एक वर्ग के लिए उपयोगी हो सकता है जो इस बात पर नज़र रखता है कि किन गुणों के मूल्यों को निर्दिष्ट किया गया है और जिन्हें दूसरों से गणना की गई है। उदाहरण के लिए, "समय में पल" वर्ग में एक निरपेक्ष समय, एक स्थानीय समय और एक समय क्षेत्र ऑफसेट शामिल हो सकते हैं। ऐसे कई प्रकारों के साथ, जानकारी के किसी भी दो टुकड़ों को देखते हुए, कोई भी तीसरे की गणना कर सकता है। जिसे जानकरजानकारी का टुकड़ा गणना की गई थी, हालांकि, कभी-कभी महत्वपूर्ण हो सकती है। उदाहरण के लिए, मान लें कि एक घटना "17:00 UTC, समय क्षेत्र -5, स्थानीय समय 12:00 बजे" के रूप में दर्ज की गई है, और एक बाद में पता चलता है कि समय क्षेत्र -6 होना चाहिए था। यदि कोई जानता है कि UTC को सर्वर से रिकॉर्ड किया गया था, तो रिकॉर्ड को "18:00 UTC, समय क्षेत्र -6, स्थानीय समय 12:00 बजे" को सही किया जाना चाहिए; अगर किसी ने घड़ी में स्थानीय समय के अनुसार "17:00 UTC, समय क्षेत्र -6, स्थानीय समय सुबह 11:00" होना चाहिए। यह जानने के बिना कि क्या वैश्विक या स्थानीय समय को "अधिक विश्वसनीय" माना जाना चाहिए, हालांकि, यह जानना संभव नहीं है कि कौन सा सुधार लागू होना चाहिए। यदि, हालांकि, रिकॉर्ड रखा गया था कि किस समय को निर्दिष्ट किया गया था, समय क्षेत्र में परिवर्तन दूसरे को बदलते समय उस अकेले को छोड़ सकता है।