प्रक्रियात्मक प्रोग्रामिंग आणि ओओपीमधील फरक आपण स्पष्ट करू शकता?


उत्तर 1:

मूळ प्रश्नः

प्रक्रियात्मक प्रोग्रामिंग आणि ओओपीमधील फरक आपण स्पष्ट करू शकता?

उत्तरः

प्रथम गोष्टी प्रथम, प्रक्रियागत आणि ऑब्जेक्ट ओरिन्टेड प्रोग्रामिंग म्हणजे काय ते परिभाषित करूया.

व्याख्या - प्रक्रियात्मक भाषेचा अर्थ काय? प्रक्रियात्मक भाषा ही संगणक प्रोग्रामिंग भाषेची एक प्रकार आहे जी प्रोग्राम तयार करण्यासाठी त्याच्या प्रोग्रामिंग संदर्भात सुसंवादी चरण आणि प्रक्रियेची मालिका निर्दिष्ट करते. यामध्ये संगणकीय कार्य किंवा प्रोग्राम पूर्ण करण्यासाठी स्टेटमेन्ट्स, फंक्शन्स आणि कमांड्सची पद्धतशीर ऑर्डर आहे. प्रासीर्युअल भाषा देखील अत्यावश्यक भाषा म्हणून ओळखली जाते. टेकोपिडिया प्रोसीड्युलर लँग्वेज समजावून सांगते भाषा प्रक्रियेची भाषा परिभाषित करते, तसेच पूर्वनिर्धारित आणि सुव्यवस्थित प्रक्रियेवर अवलंबून असते. किंवा प्रोग्रामच्या आर्किटेक्चरमधील उप-रूटीन वांछित अवस्थेत किंवा आउटपुटपर्यंत पोहोचण्यासाठी संगणकाने आवश्यक असलेल्या सर्व चरणांचा निर्दिष्ट करून प्रक्रिया प्रक्रिया भाषा व्हेरिएबल्स, फंक्शन्स, स्टेटमेन्ट्स आणि सशर्त ऑपरेटरमध्ये प्रोग्राम विभाजित करते. कार्य करण्यासाठी डेटा आणि व्हेरिएबल्सवर प्रक्रिया किंवा कार्ये अंमलात आणली जातात. या प्रक्रियेस प्रोग्राम पदानुक्रम आणि इतर कार्यपद्धती यांच्या दरम्यान कुठेही / म्हटले जाऊ शकते. प्रक्रियात्मक भाषेमध्ये लिहिलेल्या प्रोग्राममध्ये एक किंवा अधिक प्रक्रियांचा समावेश आहे. प्रायोगिक भाषा ही वापरातल्या सर्वात सामान्य प्रकारची प्रोग्रामिंग भाषा आहे ज्यात सी / सी ++, जावा, कोल्डफ्यूजन आणि पास्कल यासारख्या उल्लेखनीय भाषा आहेत.

आता ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग निश्चित करू.

