2008-12-02 13 views
9

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

मैटलैब प्रलेखन कैसे तकनीकी रूप से यह करने के लिए पर मजबूत है, लेकिन "के इंजीनियरिंग" प्रक्रिया के बारे में थोड़ा कहते हैं, विशेष रूप से:

  • कैसे/नाम स्थान कार्यों को पैकेज या पुस्तकालयों बनाने के लिए?

  • फाइल सिस्टम पर फ़ाइलों को कैसे रखना सबसे अच्छा है?

  • सामान्य जीयूआई पैटर्न कैसे कार्यान्वित करें उदाहरण के लिए: एमवीसी, पर्यवेक्षक?

  • क्या ये प्रश्न मटकाब विकास में भी समझ में आते हैं?

  • कोई अन्य आम मुहावरे/नुकसान?

प्रत्यक्ष सलाह या अच्छी संदर्भ सामग्री के लिए एक सूचक बहुत उपयोगी होगा। धन्यवाद।

उत्तर

9

यह एक बिल्कुल उचित सवाल है, और थोड़ी सी देखभाल के साथ जीयूआई कोड लिखना संभव है जो बनाए रखना आसान है। कुछ सुझाव:

  • जीयूआई लेआउट कोड और "व्यापार तर्क" विभिन्न एम-फाइलों में रखो। (उदाहरण कोड के लिए this FileExchange submission देखें)। संबंधित रूप से, setappdata और getappdata का उपयोग करने या संरचना के चारों ओर गुजरने के बजाय जीयूआई स्थिति को बनाए रखने के लिए नेस्टेड फ़ंक्शंस का उपयोग करें।

  • सामान्य रूप से, कॉलबैक के लिए nested और anonymous functions का उपयोग करें। नेस्टेड फ़ंक्शन जावा में आंतरिक कक्षाओं के समान होते हैं, और अज्ञात फ़ंक्शंस लेक्सिकल क्लोजर (रूबी में ब्लॉक जैसे) को लागू करते हैं।

  • त्रुटियों के साथ गर्व से निपटने के लिए exceptions का उपयोग करें।

  • प्रत्येक जीयूआई ऑब्जेक्ट (उदा। स्लाइडर, अक्ष) को एक अद्वितीय और सार्थक टैग दें। उदाहरण के लिए, "आवृत्ति स्लाइडर" या "डेटाएक्स"। यह जीयूआई लेआउट और तर्क के बीच अलगाव को मजबूत करने में मदद करता है।

  • गाइड द्वारा प्रदान की जीयूआई नियंत्रण काफी निम्न स्तर के हैं, लेकिन आप (एक स्लाइडर और के लिए 'frequencyLabel' के लिए विभिन्न नियंत्रण के लिए व्यवस्थित टैग नाम चुनने जैसे, 'frequencySlider' द्वारा पुन: प्रयोज्य उच्च स्तर के घटकों को लागू कर सकते संबंधित पाठ लेबल)। घटक प्रारंभिक दिनचर्या घटक के विभिन्न हिस्सों को देखने और उन्हें प्रारंभ करने के लिए findobj का उपयोग कर सकती है। जैसे

 
    function myComponent(fig, basename) 
     sliderHandle = findobj(fig, 'tag', [basename 'Slider']); 
     textHandle = findobj(fig, 'tag', [basename 'Label']); 
     % initialize ... 
     set(sliderHandle, 'Callback', @sliderCallback); 

     % nested function for callback; note use of sliderHandle 
     function sliderCallback(h,e) 
      fprintf('current value is %g\n, get(sliderHandle,'Value')); 
     end 

     end 
  • आप R2008a उपयोग कर रहे हैं या बाद में, वहाँ OO विकास के लिए अतिरिक्त सहायता की बहुत है:
    • के लिए समर्थन packages/namespaces
    • उपयोग classes विभिन्न OO मानदंड लागू करने के लिए।
    • निर्मित पर्यवेक्षक पैटर्न के लिए सहायता (help on "listeners" देख)
0

मुझे मैटलैब में जीयूआई बनाने के साथ अनुभव नहीं है, लेकिन यदि आपकी कंपनी उस पर पैसा खर्च करेगी तो नेट के लिए matlab एक त्वरित विकल्प हो सकता है। यह आपको मैटलैब कोड लिखने की अनुमति देगा जो कि कॉम घटक में रैप किया जाएगा जिसे .NET से बुलाया जा सकता है जिसका अर्थ है कि आप अपनी जीयूआई किसी भी .NET भाषा में लिख सकते हैं। इसके लिए लिंक नीचे है। http://www.mathworks.com/products/netbuilder/

+0

सुझाव के लिए धन्यवाद, लेकिन ग्राहक अटल है कि यूआई देशी मैटलैब कोड है। –

3

मुझे लगता है कि आप (डैन विंटन) को स्वयं इंजीनियरिंग और डिजाइन पैटर्न में कुछ ज्ञान है, आप Matlab दुनिया में सामान्य अभ्यास की तलाश में हैं। इस उद्देश्य के लिए मैं जीयूआई पैकेज मैटलैब टूलबॉक्स जैसे ऑप्टिमाइज़ेशन, वक्र फिटिंग इत्यादि पर एक नज़र डालेगा। इन सभी टूलबॉक्सों का जीयूआई उनके सोर्स कोड (वे नियमित मैटलैब स्क्रिप्ट्स) के साथ आते हैं। आप इसे MatLab Central से कई उच्च रैंक वाले जीयूआई पैकेजों के स्रोत कोड पर भी देख सकते हैं। ये आपको मैटलैब में सामान्य अभ्यास का अच्छा प्रतिनिधित्व देगा।

+0

आपकी धारणा सही है: मैं कुछ अभ्यासों के अनुरूप वर्षों से सॉफ़्टवेयर लिख रहा हूं जो मैटलैब जैसे कम ओओ प्लेटफ़ॉर्म पर पोर्ट नहीं लग रहा है ... –

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