यह एक वैचारिक प्रश्न है। मुझे पता है कि मैं क्या करने की कोशिश कर रहा हूं। मैं सोच रहा हूं कि यह करने के लिए सही बात है या नहीं।असली चीजों के रिश्तों को प्रतिबिंबित करने के लिए आंतरिक कक्षाओं का उपयोग
मैं कुछ ऐसे व्यक्ति का प्रतिनिधित्व करने की कोशिश कर रहा हूं जिसमें वास्तविक जीवन में घोंसले का थोड़ा सा हिस्सा शामिल है। यह एक दस्तावेज है जो वस्तुओं के एक सेट के साथ गतिविधियों को निर्दिष्ट करता है। एक दस्तावेज़ में कई आइटम शामिल हो सकते हैं और प्रत्येक आइटम में कई गतिविधियां हो सकती हैं।
तो पदानुक्रम दस्तावेज़ -> आइटम -> गतिविधि होगी।
मेरी वर्तमान सोच यह दर्शाती है कि यह एक शीर्ष स्तर की कक्षा, दस्तावेज़, जिसमें एक आंतरिक वर्ग, आइटमप्रोग्राम होता है, जिसमें स्वयं एक आंतरिक वर्ग, गतिविधि होती है। हां, यह घोंसले के दो स्तर हैं।
public class Document {
// Properties of the document itself
private Map<Item, ItemProgram> itemPrograms; // Map of item programs
public class ItemProgram {
// Properties of the item program itself
private List<Activity> activities; // List of activities
public class Activity {
// Properties of the activity
}
}
}
आंतरिक कक्षाएं सार्वजनिक होनी चाहिए, लेकिन मैं रचनाकारों को निजी बना रहा हूं ताकि वे केवल अपने बाहरी वर्गों में विधियों को जोड़ सकें। जैसा कि आप देख सकते हैं, मैं एक प्रकार के संग्रह का उपयोग करके उदाहरणों को संग्रहित करता हूं।
क्या यह इस बारे में जाने का सही तरीका है? डबल घोंसला?
क्या आंतरिक कक्षा के सभी उदाहरणों के संदर्भों को संग्रहीत करने के लिए बाहरी वर्ग में संग्रह का उपयोग करना उचित है? जबकि वहाँ प्रत्येक का एक प्रकार है, मन (और टिप्पणियों में दस्तावेज़) में रखें कि यदि आप कई प्रकार के या Document
, Activity
के derivations जरूरत के लिए शुरू करने या ItemProgram
आप सबसे अधिक संभावना इस विभाजित करने के लिए की आवश्यकता होगी
आपके विचारों के लिए धन्यवाद। – user1730883
एक तरह से संचार की आवश्यकता होती है क्योंकि एक गतिविधि को हमेशा उस आइटमप्रोग्राम को जानने की आवश्यकता होती है, जिसका स्वामित्व होता है, और एक आइटमप्रोग्राम को यह जानने की आवश्यकता होगी कि कौन सा एसओआर इसका मालिक है। तो यदि वे शीर्ष स्तर के वर्ग थे, तो उन्हें इस जानकारी को शामिल करने के लिए एक फ़ील्ड की आवश्यकता होगी। – user1730883
मैं जानकारी के इस प्रसार से सावधान रहूंगा। कार्यक्रम में ही 'गतिविधि' को वास्तव में 'आइटमप्रोग्राम' को जानने की आवश्यकता होती है जो इसका मालिक है? या यह एक डेटाबेस आवश्यकता है, यदि ऐसा है तो जब आप ऑब्जेक्ट्स को क्रमबद्ध करते हैं तो यह मैपिंग आपके दृढ़ता परत में किया जाना चाहिए। 'आइटमप्रोग्राम' की सूची वास्तव में दोनों के बीच संबंध व्यक्त कर रही है। –