मैं इस विधियों, प्रक्रियाओं, कार्य और कक्षाओं की मूल बातें जानता हूं लेकिन मैं ऑब्जेक्ट उन्मुख प्रोग्रामिंग के विपरीत उन लोगों में अंतर करने के लिए हमेशा भ्रमित हूं, इसलिए कृपया कोई भी शरीर मुझे सरल उदाहरणों के बीच अंतर बता सकता है?विधि बनाम फंक्शन बनाम प्रक्रिया बनाम कक्षा?
उत्तर
एक वर्ग, वर्तमान, पारंपरिक OOP में, डेटा (सदस्य चर) कार्य/प्रक्रियाओं है कि उस डेटा पर काम के साथ साथ ही (सदस्य कार्यों या तरीकों का एक संग्रह है)। कक्षा के अन्य तीन शर्तों से कोई संबंध नहीं है, इस तथ्य से अलग कि इसमें "शामिल है" (बाद में "ठीक से" जुड़ा हुआ है)।
अन्य तीन शब्द ... अच्छा, यह निर्भर करता है।
ए फ़ंक्शन कंप्यूटिंग कथन का संग्रह है। तो प्रक्रिया है। कुछ बहुत गुदा प्रतिधारण भाषाओं में, हालांकि, एक समारोह एक मूल्य देता है और एक प्रक्रिया नहीं करता है। ऐसी भाषाओं में प्रक्रियाओं का आमतौर पर उनके दुष्प्रभावों (जैसे I/O) के लिए उपयोग किया जाता है जबकि कार्यों का उपयोग गणना के लिए किया जाता है और साइड इफेक्ट्स से बचने के लिए होता है। (यह वह उपयोग है जिसका मैं पक्षपात करता हूं। हाँ, मैं गुदा प्रतिरक्षी हूं।)
अधिकांश भाषाएं गुदा प्रतिरक्षी नहीं हैं, और नतीजतन लोग "फ़ंक्शन" और "प्रक्रिया" शब्द का उपयोग एक दूसरे के रूप में करेंगे , अपनी पृष्ठभूमि के आधार पर एक दूसरे को पसंद करते हैं। (Modula- * प्रोग्रामर "प्रक्रिया" का उपयोग करते हैं जाएगा, जबकि C/C++/जावा/जो कुछ भी, "समारोह" का उपयोग करने के उदाहरण के लिए। करते हैं) एक समारोह (या प्रक्रिया) के लिए
एक विधि सिर्फ शब्दजाल है एक वर्ग के लिए बाध्य। दरअसल सभी ओओपी भाषाएं "विधि" शब्द का उपयोग नहीं करती हैं। एक ठेठ (लेकिन सार्वभौमिक नहीं!) कार्यान्वयन में, विधियों में अंतर्निहित प्रथम पैरामीटर (जिसे this
या self
या जैसे) कहा जाता है, जिसमें कक्षा शामिल है। जैसा कि मैंने कहा, सार्वभौमिक नहीं है। कुछ भाषाएं पहले पैरामीटर को स्पष्ट करती हैं (और इस प्रकार आप जो भी चाहें नामित करने की अनुमति देते हैं) जबकि अभी भी दूसरों में कोई जादू पहला पैरामीटर नहीं है।
संपादित इस उदाहरण को जोड़ने के लिए:
निम्नलिखित अपरीक्षित और uncompiled सी ++ - कोड की तरह आप दिखाना चाहिए क्या बातें की तरह शामिल कर रहे हैं।
class MyClass
{
int memberVariable;
void setMemberVariableProcedure(int v)
{
memberVariable = v;
}
int getMemberVariableFunction()
{
return memberVariable;
}
};
void plainOldProcedure(int stuff)
{
cout << stuff;
}
int plainOldFunction(int stuff)
{
return 2 * stuff;
}
इस कोड getMemberVariableProcedure
में और getMemberVariableFunction
दोनों तरीके हैं।
जोड़ने के लिए धन्यवाद फ़ंक्शन/प्रक्रिया अंतर वास्तव में गुदा नहीं है - यह वास्तव में एक अच्छा विचार है, और इसे अक्सर कमांड/क्वेरी अलगाव कहा जाता है। – kyoryu
इसका मतलब यह है कि आप गुदा प्रतिशोध के रूप में (या यह "गुदा-प्रतिधारण" है?) जैसा कि मैं हूं। ;) –
धन्यवाद आप मेरे साथ उदाहरण प्रदान कर सकते हैं। इस बीच अंतर करने के लिए? –
प्रक्रियाएं, कार्य और विधियां आम तौर पर समान होती हैं, उनमें कुछ प्रसंस्करण विवरण होते हैं।
इन तीनों और उन स्थानों के बीच एकमात्र अंतर जो मैं सोच सकता हूं, उनका उपयोग किया जाता है।
मेरा मतलब है कि 'विधि' आमतौर पर कक्षा के भीतर कार्यों को परिभाषित करने के लिए उपयोग की जाती है, जहां कई प्रकार के उपयोगकर्ता सार्वजनिक, संरक्षित, निजी की तरह सही पहुंच सकते हैं।
"प्रक्रियाएं" भी कार्य करती हैं, लेकिन वे आम तौर पर एक समारोह की पूर्ति पर या किसी दूसरे के साथ समानांतर होने पर कार्य की एक श्रृंखला का प्रतिनिधित्व करते हैं।
कक्षाएं संबंधित विशेषताओं और विधियों का संग्रह हैं। गुण कक्षा के उस वस्तु को परिभाषित करते हैं जहां विधियों द्वारा कक्षा द्वारा किए गए कार्यों को किया जाता है।
आशा, इस मददगार था
परंपरागत रूप से, एक प्रक्रिया और एक समारोह के बीच का अंतर यह है कि एक प्रक्रिया एक मूल्य के दौरान एक मूल्य देता है। सी-शैली भाषाएं इस भेद को नहीं बनाती हैं - सबकुछ एक कार्य है, यह सिर्फ 'शून्य' वापस कर सकता है। – walkytalky
@ वाल्कीटाल्की, – Starx
- 1. स्वरूपप्रोवाइडर बनाम विस्तार विधि बनाम नई कक्षा
- 2. फनक प्रतिनिधि बनाम फंक्शन
- 3. एक्सटेंशन विधि बनाम हेल्पर कक्षा
- 4. 'विधि' बनाम 'संदेश' बनाम 'फ़ंक्शन' बनाम '???'
- 5. गैर-स्टेटिक कक्षा बनाम स्टेटिक क्लास बनाम स्टेटिक विधि (सी #)
- 6. फंक्शन ओवरलोडिंग बनाम डिफ़ॉल्ट पैरामीटर?
- 7. कोड जेनरेटर बनाम ओआरएम बनाम संग्रहीत प्रक्रिया
- 8. स्टेटिक विधि बनाम अजगर
- 9. इंटरफेस बनाम कक्षा में
- 10. __construct() बनाम विधि
- 11. वैश्विक बनाम फ़ंक्शन बनाम स्थैतिक वर्ग विधि
- 12. लाइटवेट बनाम हेवीवेट प्रक्रिया
- 13. Concurrency: प्रक्रिया बनाम थ्रेड
- 14. । बनाम :: एक विधि
- 15. वर्ग बनाम कक्षा
- 16. कक्षा वस्तु बनाम HashMap
- 17. कक्षा() बनाम प्रकार() रूबी
- 18. डीटीओ कक्षा बनाम संरचना
- 19. control.BeginInvoke() बनाम डिस्पैचर बनाम SynchronizationContext बनाम .. - विश्वसनीयता
- 20. संपत्ति बनाम फंक्शन (विशेष रूप से .NET)
- 21. Mercurial: भ्रष्टाचार बनाम रिकॉर्ड बनाम qrecord बनाम शेल्व बनाम प्रत्यारोपण बनाम dirstate बनाम कतार
- 22. बनाम बनाम
- 23. : बनाम बनाम ::
- 24. स्पाइडरमोन्की बनाम जावास्क्रिप्ट बनाम बनाम?
- 25. ड्रॉप ... बनाम बनाम
- 26. रेल बनाम बनाम
- 27. Exec बनाम ExecWait बनाम ExecShell बनाम nsExec :: Exec बनाम nsExec :: ExecToLog बनाम nsExec :: ExecToStack बनाम ExecDos बनाम ExeCmd
- 28. सब्सक्राइबर विधि बनाम घटना
- 29. कक्षा कक्षा - उदाहरण बनाम कक्षा के तरीके
- 30. प्रतिनिधि बनाम बनाम। आईफोनओएस
इन शर्तों में से एक वास्तव में दूसरों के लिए उपयुक्त नहीं है :) (तुलनात्मकता के संबंध में) –