जब भी मुझे किसी प्रोजेक्ट के निर्माण की आवश्यकता होती है, मैं हमेशा इसे बनाने में कामयाब रहता हूं, पहले से किसी योजना या डिज़ाइन को तैयार करने में नहीं, लेकिन पहली बार एक वर्ग को लिखने की ज़रूरत थी, जो पूरे प्रोजेक्ट का निर्माण कर रहा है, नीचे से निर्माण। अब मुझे पता है कि यह सॉफ्टवेयर बनाने का उचित तरीका नहीं है, लेकिन ऑब्जेक्टेड ओरिएंटेड एनालिसिस एंड डिज़ाइन कहा जाता है, यह मेरे लिए अपने सिर को लपेटना आसान नहीं है। मैं अधिक आसानी से टॉप-डाउन प्रक्रियात्मक डिज़ाइन को समझ सकता हूं, क्योंकि इसमें केवल उप-कार्यों में कार्यों को तोड़ना शामिल है, जिन चीजों में कोड, फ़ंक्शन में उनके समकक्ष हैं। लेकिन ऑब्जेक्ट ओरिएंटेड एनालिसिस एंड डिज़ाइन मैं आसानी से नहीं समझ सकता, क्योंकि मैं यह नहीं समझता कि कोई यह कैसे जान सकता है कि उन्हें किन कक्षाओं की ज़रूरत होगी और वे कैसे इंटरैक्ट करेंगे, जब तक कि उन्हें पता नहीं होगा कि वे उन्हें कैसे कोड करेंगे।
एक बार जब हम कक्षाओं और वस्तुओं की अवधारणा को डिजाइन प्रक्रिया में पेश करते हैं, तो हम अब टॉप-डाउन डिज़ाइन नहीं कर सकते हैं, क्योंकि हम अब अपनी समस्याओं को उन चीजों में नहीं तोड़ रहे हैं जिन्हें प्रक्रियाओं के रूप में लागू किया जा सकता है। इसके बजाय, मैंने इस विषय पर जो कुछ पढ़ा है, उसके अनुसार, हमें यह निर्धारित करना चाहिए कि कक्षाओं की क्या आवश्यकता है, और यूनिफाइड मॉडलिंग भाषा में विभिन्न कलाकृतियों का निर्माण करें, जिसका उपयोग हम तब करते हैं जब हम सॉफ्टवेयर को लागू करते हैं। लेकिन इस तरह की डिजाइन प्रक्रिया मुझे समझ में नहीं आती है। कैसे के लिए कोई जानता है कि उन्हें किन वर्गों की आवश्यकता होगी, और वे कैसे बातचीत करेंगे, जब तक कि वे पहले से ही पूरी प्रणाली की कल्पना नहीं करते हैं?
यह तो मेरी समस्या है। मुझे समझ में नहीं आता है कि ऑब्जेक्ट-ओरिएंटेड सिस्टम को कैसे डिज़ाइन किया जाए, हालांकि मैं ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग की अवधारणाओं को समझता हूं, और उन अवधारणाओं को किसी भी ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषा में उपयोग कर सकता हूं जो मुझे पता है। इसलिए मुझे किसी को यह समझाने की आवश्यकता है कि मैं ऑब्जेक्टेड ओरिएंटेड सिस्टम को डिजाइन करने के लिए किस सरल प्रक्रिया का उपयोग कर सकता हूं जो मेरे लिए समझ में आता है।