व्याख्या - ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (ओओपी) म्हणजे काय? ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (ओओपी) हे सॉफ्टवेअर प्रोग्रामिंग मॉडेल आहे जे ऑब्जेक्ट्सच्या आसपास तयार केलेले आहे. हे मॉडेल ऑब्जेक्ट्स (डेटा फील्ड्स) मध्ये डेटाचे विभाजन करते आणि वर्ग (पद्धती) च्या घोषणणेद्वारे ऑब्जेक्ट सामग्री आणि वर्तनचे वर्णन करते .ओओपी वैशिष्ट्यांमध्ये पुढील गोष्टी समाविष्ट आहेत: एन्केप्सुलेशनः यामुळे प्रोग्रामची रचना व्यवस्थापित करणे सुलभ होते कारण प्रत्येक ऑब्जेक्टची अंमलबजावणी आणि स्थिती मागे लपलेले असते. पॉलीमॉर्फिझ्म: याचा अर्थ असा आहे की अमूर्त घटक एकाधिक मार्गांनी अंमलात आणले जातात. माहिती: याचा अर्थ अंमलबजावणीच्या तुकड्यांची श्रेणीबद्ध व्यवस्था आहे. ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग सोपी प्रोग्रामिंग करण्यास अनुमती देते. त्याचा फायदा पुन्हा वापरण्याची क्षमता, रीफॅक्टिंग, एक्स्टेंसिबिलिटी, देखभाल आणि कार्यक्षमता यांचा समावेश आहे. टेक्नोपीडिया ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (ओओपी) हे सांगते की मागील दशकात किंवा त्याहून अधिक काळ निवडक प्रोग्रामिंग मॉडेल आहेत. ओओपीची मॉड्यूलर डिझाइन प्रोग्रामरना मोठ्या प्रमाणात अनुक्रमिक कोडऐवजी मॅनेज करण्यायोग्य भागांमध्ये सॉफ्टवेअर तयार करण्यास सक्षम करते. ओओपीचा एक चांगला फायदा म्हणजे स्केलेबिलिटी, ऑब्जेक्ट्स आणि परिभाषा ज्यामध्ये कोणतीही मर्यादा नाही. तसेच, पद्धतीमधून डेटाचे पृथक्करण जुन्या रेषीय सॉफ्टवेअर भाषांमध्ये आढळणारी सामान्य समस्या प्रतिबंधित करते. बग रेषीय कोडमध्ये आढळल्यास, त्याचे सिस्टमद्वारे भाषांतर केले जाऊ शकते आणि हार्ड-टू-ट्रेस त्रुटींचे जनमानस तयार केले जाऊ शकते. याउलट, एक ओओपी प्रोग्राम, त्याची पद्धत आणि डेटाचे पृथक्करण करून, अशा प्रसारित चुकांबद्दल संवेदनाक्षम नाही. लोकप्रिय ओओपी भाषांमध्ये जावा, भाषांचे सी-फॅमिली, व्ही.बी.नेट शॉप आणि पायथन समाविष्ट आहेत. "शुद्ध" ओओपी भाषा स्काला, रुबी, एफिल, जेएडीई, स्मॉलटॉक आणि पन्ना यांचा समावेश आहे.

व्याख्यांचा स्रोत ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (ओओपी) म्हणजे काय? - टेकोपीडिया वरून व्याख्या व कार्यपद्धती काय आहे? - टेकोपीडियाकडून व्याख्या

आता चला फरक अंमलबजावणीनुसार पाहू.

आम्ही प्रक्रियेच्या सहाय्याने सुरुवात करू आणि हे करण्याचा सर्वात सोपा मार्ग म्हणजे अर्दूनोसह सी भाषा वापरणे हे मला माहित आहे.

मी ब्लिंकिंग लाइट ट्यूटोरियल आधारभूत अंमलबजावणींपैकी एक असल्याने आधार म्हणून वापरण्याचे ठरविले.

// जेव्हा आपण रीसेट दाबा किंवा बोर्ड शून्य सेटअप () {// दाबा तेव्हा सेटअप कार्य चालू होते / आउटपुट म्हणून डिजिटल पिन LED_BUILTIN प्रारंभ करा. पिनमोड (LED_BUILTIN, OUTPUT); } // लूप फंक्शन पुन्हा कायमचे निरंतर निरर्थक पळवाट () {डिजिटलराइट (LED_BUILTIN, HIGH); // एलईडी चालू करा (एचआयटी व्होल्टेज पातळी आहे) विलंब (1000); // दुसर्‍या डिजिटलराइटची प्रतीक्षा करा (LED_BUILTIN, LOW); // व्होल्टेज LOW विलंब (1000) करून एलईडी बंद करा; // एक सेकंदाची प्रतीक्षा करा}

