धडा 3: ऑब्जेक्ट ओरिन्टेड प्रोग्रामिंग म्हणजे काय?

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

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

ऑब्जेक्टचे उदाहरण म्हणजे कार. कारमध्ये विशेषता आहेत (उदा. रंग, आकार, वजन, इंधन क्षमता, प्रवाशांची संख्या इ.). कारची अशी वागणूक असते जी त्याच्या पद्धतींनी दर्शविली जाते (उदा. इंजिन सुरू करणे, डावीकडे / उजवीकडे वळाणे, वेग वाढवणे, थांबवणे, वाइपर चालू करणे इ.).

वर्ग हा एक विशिष्ट प्रकारचा ऑब्जेक्ट असतो जो स्वतःस उदाहरणे तयार करण्यासाठी टेम्पलेट म्हणून वापरला जातो. कुकीज (किंवा ऑब्जेक्ट्स) तयार करणारे कुकी कटर म्हणून याचा विचार करा.

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

पॉलीमॉर्फिझमचे येथे एक उदाहरण आहे:

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

वारसा हा ओओपीचा एक महत्वाचा पैलू आहे, परंतु प्रोग्राम तयार करण्याचा एकमेव मार्ग नाही. वारशाऐवजी, रचना किंवा एकत्रिकरण देखील वापरले जाऊ शकते. वर्गात काहीही मिळू न शकल्यास इतर वर्गांची उदाहरणे असू शकतात. हे जसे आहे तसे "नात्याचे" आहे: वर्ग अ चे एक सदस्य म्हणून क्लास बी उदाहरण आहे. जेव्हा आपण वारसा वापरता, वर्ग बी हा एक प्रकारचा वर्ग अ आहे. हे एक "दयाळू" नाते आहे. चला उदाहरणासह हे स्पष्ट करूया ...

कार एक प्रकारचे मोटर वाहन आहे (मूळ वर्ग) ही मोटारसायकल आहे. ती मोटर बोट आहे. ते विमान आहे. या प्रत्येकास मोटार वाहनाची वैशिष्ट्ये आणि वर्तन मिळू शकते. तथापि, आपण पालक वर्गाची विशेषता आणि पद्धती देखील सानुकूलित करू शकता.

कारचा स्वतःचा भाग म्हणून इतर वस्तू किंवा वर्ग असतात, उदा. बी. इंजिन, चाके, स्टीयरिंग व्हील इ. या वर्गांमधून त्याला काहीही मिळत नाही.

ऑब्जेक्टचे गुणधर्म (ऑब्जेक्टचा डेटा) उदाहरण व्हेरिएबल्सद्वारे कृत्रिमरित्या दर्शविले जातात. आपण सामान्यत: त्यांच्यासाठी गेटर मेथडिज (इन्स्टंट व्हेरिएबलची व्हॅल्यू मिळवा) आणि सेटर मेथडिज (इंस्टॉन्स व्हेरिएबलचे व्हॅल्यू सेट किंवा बदलू) तयार करता कारण इन्स्टन्स व्हेरिएबल्स बाह्य जगापासून लपलेले असतात.

Pharo मध्ये, क्लास डेफिनेशनमध्ये उदाहरणार्थ व्हेरिएबल्स तयार केले जातात, उदाहरणार्थ:

आकार सबक्लास: # वेळ उदाहरणे व्हेरिएबल नावे: 'सेकंद नॅनो' वर्गपरीक्षाक्षम नावे: '' पूल शब्दकोष: 'क्रोनोलॉजी कॉन्स्टंट्स' पॅकेज: 'कर्नल-क्रोनोलॉजी'

# टाइम वर्गात (# टाइममधील हॅश टाइमला एक लहान चर्चा प्रतीक म्हणून दर्शवितो) दोन उदाहरणे व्हेरिएबल्स आहेत: "सेकंद" आणि "नॅनो". ऑब्जेक्टच्या पद्धती या चलांवर प्रक्रिया करतात, जे ऑब्जेक्टच्या लपलेल्या आणि अंतर्गत स्थितीचे प्रतिनिधित्व करतात.

# टाईम क्लास # मॅग्निट्यूड क्लास मधून आला आहे किंवा तो वर घेतो. वैकल्पिकरित्या, आपण मॅग्निट्यूड क्लासला टाइम क्लासचा सबक्लास कॉल करू शकता. ही एक सामान्य छोट्या भाषणाची भाषा आहे.

ऑब्जेक्ट सी आणि पासकल सारख्या सोप्या प्रक्रियात्मक प्रोग्रामिंग भाषांमध्ये वापरल्या जाणार्‍या पारंपारिक मॉड्यूल संकल्पनेसारखेच आहे. मॉड्यूलमध्ये एक डेटा स्ट्रक्चर आणि स्ट्रक्चरवर कार्य करणारी फंक्शन्स असतात तथापि, डेटा लपविला जात नाही. प्रत्येकजण डेटामध्ये प्रवेश करू शकतो. सर्वात महत्त्वाचे म्हणजे, मॉड्यूल इतर मॉड्यूलमधून वारसा घेऊ शकत नाहीत.

ऑब्जेक्ट्स सहसा मॉड्यूलपेक्षा बरेच बारीक असतात. हे त्यांना कॉम्प्लेक्स सिस्टमच्या मॉडेलिंगसाठी आदर्श बनवते.

तर ते होते. ऑब्जेक्ट-देणारं प्रोग्रामिंगची ही आपली ओळख आहे. आपण हा मनोरंजक विषय सखोल करू इच्छित असल्यास, ओओपी आणि स्मॉलटॉकवर व्यवहार करणारी पुस्तके आणि साहित्य भरपूर आहे.

  • Tलेक शार्पवर आधारित स्मॉलटॉक
  • स्मॉलटॉक, ऑक्सिजन आणि चाॅमंड लिऊ यांनी डिझाइन केलेले
  • स्टोफेन ड्यूकसे, दिमित्रीस क्लॉपिस, निकलाईई हेस, दिमित्री झगीडुलिन