2010-12-26 12 views
6

मैं जावा में एक पारिवारिक वृक्ष कार्यक्रम बना रहा हूं, या कम से कम कोशिश कर रहा हूं। मैं कई वर्गों का विकास किया है:परिवार के पेड़ कार्यक्रम के लिए तर्क

  • व्यक्ति - नाम लिंग उम्र आदि के लिए getters और सेटर
  • FamilyMember - कई के होते हैं जो - व्यक्ति ही टिककर खेल और स्थापित करने के माता पिता के लिए setters और बच्चों
  • परिवार फैली सदस्यों को हटाने के लिए पारिवारिक सदस्यों और विधियों को हटाने के लिए
  • फ़ैमिली ट्री जो मुख्य श्रेणी संबंध स्थापित करने के लिए है।

मैं दो मुख्य समस्याएं हैं:

1) मैं लोगों के बीच संबंधों को निर्धारित करने की आवश्यकता। वर्तमान में मैं कर रहा हूं:

FamilyMember A, FamilyMember B 
B.setMother(A); 
A.setChild(B); 

उपरोक्त उदाहरण मां शिशु संबंध स्थापित करने के लिए है।

यह बहुत गुंजाइश लगता है। यह सभी रिश्तों को लागू करने के लिए बहुत लंबा हो रहा है। कम प्रक्रियात्मक तरीके से कई रिश्तों को लागू करने के तरीके पर कोई विचार?

2) मुझे परिवार के पेड़ को प्रदर्शित करने में सक्षम होना चाहिए। मैं यह कैसे कर सकता हूँ? क्या जीवन को आसान बनाने के लिए वहां कोई कस्टम कक्षाएं हैं?

आपके समय के लिए धन्यवाद ...

+0

आप इसे कैसे प्रदर्शित करना चाहते हैं? – Roman

उत्तर

4

सम्मान के साथ संरचना को चित्रित करने के लिए, यदि आपके पास 2 से अधिक पीढ़ियों का प्रदर्शन होता है तो टक्कर से बचना मुश्किल होता है (रेखाएं क्रिसक्रॉसिंग)। तो यदि आपका आवेदन आपको इसे दो तक रखने की अनुमति देता है, तो यह बहुत अच्छा है।

alt text

या क्षैतिज:: मैं प्रोग्राम हैं जो एक प्रतिनिधित्व के इस प्रकार का उपयोग की एक संख्या है, या तो खड़ी लिखा है

alt text

आप और अधिक पीढ़ियों को एक बार में दिखाया गया है की जरूरत है, तो आप उन्हें अन्य प्रस्तुतियों के साथ आने की आवश्यकता होगी, और वे बहुत स्पष्ट हो सकते हैं ताकि आप सभी को एक ही पीढ़ी में एक ही स्तर पर दिखा सकें।

डेटा संरचनाओं के रूप में संबंधों का प्रतिनिधित्व करने के संबंध में - ठीक है, यह गन्दा है। सबसे सरल, सबसे साफ बात यह है कि किसी भी दो व्यक्ति जो क्रमशः एक ही व्यक्ति के माता और पिता हैं "विवाहित" हैं। लेकिन आप कई भागीदारों, कदम-बच्चों और इसी तरह का प्रतिनिधित्व कैसे करना चाहते हैं? आपके प्रोग्राम को क्या करना है इसके बारे में अधिक जानने के बिना जवाब देना मुश्किल है। हो सकता है कि आपके डेटा सेट में इन जटिलताओं में कोई समस्या न हो। अगर ऐसा होता है, तो पहले मुश्किल मामलों के बारे में सोचना बेहतर होता है - सरल प्रतिनिधित्व कठिन मामलों को कवर करने के लिए खुद को आसान विस्तार में उधार नहीं देते हैं।

ड्रा (हाथ से) कुछ कठिन मामलों का अनुमान लगाएं; यह सुझाव देगा कि आपको किस प्रकार का डेटा रिकॉर्ड करने की आवश्यकता है, और इसे व्यवस्थित कैसे किया जाए। आपके द्वारा खींचे जाने वाले विकल्प (जो पहले आता है, प्रत्येक नोड पर उपयोग करने के लिए कौन से प्रतीक और पाठ इत्यादि) आपके डेटा संरचना निर्णयों को सूचित करेंगे।

