क्या मैं एक देश वर्ग बनाता हूं जिसमें शहरों का समूह है?
ज़रूर।
क्या कस्बों में बहुत अधिक निर्माण वर्ग हैं, अधिकांश में लोगों के वर्ग हैं?
ज़रूर।
क्या मैं एक पाथ फाइंडिंग क्लास बनाता हूं, जिसमें खिलाड़ी पहुंच सकता है?
ज़रूर।
ऊपर आपने जो कुछ भी सुझाया है वह उचित प्रतीत होता है। यह लंबे समय में आपके लिए सबसे अच्छा तरीका नहीं हो सकता है, लेकिन यह ठीक है। यह स्पष्ट रूप से समझ में आता है क्योंकि यह संगठनात्मक मॉडल है जो पहली बार आपके पास आया था। यह महत्वपूर्ण है कि आप इसे लें और इसे लागू करना शुरू करें। यह दोनों आपको आरंभ कर देगा, आपको इस प्रारंभिक "डिज़ाइन पैरालिसिस" से छुटकारा मिलेगा जो अक्सर किसी कार्य की शुरुआत में डेवलपर्स को नुकसान पहुंचाता है, और (यदि यह किसी तरह से दोष साबित होता है) आपको पेशेवरों और विपक्षों के बारे में एक या दो बातें सिखाता है। डिजाइन करने के लिए उस विशेष दृष्टिकोण के
आपने स्वाभाविक रूप से अवधारणाओं को अपने सिर में लिया है और उन्हें कुछ सरल नियमों के अनुसार कोड में वर्गीकृत किया है:
- क्या यह अवधारणा व्यवहार में या मेरे पास पहले से मौजूद अन्य वस्तुओं के डेटा में काफी भिन्न है? (देश और लोग बहुत कम साझा करते हैं, यदि कोई हो, तो सार्थक डेटा या व्यवहार, इसलिए उन्हें अलग-अलग प्रकार के इन-गेम द्वारा दर्शाया जाना चाहिए)।
- क्या मुझे इस अवधारणा को एक महत्वपूर्ण तरीके से कोड में हेरफेर करने की आवश्यकता होगी (यदि आपका गेम अलग-अलग लोगों के साथ व्यवहार करता है, तो आपको उस
Person
वर्ग की आवश्यकता हो सकती है , लेकिन अगर गेम केवल उनके बारे में परवाह करता है, जैसा कि SimCity के पुराने संस्करणों में है, तो आप किसी शहर की आबादी के 1: 1 मानचित्रण बनाने के लिए उस प्रकार की और न ही उस प्रकार के उदाहरणों की आवश्यकता नहीं int populationCount
हो सकती है। पर्याप्त हो सकता है)।
- क्या इस अवधारणा को राज्य की आवश्यकता है ? यदि ऐसा है तो इसे किसी तरह से एनकैप्सुलेट किया जाना चाहिए जो मुझे मुफ्त कार्यों के एक समूह के बजाय इस राज्य (एक वर्ग) को स्टोर करने की अनुमति देता है। (एक पाथफाइंडिंग कार्यान्वयन में एक समरूप वास्तविक दुनिया वस्तु नहीं होती है, लेकिन इसके लिए डेटा पर नज़र रखने की आवश्यकता होती है जैसे कि मानचित्र में नोड्स जो पहले से ही माना गया है, और यह एक वर्ग के माध्यम से एक गुच्छा में संग्रहीत करके बेहतर होता है। छिपी ग्लोबल्स और फ्रीस्टैंडिंग फ़ंक्शंस बनाना)।
सरल होते हुए, उन प्रश्नों का उत्तर देना आपको एक बड़ी बात का लाभ दे सकता है जब यह तय करने की कोशिश की जाती है कि मानसिक अवधारणा को स्रोत कोड में कैसे और कैसे परिवर्तित किया जाए। आप ऑब्जेक्ट-ओरिएंटेड डिज़ाइन के ठोस सिद्धांतों पर भी पढ़ना चाह सकते हैं ।
ध्यान दें कि टिप्पणियों में की गई एक इकाई / घटक प्रणाली का सुझाव भी एक मान्य दृष्टिकोण है, हालांकि मैं इसे तब तक यहाँ छोड़ दूंगा जब तक कि आप अपनी परियोजना को छोटा करने के लिए फिर से गुंजाइश न करें (केवल इसलिए कि एक परियोजना में दो नई, बड़ी चुनौतियां हो सकती हैं बहुत कठिन हो सकता है और शैक्षिक लाभ को पतला कर सकता है अन्यथा आप केवल एक पर ध्यान केंद्रित करने से प्राप्त करेंगे)। एक घटक-उन्मुख मॉडल में, ऊपर दिए गए प्रश्नों में "प्रकार" अधिक अंतर्निहित हो जाता है: कोड में ठोस प्रकार नहीं है, लेकिन एक इकाई बनाने वाले घटकों के संग्रह द्वारा परिभाषित निहित प्रकार। वही मार्गदर्शक सिद्धांत लागू कर सकते हैं।