অবজেক্ট-ওরিয়েন্টেড ক্লাসগুলির জন্য ডকুমেন্টেশনে ক্লাসের রক্ষণাবেক্ষণকারীদের তার নকশা পরিবর্তন করতে নমনীয়তা প্রদানের মধ্যে ক্লাসের গ্রাহকরা তার সম্ভাব্যতার পুরোপুরি ব্যবহার করতে দেয়াকে কেন্দ্র করে ট্রেড অফ জড়িত থাকে। একটি অপরিবর্তনীয় শ্রেণী যেটি একটি নির্দিষ্ট থাকবে বৈশিষ্ট্য একটি নম্বর থাকবে তাহলে সঠিক একে অপরের সাথে সম্পর্ক (যেমন Left
, Right
এবংWidth
একটি পূর্ণসংখ্যা-সমন্বিত গ্রিড-প্রান্তিকৃত আয়তক্ষেত্রের বৈশিষ্ট্য), কেউ দুটি বৈশিষ্ট্যের কোনও সংমিশ্রণ সংরক্ষণ করতে এবং তৃতীয়টি গণনা করতে ক্লাসটি ডিজাইন করতে পারে বা তিনটি সংরক্ষণ করার জন্য এটির নকশা করতে পারে। ইন্টারফেস সম্পর্কে কোনও কিছুই যদি স্পষ্ট করে না যে কোন বৈশিষ্ট্যগুলি সঞ্চিত আছে, ক্লাসের প্রোগ্রামার ইভেন্টটি নকশাকে পরিবর্তন করতে সক্ষম হতে পারে যে এটি করা কোনও কারণে সহায়ক হিসাবে প্রমাণিত হতে পারে। বিপরীতে, উদাহরণস্বরূপ, যদি দুটি সম্পত্তি final
ক্ষেত্র হিসাবে প্রকাশিত হয় এবং তৃতীয়টি না হয়, তবে শ্রেণীর ভবিষ্যতের সংস্করণগুলিকে সর্বদা "ভিত্তি" হিসাবে একই দুটি বৈশিষ্ট্য ব্যবহার করতে হবে।
বৈশিষ্ট্যগুলির যদি সঠিক সম্পর্ক না থাকে (উদাহরণস্বরূপ কারণ তারা float
বা double
তার চেয়ে বেশি int
) তবে কোন বৈশিষ্ট্যটি কোনও শ্রেণীর মান "সংজ্ঞায়িত" করে তা নথিভুক্ত করা প্রয়োজন। উদাহরণস্বরূপ, যদিও Left
প্লাসটি Width
সমান হওয়ার কথা , তবুও Right
ভাসমান-পয়েন্ট গণিতটি বেশিরভাগ ক্ষেত্রেই অক্ষু থাকে। উদাহরণস্বরূপ, একটি অনুমান করা Rectangle
কোন ধরনের ব্যবহার Float
গ্রহণ Left
এবং Width
কন্সট্রাকটর প্যারামিটার হিসেবে নির্মাণ করা হয় Left
হিসেবে দেওয়া 1234567f
এবং Width
যেমন 1.1f
। float
যোগফলের সেরা উপস্থাপনাটি 1234568.125 [যা 1234568.13 হিসাবে প্রদর্শিত হতে পারে]; পরবর্তী ছোট float
হবে 1234568.0। যদি ক্লাসটি আসলে স্টোর করে Left
এবংWidth
, এটি নির্দিষ্ট করা অনুসারে এটি প্রস্থের মানটির প্রতিবেদন করতে পারে। তবে, কন্সট্রাকটর নির্ণিত Right
উপর গৃহীত-ভিত্তিক Left
এবং Width
, এবং পরে নির্ণিত Width
উপর ভিত্তি করে Left
এবং Right
, এটা যেমন প্রস্থ প্রতিবেদন হবে 1.25f
বদলে হিসাবে পাস-ইন 1.1f
।
পরিবর্তনীয় ক্লাসগুলির সাথে জিনিসগুলি আরও আকর্ষণীয় হতে পারে, যেহেতু আন্তঃসম্পর্কিত মানগুলির একটিতে পরিবর্তন অন্ততপক্ষে একে অপরের পরিবর্তনকে বোঝায়, তবে এটি সর্বদা পরিষ্কার নয় যে কোনটি। কিছু কিছু ক্ষেত্রে, এটা পদ্ধতি যেটি "সেট" যেমন একটি একক সম্পত্তি থাকার এড়াতে সেরা হতে পারে, কিন্তু এর পরিবর্তে পারেন যেমন করতে পদ্ধতি আছে SetLeftAndWidth
বা SetLeftAndRight
(যেমন, অথবা অন্য স্পষ্ট করুন বৈশিষ্ট্য কি নিদিষ্ট করা হচ্ছে এবং যা পরিবর্তন করা হয় MoveRightEdgeToSetWidth
, ChangeWidthToSetLeftEdge
অথবা MoveShapeToSetRightEdge
) ।
কখনও কখনও কোনও শ্রেণি রাখা দরকারী হতে পারে যা কোন বৈশিষ্ট্যের মানগুলি নির্দিষ্ট করা হয়েছে এবং যা অন্যের কাছ থেকে গণনা করা হয়েছে তা ট্র্যাক করে। উদাহরণস্বরূপ, "সময়ের মধ্যে মুহূর্ত" শ্রেণিতে একটি পরম সময়, একটি স্থানীয় সময় এবং একটি সময় অঞ্চল অফসেট অন্তর্ভুক্ত থাকতে পারে। যেমন দুটি ধরণের তথ্য দেওয়া যেমন, অনেক তৃতীয় গণনা করতে পারে। যা জানাতথ্যের টুকরো গণনা করা হয়েছিল, তবে কখনও কখনও গুরুত্বপূর্ণ হতে পারে। উদাহরণস্বরূপ, ধরুন যে কোনও ইভেন্ট "17:00 ইউটিসি, সময় অঞ্চল -5, স্থানীয় সময় রাত 12:00" এ হিসাবে রেকর্ড করা হয়েছে এবং পরে আবিষ্কার হয়েছে যে সময় অঞ্চলটি-zone হওয়া উচিত ছিল। যদি কেউ জানেন যে ইউটিসি কোনও সার্ভারের বাইরে রেকর্ড করা ছিল, রেকর্ডটি "18:00 ইউটিসি, সময় অঞ্চল -6, স্থানীয় সময় রাত 12:00" এ সংশোধন করা উচিত; স্থানীয় সময় কেউ যদি একটি ঘড়ির কাঁটা বেঁধে রাখে তবে এটি "17:00 ইউটিসি, সময় অঞ্চল -6, স্থানীয় সময় সকাল 11:00" হওয়া উচিত। বিশ্বব্যাপী বা স্থানীয় সময়টিকে "আরও বিশ্বাসযোগ্য" হিসাবে বিবেচনা করা উচিত কিনা তা জেনেও, তবে কোন সংশোধন প্রয়োগ করা উচিত তা জানা সম্ভব নয়। যাইহোক, যদি রেকর্ডটি কোন সময় নির্দিষ্ট করা থাকে তা ট্র্যাক করে রাখে, সময় অঞ্চলে পরিবর্তনগুলি অন্য পরিবর্তন করার সময় সেই একা থাকতে পারে।