आता मी कोड थोडे चांगले समजावून सांगते. आपल्याकडे सेटअप आणि लूप अशी दोन फंक्शन्स आहेत. लूपला वारंवार म्हटले जाते आणि सेटअप फक्त एकदाच म्हटले जाते. आपण पॉवर रेटिंग अनुक्रमे उच्च आणि निम्न ठेवण्यासाठी एलईडीला डिजिटलराईट आज्ञा पाठवा. उशीर हापर्यंत प्रकाश कितीपर्यंत चालू किंवा बंद राहील, या प्रकरणात, 1000 मिम्स किंवा अंदाजे 1 सेकंद. खूपच सरळ फॉरवर्ड, परंतु हे आपणास प्रक्रियात्मक प्रोग्रामिंगची अत्यावश्यकता दर्शविते. आपण एक प्रक्रिया किंवा सूचना लिहा आणि ती समाप्त होईपर्यंत पुनरावृत्ती होते. आवश्यक कोडमध्ये कोणतीही अतिरिक्त गुंतागुंत नाही.

सी # आणि ओओपी उदाहरण वेळ.

सिस्टम वापरणे; सिस्टम.कलेक्शन्स. जेनेरिक वापरणे; सिस्टम.लिंक वापरुन; सिस्टम. टेक्स्ट वापरणे; नेमस्पेस अरेरे {सार्वजनिक वर्ग ग्राहक {// सदस्य व्हेरिएबल्स पब्लिक इन्ट कस्टिड; सार्वजनिक स्ट्रिंग नाव; सार्वजनिक स्ट्रिंग पत्ता // फील्ड ग्राहक प्रारंभ करण्यासाठी कंडक्टर () {कस्टिड = 1101; नाव = "टॉम"; पत्ता = "यूएसए"; records // ग्राहक रेकॉर्ड (कार्यक्षमता) सार्वजनिक शून्य प्रदर्शन प्रदर्शन डेटा () ata कन्सोल.राइटलाइन ("ग्राहक =" + ग्राहक); कन्सोल.व्राइटलाइन ("नाव =" + नाव); कन्सोल.व्राइटलाइन ("पत्ता =" + पत्ता); Entry // एंट्री पॉईंटसाठी कोड}} क्लास प्रोग्राम {स्टॅटिक रिक्त मेन (स्ट्रिंग [] आर्गेस) {// ऑब्जेक्ट इन्स्टॅंटेशन ग्राहक ऑब्जेक्ट = नवीन ग्राहक (); // ऑब्जेक्ट कॉल करण्याची पद्धत.डिस्प्लेडाटा (); // कन्सोलला कॉल फील्ड. राईटलाइन (ऑब्जेक्ट. कस्टिड); कन्सोल.व्राइटलाइन (ऑब्जेक्ट नेम); कन्सोल.व्राइटलाइन (ऑब्जेक्ट. अ‍ॅड्रेस); }}}

येथे ओओपीचे उत्कृष्ट उदाहरण आहे. आपल्याकडे एक ग्राहक वर्ग आहे जो आपल्यासाठी उपलब्ध असलेल्या सर्व वस्तू परिभाषित करतो. आपल्याकडे अद्याप लिहिण्यासाठी कार्ये / पद्धती आहेत. परंतु मुख्य फरक असा आहे की आपल्याला प्रत्येक पद्धती / कार्ये ज्याचे करायचे आहे त्यानुसार विभाजित करायचे आहे. तिथून, आपली मुख्य पद्धत प्रोग्रामचा प्रवेश बिंदू आहे आणि अशा प्रकारे आपला कोड येथे असावा.


उत्तर 2:

जावा मध्ये OOPS संकल्पना

कार्यपद्धती भाषा कार्येवर आधारित असते परंतु ऑब्जेक्ट देणारी भाषा वास्तविक जगाच्या वस्तूंवर आधारित असते.प्रक्रियात्मक भाषा फंक्शनच्या अंमलबजावणीच्या क्रमास महत्त्व देते परंतु ऑब्जेक्ट ओरिएंटेड भाषा ऑब्जेक्ट्सची राज्ये आणि वर्तन यांना महत्त्व देते.प्रक्रियात्मक भाषा संपूर्ण प्रोग्राममध्ये डेटा उघड करते. परंतु ऑब्जेक्ट देणार्या भाषेमध्ये डेटा encapsulates.Predcedural भाषा वरच्या डाऊन प्रोग्रामिंग प्रतिमान अनुसरण करते परंतु ऑब्जेक्ट देणारं भाषा खाली प्रोग्रामिंग प्रतिमान अनुसरण करते. अभिसरण भाषा अवघड आहे म्हणून सुधारित करणे, वाढवणे आणि देखरेख करणे परंतु ऑब्जेक्ट देणारं भाषा निसर्गात कमी जटिल आहे. म्हणून सुधारित करणे, विस्तृत करणे आणि देखरेख करणे सोपे आहे.प्रक्रियात्मक भाषा कोडच्या पुनर्वापराची कमी व्याप्ती प्रदान करते परंतु ऑब्जेक्ट ओरिएंटेड भाषा कोड पुन्हा वापरासाठी अधिक व्याप्ती प्रदान करते.


उत्तर 3:

प्रक्रियात्मक प्रोग्रामिंग हा प्राथमिक गोषवारा यंत्रणा म्हणून कार्यपद्धतीसह प्रोग्रामिंग करीत आहे. हं.

प्रक्रिया काय आहे? हा कोडचा नामांकीत ढेकूळ आहे ज्याला नावाने आवाहन केले जाऊ शकते आणि ज्या ठिकाणी ते मागितले गेले आहे त्या संदर्भातून मूल्ये आणि संदर्भ प्राप्त करतात, काही कार्य केल्यावर त्या संदर्भात मूल्ये आणि संदर्भ परत येऊ शकतात.

रिटर्न व्हॅल्यू म्हणून बर्‍याचदा प्रक्रियेमध्ये एक विशिष्ट मूल्य दर्शविले जाते. ज्या प्रक्रियांना समर्थन देतात अशा भाषांमध्ये ते सामान्यपणे कार्ये असल्यासारखे वापरलेले दिसणे सामान्य आहे, जेथे मापदंडांना युक्तिवाद म्हणून मानले जाते आणि परताव्याचे मूल्य कार्यपद्धतीमध्ये त्या वितर्कांचे कार्य मूल्य म्हणून मोजले जाते. परंतु या प्रक्रियेमध्ये पॅरामीटर्सद्वारे त्याच्या कॉलिंग संदर्भात एक किंवा अधिक मूल्ये परत करणे, एकतर “आउट” पॅरामीटर्स भाषेचे समर्थन करत असल्यास किंवा संदर्भाने उत्तीर्ण केलेले मूल्य बदलून आणि परतावा स्वतःच वापरणे देखील मूर्खपणाचे आहे. ध्वज, स्थिती किंवा त्रुटी निर्देशक. युनिक्सच्या जोरदारपणे प्रोग्रामिंग संस्कृतीत आपण यशस्वीरित्या सूचित करण्यासाठी 0 परत आला (किंवा कमीतकमी ज्ञात अपयशाची अनुपस्थिती) आणि काही ज्ञात अपयश मोड दर्शविण्यासाठी नकारात्मक संख्या पहाल.

हे मॉडेलला काटेकोरपणे आवश्यक नाही परंतु बहुधा सुप्रसिद्ध अर्ध-जादूचा समान संच वापरुन त्यातील तत्त्व अमूर्त यंत्रणा म्हणून प्रक्रिया करणार्‍या भाषेचा मी विचार करू शकत नाही. यासारख्या गोष्टी:

जर (अट) {doThisThing ()} अन्यथा {doThatTing ()

आणि

(स्थिती) {ठेवाऑनडॉइंगथिंग ()}

मला असे वाटते की बर्‍याच प्रोग्रामरच्या मनात, "प्रक्रियात्मक" प्रोग्रामिंग "स्ट्रक्चर्ड प्रोग्रामिंग" सह खूपच गोंधळलेले असते. ज्या दिवशी स्ट्रक्चर्ड प्रोग्रामिंग नवीन होता, तेव्हा असे आढळले की तेथे एक प्रवाह-नियंत्रण-रचनांचे एक सोयीचे संच आहेत ज्यातून प्रक्रियेमध्ये आवश्यक असलेल्या प्रवाह-नियंत्रणाचे सर्व नमुने तयार केले जाऊ शकतात:

पर्याय निवडणे

  • तर अन्यथा (बुलियनवर आधारित दोन निवडी) केस किंवा स्विच (कोणत्याही सेटवर आधारित अनेक निवडी)

पुनरावृत्ती

ज्ञात सीमांसह:

  • लूपसाठी (सामान्यत: दिलेल्या पुनरावृत्तीची संख्या) फॉरच लूप्स (काही संग्रह आकाराप्रमाणे पुनरावृत्ती होऊ शकतात, कदाचित स्वत: सदस्यांवरच)

तदर्थ सीमांसह:

  • (0 किंवा अधिक पुनरावृत्ती) करताना (1 किंवा अधिक पुनरावृत्ती) करताना

आणि दुर्दैवाने अलोकप्रिय:

  • एक्झिट-जेव्हा लूप

जे कमीतकमी एकदा बाहेर पडण्यापूर्वी कोड चालवते, आणि बाहेर पडल्यानंतर शून्य किंवा अधिक वेळा कोड.

या रचना एकमेकांच्या दृष्टीने अंमलात आणल्या जाऊ शकतात परंतु हे आश्चर्यकारकपणे काही बाबतीत कठीण आहे. नेस्टेड ifs सह अचूकपणे अनुकरण करणे स्विच / केस स्टेटमेन्ट्स फार अवघड आहे. आणि आमच्या हेतूंसाठी महत्त्वाची बाब म्हणजे ही भाषा अंमलबजावणीसाठी नेहमीच तयार केली जातात आणि ते अशा गोष्टी करू शकतात ज्या आपण, कार्यकारी प्रोग्रामर, कोड लिहिण्यासाठी संघर्ष कराल. मी विचार करू शकत असलेल्या प्रत्येक शुद्ध किंवा प्रामुख्याने प्रक्रियात्मक भाषेत, हे फारच कठीण आहे आणि बर्‍याच प्रकरणांमध्ये आपल्या स्वत: च्या नियंत्रण रचना लिहिणे अशक्य आहे ज्याने अंगभूत म्हणून काम केले आहे. म्हणून, आपण अंगभूत असलेले वापरता. प्रक्रियात्मक, संरचित, प्रोग्रामिंग हे एक अतिशय विवंचनेत जग आहे.

प्रक्रियात्मक प्रोग्रामिंग भाषांमध्ये काही प्रकारची मॉड्यूल कॉन्सेप्ट असते, प्रक्रियेच्या गुच्छांसाठी नामित कंटेनर. त्यापैकी काही कार्यपद्धती दृश्यमान असतील आणि वापरण्यायोग्य असतील तर त्या मॉड्यूलच्या बाहेरच असतील तर काही फक्त मॉड्यूलमध्येच दृश्यमान व वापरण्यायोग्य असतील, तीच तीच कार्यपध्दती त्याच मॉड्यूलमध्येच आहेत. मॉड्यूलसह ​​बर्‍याच भाषांमध्ये, मॉड्यूलमध्ये त्यात चल देखील असू शकतात जे मॉड्यूलमध्ये परिभाषित केलेल्या प्रक्रियेत दिसू शकतील आणि सामायिक केले जातील. सी देखील हे करू शकते. अशा मॉड्यूल सिस्टममुळे एन्केप्युलेशन आणि माहिती लपविण्याच्या पदवीची अनुमती मिळते: मॉड्यूलच्या आत त्या कार्यपद्धती आणि चल, मॉड्यूलच्या बाहेर दिसणार्‍या कार्यपद्धतीची अंमलबजावणी करणे, सिस्टमच्या संपूर्ण संरचनेत कपलिंग नियंत्रित करण्यास मदत करू शकतात. जे छान आहे.

जर आपण एक पाऊल पुढे गेला आणि त्याच मॉड्यूलच्या एकाधिक वापरास परवानगी दिली, प्रत्येक वापरासह मॉड्यूलमध्ये परिभाषित केलेल्या व्हेरिएबल्सची स्वत: ची प्रत असेल तर मॉड्यूल एखाद्या वस्तूचे आदिम सारखे दिसायला लागते. आणि जर आपण नंतर मॉड्यूलची उदाहरणे व्हेरिएबल्ससह प्राथमिक गोष्ट बनविली आणि त्यांच्यात प्रक्रिया काही प्रमाणात सामायिक केली तर आपल्याकडे फक्त त्यांची एक प्रत असेल तर आपण सी ++ काय करीत आहात तेवढेच जवळ आहात. हे सूक्ष्म मॉड्यूलर, प्रक्रियात्मक, संरचित प्रोग्रामिंग ऑब्जेक्ट-देणारं प्रोग्रामिंग नाही.

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग प्राथमिक गोषवारा यंत्रणा म्हणून ऑब्जेक्टसह प्रोग्रामिंग करीत आहे. हं.

ऑब्जेक्ट म्हणजे काय? हे एक दीर्घकाळ जगण्याचे संगणकीय अस्तित्व आहे ज्याला काहीतरी करण्यास सांगितले जाऊ शकते. ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंगचा एक आर्किटाइप आणि अनुकरणीय म्हणजे स्मॉलटॉक. स्मॉलटॉकमध्ये, प्रत्येक मूल्य एक ऑब्जेक्ट असते (किंवा कमीतकमी, फारच कमी मूल्ये जी वस्तू नसतात त्याप्रमाणे दिसतात). एकमेकांना संदेश पाठविणार्‍या ऑब्जेक्ट्सद्वारे गणना पुढे सरकते. स्मॉलटॉकची अंमलबजावणी काही प्रमाणात बदलते, परंतु ही सर्वसाधारण कल्पना आहे:

मेमरी मध्ये सेट ऑब्जेक्ट्स. जेव्हा एखाद्या ऑब्जेक्टला दुसरे ऑब्जेक्ट काहीतरी करण्याची इच्छा असते, तेव्हा तो त्यास विचारणारा संदेश तयार करतो आणि इच्छित वस्तूकडे पाठवितो. संदेश वस्तू आहेत. ऑब्जेक्ट राज्य राखण्यासाठी जबाबदार असतात, ते म्हणजे व्हेरिएबल्स. ते कोड चालवत नाहीत. जेव्हा एखाद्या ऑब्जेक्टला मेसेज येतो तेव्हा तो त्यास त्याच्या वर्गात पाठवितो. वर्ग वस्तू आहेत. वर्ग ऑब्जेक्ट्स तयार आणि व्यवस्थापित करण्यासाठी जबाबदार आहेत, ते कोड चालवत नाहीत. वर्ग त्याच्या मेटाक्लासवर संदेश पाठवितो. मेटाक्लासेस वस्तू असतात. मेटाक्लासेस व्यवस्थापित करण्याच्या पद्धतींसाठी जबाबदार असतात. मेटाक्लास त्याच्या पद्धती पाहतो आणि संदेशास अनुकूल असलेली एक सापडतो. पद्धती ऑब्जेक्ट्स आहेत. वाटेत मेसेज ऑब्जेक्टला माहितीच्या विविध तुकड्यांनी सजावट केली गेली, त्यात मेसेज आलेल्या ऑब्जेक्टचा संदर्भही होता. कोड कोड चालविण्यास जबाबदार आहे आणि ते करण्यासाठी मूळ संदेशामध्ये पास केलेले कोणतेही वितर्क वापरतात. मेसेज प्राप्त झालेल्या ऑब्जेक्टच्या संदर्भात ही पद्धत आपला कोड चालवते. मेथडचा कोड इतर ऑब्जेक्ट्स तयार करण्यासाठी आणि पाठविण्यासाठी संदेशांची फक्त एक स्क्रिप्ट आहे. संदेशाशी जुळण्यासाठी मेटाक्लासला एखादी पद्धत सापडली नाही तर ऑब्जेक्टच्या वर्गाच्या मूळ वर्गाच्या मेटाकॅक्सेसचा शोध सुरू होतो. याला "वारसा" म्हणतात.

कार्यक्षमतेच्या कारणास्तव एखाद्या अंमलबजावणीत किंवा अंमलबजावणीत काही विशिष्ट पद्धती तयार केल्या गेल्या असू शकतात, परंतु तत्त्वतः संपूर्ण स्मॉलटॉक प्रणाली या मार्गाने कार्य करू शकते.

स्मॉलटॅकमध्ये प्रोग्रामिंग म्हणजे स्क्रिप्टिंग मेसेजेसचे संयोजन पद्धतींमध्ये जाण्यासाठी पाठवते आणि राहण्यासाठीच्या पद्धतींसाठी नवीन वर्ग (मेटाक्लासेससह) तयार करणे. आणि हे काहीच नसल्यामुळे फ्लो-ऑफ-कंट्रोलच्या बरोबरीचे सत्य आहे. अन्यथा.

प्रक्रियात्मक भाषेत आपण संग्रहाच्या प्रत्येक सदस्यावर या छद्म कोड सारख्या कोडसह काही कारवाई करू शकता:

फोरच (एक संकलन मध्ये थिंग) doThisActionOn (थिंग)

ठराविक स्मॉलटाकमध्ये संदेश पाठविण्याची समतुल्य स्क्रिप्ट यासारखी दिसू शकते:

aकलेक्शन करा: [अछिंग | ए थिंग टेक थिस अक्शन].

येथे टेक थिसक्शन हा संग्रह आहे. संग्रहातील प्रत्येक टिंग ऑब्जेक्टला संदेश पाठविला जात आहे. (तसे, स्क्वेअर ब्रॅकेट्स मधील कोड हा एक ब्लॉक आहे, यालाच स्मॉलटॅक लॅम्ब्डा म्हणतो. हा एक ऑब्जेक्ट आहे.) जर आपण दोघांची तुलना केली तर आम्ही प्रक्रियेच्या विरूद्ध ऑब्जेक्ट-देणारं प्रोग्रामिंगची काही गंभीर वैशिष्ट्ये पाहू शकतो:

  • प्रक्रियात्मक कोडमध्ये, आम्ही संग्रहातील सदस्यांना कसे जायचे ते निवडतो, आम्ही फोरच यंत्रणा निवडतो. ऑब्जेक्ट-ओरिएंटेड कोडमध्ये आम्ही संकलनाला ट्रॅव्हर्सल करण्यास सांगत आहोत, हे कसे करतात हे आम्हाला माहिती नाही. प्रक्रियेच्या कोडमध्ये कॉलिंग कोडला doThisActionOn नावाच्या प्रक्रियेमध्ये प्रवेश असणे आवश्यक आहे, ऑब्जेक्ट-ओरिएंटेड कोड मध्ये ही क्रिया आहे. फक्त एक प्रतीक. आम्हाला माहिती नाही की संकलनातील ऑब्जेक्ट्स त्याचे स्पष्टीकरण कसे देतील.

हे ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंगचे सार आहे आणि त्याचे वर्णन "बोकड पास करून प्रोग्रामिंग" केले गेले आहे. प्रक्रियेच्या प्रोग्रामिंगमध्ये, दुसरीकडे, आम्हाला प्रत्येक गणना काय करते हे स्पष्टपणे सांगावे लागेल.