मैं अपने कोड में कक्षाओं का उपयोग करने का सही तरीका सीखने की कोशिश कर रहा हूं, जब यह ग्राहकों के समूह की तरह कुछ स्पष्ट नहीं है, जानवरों से विरासत में कुत्तों आदि।क्या यह एक बुरा फॉर्म है जो मुख्य/फॉर्म 1 के अलावा अन्य वर्गों को एक-दूसरे के साथ बातचीत करने की कोशिश करता है?
मैंने कोड के बड़े अनुभागों को तोड़ दिया है "विशेषताएं" जैसे Installer.cs
, Downloader.cs
, UiManager.cs
। एकमात्र तरीका यह है कि मैं उन वर्गों को एक दूसरे के गुणों और विधियों के साथ बातचीत करने के लिए ढूंढ सकता हूं, उन्हें सभी स्थिर बनाना है, जिसे मुझे किसी अन्य प्रश्न में बताया गया है, यह गलत तरीका है।
कक्षाएं एक दूसरे से बात है कि मैं बस अभी तक समझ में नहीं आता बनाने के लिए एक तरीका होता है:
तो मेरी समस्या 3 चीजों में से एक है।
वर्ग एक दूसरे से बात करने के लिए प्रयास करना चाहिए कभी नहीं, लेकिन एक बंद कार्रवाई करने और फिर कुछ लौट
main/form1
है, जो मुख्य वर्ग तो एक बंद कार्रवाई के लिए किसी अन्य वर्ग में पारित करने के लिए उपयोग कर सकते हैं करने के लिए वापस।कक्षाएं बहुत सारे उदाहरण बनाने के लिए वास्तव में केवल उपयोगी हैं, और कुछ अन्य संरचना पूरी तरह से मुझे मुख्य वर्ग से कार्यक्षमता के बड़े हिस्से को सारणीबद्ध करने के बारे में जानने की आवश्यकता है।
सभी ट्यूटोरियल मैं पा सकते हैं और व्याख्यान मैं देखना ही में बताने के लिए लग रहे हैं कि कैसे कक्षाएं काम, लेकिन नहीं कब और कैसे उन्हें एक वास्तविक उत्पाद में उपयोग करने के लिए।
संपादित करें - एक अधिक सटीक उदाहरण:
कहो मैं एक स्ट्रिंग है कि पूरे अनुप्रयोग के लिए महत्वपूर्ण है, और की जरूरत है देखा है के लिए और/या हर वर्ग द्वारा संभावित रूप से संशोधित। मैं कोड के चारों ओर उस जानकारी को एक वर्ग में सब कुछ या इसे स्थिर बनाये बिना कैसे स्थानांतरित करूं?
मैं इसे स्ट्रिंग के बिना Form1
में उस स्ट्रिंग को रहने के लिए एक तरीका नहीं देख सकता (क्योंकि सभी फॉर्म इवेंट और फ़ंक्शंस इसे कक्षा में पास करने के लिए इसे देखने में सक्षम होने की आवश्यकता होगी)।
मैं स्ट्रिंग और पूरी कक्षा स्थिर बनाने के बिना स्ट्रिंग को किसी अन्य वर्ग में रखने का कोई तरीका नहीं देख सकता, इसलिए अन्य कक्षाएं इसमें देख सकती हैं।
शायद कुछ ऐसा है जो मुझे वास्तव में कक्षाओं को तुरंत चालू करने और वस्तुओं को एक-दूसरे के साथ बातचीत करने के बारे में याद आ रहा है।
यह एक बड़ा सवाल है , और एक जिसे आसानी से उत्तर नहीं दिया जा सकता है। ओओपी और [डिजाइन पैटर्न] पर कुछ किताबें पढ़ने पर विचार करें (http://www.amazon.co.uk/Head-First-Design-Pternterns-Freeman/dp/0596007124/ref=sr_1_fkmr0_1?ie=UTF8&qid=1346955994&sr=8 -1-fkmr0)। –
"अगर पुस्तक को उत्तर देने के लिए लिखा जा सकता है ..." के रूप में बंद करने के लिए वोट दें। किताबों का एक और सेट टीडीडी पर किताबें होगी। अर्थात। कुछ यहां संदर्भित हैं http://stackoverflow.com/questions/880401/what-book-on-tdd-for-c-sharp-with-treatment-of-mocks। –
यह वास्तव में एक _very_ बड़ा सवाल है। कम से कम मदद करने के लिए, इस बात पर विचार करें कि आपके _classes_ को शायद एक दूसरे से बात नहीं करनी चाहिए, लेकिन निश्चित रूप से उन वर्गों से _objects_ तत्काल हो सकता है। आप समर्थन-योग्यता कारणों के लिए, निश्चित रूप से क्रॉस-ऑब्जेक्ट निर्भरता को न्यूनतम रखना चाहते हैं। अंगूठे के नियमों का पालन करें जैसे "आवश्यकताएं, तत्काल न करें" जिसका अर्थ है कि यदि कक्षा ए में किसी फ़ंक्शन को कक्षा बी के उदाहरण की आवश्यकता होती है तो उसे उसमें दिया जाना चाहिए, इसे आंतरिक रूप से नहीं बनाना चाहिए। निश्चित रूप से, इन सभी के लिए _lot_ अधिक है। – David