बी की मां और ए के बच्चे दोनों को सेट करना अनावश्यक लगता है - और अनावश्यकता त्रुटियों की ओर ले जाती है - एक चुनें। कौनसा? खैर, जब आप बी की मां (ए का लिंग) सेट करते हैं तो और अधिक जानकारी होती है और हम जानते हैं कि किसी भी व्यक्ति को 0 या उससे अधिक बच्चों के विपरीत, वास्तव में दो माता-पिता की आवश्यकता होगी। इसलिए मैं के साथ सेटिंग बी की मां के साथ जाना चाहूंगा; आप सेट को चुनने के लिए हमेशा किसी भी व्यक्ति के बच्चों को फिर से ढूंढकर पता लगा सकते हैं जिसका माता-पिता प्रश्न में व्यक्ति के बराबर है। और वास्तव में मदर & पिता संबंधों (बनाम सरल अभिभावक संबंध) को डुप्लिकेशंस कम कर सकते हैं (माना जाता है कि आप व्यक्तियों के साथ लिंग संग्रहित कर रहे हैं)।

0

कुछ वर्ग नीचे की तरह (यह एक छद्म कोड है नहीं एक असली जावा क्लास)

class Node 
{ 

    public Node Parent { get;set;} 

    public List<Node> Childs {get;set;} 

} 

का उपयोग करता

 Node ultimateGrandParent = new Node(); 
    ultimateGrandParent.Parent = null; 
    ultimateGrandParent.Childs = new List<Node>(); 
+0

मैं इसे एक वृक्ष संरचना में डालना चाहता हूं। मेरी मुख्य समस्या संबंध स्थापित कर रही है। मेरे पास एक पारिवारिक सदस्य वर्ग है जो किसी व्यक्ति को पिता और कई बच्चों को परेशान करने की अनुमति देता है। मुझे यकीन नहीं है कि विवाह को कैसे कार्यान्वित किया जाए और साथ ही माता-पिता के साथ कई बच्चों के लिए संबंध संबंधों को कैसे कार्यान्वित किया जाए ... इस तरह की त्वरित प्रतिक्रिया के लिए धन्यवाद !! – dr85

0

कम प्रक्रियात्मक तरीके से एकाधिक संबंधों को कार्यान्वित करने के तरीके पर कोई विचार?

हां, आप अपने आप को वस्तुओं के रूप में संबंधों का प्रतिनिधित्व कर सकते हैं। किसी भी दो लोगों के पास शून्य या अधिक रिश्ते हो सकते हैं।

साल पहले मैंने एक पुलिस रिकॉर्ड सिस्टम पर काम किया था जो कि आमतौर पर अपने मास्टर नाम इंडेक्स में किसी भी दो लोगों के बीच संबंधों के लिए किया था।

रिश्तों को निर्देशित किया जा सकता है। मां --- - मां-का -> चाइल्ड।

रिश्ते पदानुक्रमित हो सकते हैं। एक मां आईएसए माता-पिता।

2) मुझे परिवार के पेड़ को प्रदर्शित करने में सक्षम होना चाहिए। मैं यह कैसे कर सकता हूँ? वहाँ पर कोई भी कस्टम क्लास जीवन को आसान बनाती है?

हां, मौजूदा कोड मौजूद है जो ग्राफ के प्रदर्शन का समर्थन करता है। मुझे व्यक्तिगत रूप से prefuse visualization toolkit के साथ काम करने का अच्छा अनुभव था।

आपको ब्याज का प्रीफ्यूज ट्रीव्यू मिल सकता है; this example में नोड्स पर क्लिक करने का प्रयास करें। (हालांकि, यदि आप अपने सॉफ़्टवेयर को अपने आप के अलावा अन्य परिवारों द्वारा उपयोग करने का इरादा रखते हैं, तो एक पेड़ अपर्याप्त हो सकता है।)

संबंधित मुद्दे