मेरे C ++ प्रोजेक्ट में, मेरे पास दो कक्षाएं हैं, Particle
और Contact
। में Particle
वर्ग, मैं एक सदस्य चर है std::vector<Contact> contacts
जो एक के सभी संपर्कों को शामिल Particle
वस्तु, और इसी सदस्य कार्यों getContacts()
और addContact(Contact cont)
। इस प्रकार, "Particle.h" में, मैं "Contact.h" शामिल करता हूं।
में Contact
वर्ग, मैं कोड के लिए निर्माता को जोड़ना चाहते हैं Contact
कि कॉल करेंगे Particle::addContact(Contact cont)
तो यह है कि, contacts
दोनों के लिए अद्यतन किया जाता है Particle
जिन वस्तुओं पर के बीच Contact
वस्तु जोड़ा जा रहा है। इस प्रकार, मुझे "Contact.cpp" में "पार्टिकल.एच" को शामिल करना होगा।
मेरा सवाल यह है कि यह स्वीकार्य / अच्छा कोडिंग अभ्यास है या नहीं, और यदि नहीं, तो मैं जो भी हासिल करने की कोशिश कर रहा हूं उसे लागू करने का एक बेहतर तरीका होगा (सीधे शब्दों में कहें, जब भी कोई नया संपर्क होता है, तो विशिष्ट कण के लिए संपर्कों की सूची को अपडेट करना। बनाया गया है)।
इन वर्गों को एक Network
वर्ग द्वारा एक साथ बांधा जाएगा जिसमें एन कण ( std::vector<Particle> particles
) और एनसी संपर्क ( std::vector<Contact> contacts
) होंगे। लेकिन मैं इस तरह के कार्य करने में सक्षम होना चाहता था particles[0].getContacts()
- क्या Particle
इस मामले में कक्षा में इस तरह के कार्य करना ठीक है , या इस उद्देश्य के लिए C ++ में एक बेहतर संघ "संरचना" है (दो संबंधित वर्गों का एक अन्य वर्ग में उपयोग किया जा रहा है) ।
मुझे यहां एक दृष्टिकोण बदलाव की आवश्यकता हो सकती है कि मैं इसे कैसे संपर्क कर रहा हूं। चूँकि दो वर्ग एक Network
क्लास ऑब्जेक्ट से जुड़े होते हैं , क्या यह विशिष्ट कोड / क्लास ऑर्गनाइजेशन है जिससे कनेक्टिविटी की जानकारी पूरी तरह से Network
ऑब्जेक्ट द्वारा नियंत्रित होती है (जिसमें एक कण ऑब्जेक्ट को उसके संपर्कों के बारे में पता नहीं होना चाहिए और, परिणामस्वरूप, इसका getContacts()
सदस्य नहीं होना चाहिए। समारोह)। फिर, यह जानने के लिए कि किसी विशिष्ट कण में क्या संपर्क है, मुझे Network
ऑब्जेक्ट के माध्यम से वह जानकारी प्राप्त करने की आवश्यकता होगी (उदाहरण के लिए, उपयोग करना network.getContacts(Particle particle)
)।
क्या यह एक विशिष्ट वस्तु के लिए कम विशिष्ट (शायद हतोत्साहित) सी ++ क्लास डिज़ाइन होगा जो कि ज्ञान, साथ ही (यानी, उस जानकारी तक पहुंचने के कई तरीके हैं - या तो नेटवर्क ऑब्जेक्ट या कण ऑब्जेक्ट के माध्यम से, जो भी अधिक सुविधाजनक लगता है )?
Network
क्लास ऑब्जेक्ट होता है जिसमें Particle
ऑब्जेक्ट्स और Contact
ऑब्जेक्ट होते हैं, तो मैं ठेठ (शायद इष्ट / प्रोत्साहित) दृष्टिकोण के लिए पूछ रहा हूं । उस आधार ज्ञान के साथ, फिर मैं यह आकलन करने की कोशिश कर सकता हूं कि यह मेरी विशिष्ट आवश्यकताओं के साथ फिट है या नहीं, जो अभी भी पता लगाया जा रहा है / विकसित किया गया है क्योंकि मैं परियोजना में साथ जाता हूं।