विकसकांमध्ये, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंगने मोठ्या प्रमाणात फॉलोअर्स आकर्षित केले आहेत. लोकप्रिय संगणक भाषा Python त्याचप्रमाणे ऑब्जेक्ट-ओरिएंटेड पॅराडाइमचे पालन करते.
हे Python मधील ऑब्जेक्ट्स आणि क्लासेस परिभाषित करण्याशी संबंधित आहे, जे OOPs तत्त्वांसाठी आधार बनवते. "पायथनमधील ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग" या ट्युटोरियलमध्ये तुम्ही पायथन क्लासेस कसे घोषित करायचे, त्यांच्यापासून ऑब्जेक्ट्स कसे तयार करायचे आणि चार OOPs तंत्र कसे वापरायचे ते शिकाल.
तर, प्रथम प्रथम गोष्ट.
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग म्हणजे काय?
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) चे मुख्य फोकस "ऑब्जेक्ट्स" ची निर्मिती आहे. परस्पर जोडलेले चल आणि फंक्शन्सचा संग्रह ऑब्जेक्ट बनवतो.
या व्हेरिएबल्सना वारंवार ऑब्जेक्टचे गुणधर्म म्हणून संबोधले जाते आणि त्याचे वर्तन वारंवार त्याची कार्ये म्हणून संबोधले जाते. हे आयटम अनुप्रयोगास अधिक प्रभावी आणि समजण्यायोग्य रचना प्रदान करतात. ऑटोमोबाईल हे एखाद्या वस्तूचे उदाहरण आहे.
जर ऑटोमोबाईल ही एक वस्तू असेल, तर त्याच्या गुणधर्मांमध्ये त्याचा रंग, मॉडेल, किंमत, ब्रँड इत्यादी गोष्टींचा समावेश असेल. शिवाय, ते वेग वाढवेल, धीमा करेल आणि गीअर्स बदलेल.
आणखी एक उदाहरण: जर आपण कुत्र्याचा एक वस्तू म्हणून विचार केला तर त्याची काही वैशिष्ट्ये रंग, जात, नाव, वजन इत्यादी असू शकतात आणि तो फिरणे, भुंकणे, खेळणे इ.
कारण ते ऑब्जेक्ट्स, लपविणे, वारसा इत्यादीसारख्या वास्तविक-जगातील संकल्पना प्रोग्रामिंगमध्ये समाविष्ट करते, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सर्वज्ञात आहे. ते वास्तविक-जगातील परिस्थितींसारखे असल्यामुळे, व्हिज्युअलायझेशन सोपे केले आहे.
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग संकल्पना
पायथनमधील वर्ग आणि वस्तू
इतर सर्व ऑब्जेक्ट-ओरिएंटेड भाषांप्रमाणे, पायथन आपल्याला ऑब्जेक्ट्स व्युत्पन्न करण्यासाठी वर्ग डिझाइन करण्यास सक्षम करते. पायथनमधील सर्वात लोकप्रिय डेटा प्रकार, स्ट्रिंग, सूची, शब्दकोश आणि इतर ऑब्जेक्ट्ससह, अंगभूत वर्ग आहेत.
वर्ग हा जोडलेल्या पद्धतींचा आणि इन्स्टन्स व्हेरिएबल्सचा समूह आहे जो विशिष्ट प्रकारची ऑब्जेक्ट परिभाषित करतो. ऑब्जेक्टसाठी एक वर्ग मॉडेल किंवा टेम्पलेट म्हणून पाहिले जाऊ शकते. वर्ग बनवणारे चल गुणधर्म म्हणून ओळखले जातात.
ऑब्जेक्ट हा वर्गाचा सदस्य असतो ज्यात गुणधर्मांचा परिभाषित संच असतो. यामुळे, एकाच वर्गाचा वापर करून कितीही वस्तू तयार केल्या जाऊ शकतात.
पायथन क्लासेस क्लास शब्द वापरून परिभाषित केले जातात, ज्यानंतर वर्गाचे नाव आणि कोलन येतो. पोपट वर्गाचे उदाहरण असे असू शकते:
येथे, आम्ही क्लास कीवर्ड वापरून रिक्त वर्ग पोपट घोषित करतो. आम्ही वर्गांमधून उदाहरणे तयार करतो. उदाहरण म्हणजे एक विशिष्ट वस्तू जी एका विशिष्ट वर्गातून बनविली गेली होती. 'पास' हा कोडसाठी स्टँड-इन म्हणून वारंवार वापरला जातो ज्याची अंमलबजावणी आपण क्षणभर सोडून देऊ शकतो. आपण “पास” कीवर्ड वापरून त्रुटी न ठेवता पायथन कोड कार्यान्वित करू शकतो.
वर्गाच्या इन्स्टंटेशनचा परिणाम ऑब्जेक्टमध्ये होतो (उदाहरण). वर्ग तयार केल्यावर केवळ ऑब्जेक्टचे वर्णन परिभाषित केले जाते. परिणामी, कोणतेही स्टोरेज किंवा RAM वाटप केले जात नाही.
पोपट वर्ग ऑब्जेक्टचे उदाहरण आहे:
या प्रसंगात Obj हा पोपट-वर्गाचा ऑब्जेक्ट आहे.
समजा आम्हाला पोपटांबद्दलचे तपशील माहित आहेत. आता आपण पोपट वर्ग आणि त्याच्या वस्तू कशा तयार करायच्या हे दाखवू.
विशेष पद्धत ( __init__ )
init नावाची पद्धत प्रत्येक पोपट ऑब्जेक्टमध्ये () असणे आवश्यक असलेले गुणधर्म परिभाषित करते. जेव्हा नवीन पॅरोट ऑब्जेक्ट तयार होतो, तेव्हा फंक्शन __init__ ऑब्जेक्टच्या गुणधर्मांमध्ये आपण पुरवलेली मूल्ये नियुक्त करून ऑब्जेक्टची प्रारंभिक स्थिती तयार करते.
म्हणून, वर्गाचा प्रत्येक नवीन प्रसंग __init__() वापरून आरंभ केला जातो. जरी __init__() कितीही पॅरामीटर्स स्वीकारू शकते, तरी सेल्फ हा नेहमीच पहिला पॅरामीटर असतो.
सक्रिय वर्ग उदाहरणाचा संदर्भ स्व-वादामध्ये समाविष्ट केला आहे. सेल्फ पॅरामीटर, जो क्लासच्या सध्याच्या ऑब्जेक्टच्या पत्त्याशी लिंक करतो आणि आम्हाला त्याच्या (ऑब्जेक्टच्या) व्हेरिएबल्सच्या डेटामध्ये प्रवेश देतो, हे सूचित करते.
उदाहरण 1
आम्ही वरील कोडमध्ये पोपट नावाचा वर्ग स्थापन केला. पुढे, गुणधर्म परिभाषित केले आहेत. एखाद्या वस्तूचे गुणधर्म म्हणजे त्याचे गुणधर्म. क्लासचे __init__ फंक्शन आहे जेथे ही वैशिष्ट्ये निर्दिष्ट केली आहेत.
जेव्हा एखादी वस्तू तयार होते, तेव्हा इनिशिएलायझर पद्धत तीच असते जिला सुरुवातीला म्हणतात. मग, पोपट वर्गाची उदाहरणे तयार केली जातात. या उदाहरणात ब्लेझ आणि वोंडा हे आमच्या नवीन वस्तूंचे संदर्भ (मूल्य) आहेत. __class .species आम्हाला वर्ग विशेषता ऍक्सेस करण्याची परवानगी देते.
वर्गाच्या प्रत्येक उदाहरणात समान वैशिष्ट्ये आहेत. blaze.name आणि blaze.age वापरून देखील उदाहरण वैशिष्ट्यांमध्ये प्रवेश केला जाऊ शकतो. तथापि, वर्गाच्या सर्व उदाहरणांमध्ये अद्वितीय उदाहरण गुणधर्म आहेत.
उदाहरण 2
पद्धती
वर्गाच्या मुख्य भागामध्ये परिभाषित केलेल्या कार्यांना पद्धती म्हणतात. एखादी वस्तू कशी वागेल हे निर्दिष्ट करण्यासाठी ते नियुक्त केले जातात.
दोन पद्धती, sing() आणि नृत्य, वर नमूद केलेल्या अनुप्रयोगात परिभाषित केल्या आहेत (). कारण ते ज्वालासारख्या उदाहरणाच्या वस्तूवर चालवले जातात, त्यांना उदाहरण पद्धती म्हणून संबोधले जाते.
OOPS संकल्पनेची मूलभूत तत्त्वे
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंगच्या चार मुख्य कल्पना आहेत:
- वारसा
- एनकॅप्युलेशन
- पॉलिमॉर्फिझम
- अमूर्त
वारसा
लोक नवजात बालकांना वारंवार सांगतात की त्यांच्या चेहऱ्याची वैशिष्ट्ये आहेत जी त्यांच्या पालकांसारखी असतात किंवा त्यांना त्यांच्या पालकांकडून विशिष्ट वैशिष्ट्ये वारशाने मिळाली आहेत.
हे शक्य आहे की तुम्ही हे देखील पाहिले असेल की तुम्ही तुमच्या पालकांसोबत काही वैशिष्ट्ये सामायिक करता. वास्तविक-जगातील परिस्थिती देखील वारशासारखीच आहे.
तथापि, या प्रकरणात, “पालक वर्ग” ची वैशिष्ट्ये “बाल वर्ग” मध्ये दिली जातात. या संदर्भात या पैलूंना "गुणधर्म" आणि "पद्धती" म्हणून संबोधले जाते.
वारसा म्हणून ओळखल्या जाणार्या तंत्राचा वापर करून एक वर्ग त्याच्या पद्धती आणि गुणधर्म दुसर्या वर्गाकडून मिळवू शकतो. वारसा ही मूल वर्गाची पालक वर्गाची गुणधर्म प्राप्त करण्याची प्रक्रिया आहे.
उदाहरण:
वरील उदाहरणातील मूल वर्ग ह्युमन हा बालवर्ग मुलगा द्वारे वारसाहक्काने मिळतो. कारण बॉय मानवाकडून वारसा घेत आहे, जेव्हा आम्ही बॉय क्लासचे उदाहरण तयार करतो तेव्हा आम्ही त्याच्या सर्व पद्धती आणि गुणधर्मांमध्ये प्रवेश करू शकतो.
मुलाच्या वर्गात, शाळा नावाची पद्धत देखील परिभाषित केली गेली आहे. पॅरेंट क्लास ऑब्जेक्ट पद्धत schoolName मध्ये प्रवेश करण्यात अक्षम आहे. तथापि, शाळेच्या नावाची पद्धत चाइल्ड क्लास ऑब्जेक्ट (बॉय) तयार करून कॉल केली जाऊ शकते.
एनकॅप्युलेशन
वर्गांसोबत काम करताना आणि संवेदनशील डेटा हाताळताना प्रोग्राममधील प्रत्येक व्हेरिएबलला जागतिक प्रवेश देणे हे शहाणपणाचे काम नाही.
प्रोग्रामला त्यापैकी कोणत्याही व्हेरिएबल्समध्ये पूर्ण प्रवेश न देता, एन्कॅप्सुलेशन आम्हाला आवश्यक व्हेरिएबल्स मिळविण्यासाठी एक यंत्रणा प्रदान करते.
हेतूसाठी स्पष्टपणे परिभाषित केलेल्या पद्धती व्हेरिएबल्समधून डेटा अद्यतनित करण्यासाठी, संपादित करण्यासाठी किंवा हटवण्यासाठी वापरल्या जाऊ शकतात. प्रोग्रामिंगच्या या पद्धतीमध्ये डेटा इनपुटवर वर्धित सुरक्षा आणि नियंत्रणाचे फायदे आहेत.
खालील प्रात्यक्षिकात व्हेरिएबल्स किती लवकर ऍक्सेस करता येतील ते पहा:
पॉलिमॉर्फिझम
समजा तुम्ही ब्राउझ करण्यासाठी तुमचा फोन वापरत आहात इंस्टाग्राम फीड. जेव्हा तुम्हाला काही संगीत ऐकण्याची इच्छा निर्माण झाली, तेव्हा तुम्ही Spotify मध्ये प्रवेश केला आणि तुमचे आवडते गाणे प्ले करण्यास सुरुवात केली.
काही वेळानंतर, तुम्हाला एक कॉल आला, म्हणून तुम्ही पार्श्वभूमीत जे काही करत होता त्याला उत्तर देण्यासाठी तुम्ही थांबवले. तुमच्या मित्राने कॉल केला आणि विनंती केली की तुम्ही त्यांना एका विशिष्ट व्यक्तीचा फोन नंबर पाठवा.
म्हणून तुम्ही त्याला एसएमएसद्वारे फोन नंबर पाठवला आणि तुमची कामे पुढे चालू ठेवली. तुम्ही काही उचलले आहे का? फक्त एका उपकरणासह—तुमचा मोबाइल फोन—तुम्ही फीडमधून सर्फ करू शकता, संगीत ऐकू शकता, फोन घेऊ शकता आणि करू शकता आणि संदेश करू शकता.
म्हणून, बहुरूपता त्याच्याशी तुलना करता येते. पॉली म्हणजे असंख्य, आणि मॉर्फ विविध रूपे दर्शवते. म्हणून, संपूर्णपणे पॉलिमॉर्फिझम विविध रूपांसह काहीतरी संदर्भित करते.
किंवा "काहीतरी" जे, परिस्थितीनुसार, विविध प्रकारचे वर्तन प्रदर्शित करू शकते. OOPS मध्ये, पॉलीमॉर्फिझम समान नावांसह परंतु भिन्न वर्तन असलेल्या कार्यांचे वर्णन करते. वैकल्पिकरित्या, समान फंक्शन नावासह भिन्न फंक्शन स्वाक्षरी (फंक्शनला पास केलेले पॅरामीटर्स).
उदाहरण:
येथे, आपण झेब्रा आणि सशाच्या वस्तूंवर पुनरावृत्ती करण्यासाठी व्हेरिएबल प्राणी वापरू शकतो, त्यांच्या संबंधित उदाहरण पद्धती वापरून. परिणामी, झेब्रा आणि ससा या दोघांचे वर्तन (रंग() आणि खातो()) येथे प्राणी नावाच्या एका चलने दर्शविले जाते. त्यामुळे ते बहुरूपी नियमांचे पालन करत आहे.
अमूर्त
ही सामग्री वाचण्यासाठी तुम्ही बहुधा लॅपटॉप, फोन किंवा टॅबलेट वापरता. ते वाचत असताना, तुम्ही कदाचित नोट्स घेत असाल, की पॅसेज अधोरेखित करत आहात आणि कदाचित तुमच्या वैयक्तिक फाइल्समध्ये काही माहिती साठवत आहात.
जेव्हा तुम्ही हे वाचता तेव्हा तुम्ही जे काही पाहू शकता ते तुमच्यासाठी प्रदर्शित होत असलेल्या डेटासह "स्क्रीन" आहे. तुम्ही टाइप करत असताना तुम्हाला फक्त कीबोर्डच्या कळा दिसतात, त्यामुळे तुम्हाला अंतर्गत बारीकसारीक गोष्टींबद्दल काळजी करण्याची गरज नाही जसे की की पुश केल्याने तो शब्द स्क्रीनवर कसा दिसू शकतो.
वैकल्पिकरित्या, तुमच्या स्क्रीनवरील बटण दाबल्याने नवीन टॅब कसा लॉन्च होऊ शकतो.
म्हणून, या परिस्थितीत आपण जे काही निरीक्षण करू शकतो ते अमूर्त आहे. आपण केवळ त्याचे परिणाम पाहू शकतो आणि आतील गुंतागुंत (जी प्रत्यक्षात आपल्यासाठी महत्त्वाची) नाही.
या प्रमाणेच, कोणतीही अंमलबजावणी किंवा अंतर्गत तपशील लपवून ठेवताना अमूर्तता केवळ प्रत्येक गोष्टीकडे असलेली कार्ये प्रकट करते.
अॅब्स्ट्रॅक्शनचे प्रमुख उद्दिष्ट पार्श्वभूमी माहिती आणि कोणतीही बाह्य डेटा अंमलबजावणी लपवणे हे आहे जेणेकरून लोकांना फक्त त्यांना काय पाहण्याची आवश्यकता आहे. हे कोडची जटिलता व्यवस्थापित करण्यात मदत करते.
उदाहरण:
वाहनाशी संबंधित अमूर्त वर्ग येथे उपस्थित आहे. कारण त्याला अमूर्त वर्ग ABC पासून वारसा मिळाला आहे, तो अमूर्त आहे. अमूर्त पद्धती परिभाषित नसल्यामुळे किंवा रिक्त राहिल्यामुळे, वर्ग वाहनात एक अमूर्त पद्धत आहे ज्याला चाकांची संख्या नाही ज्याची व्याख्या नाही.
ते पद्धतीची अंमलबजावणी देण्यासाठी अमूर्त वर्गांचा वारसा घेणार्या वर्गांची अपेक्षा करतात.
OOPS संकल्पनांचे फायदे
- एन्कॅप्स्युलेट करून, उच्च सुरक्षा आणि डेटा गोपनीयता प्राप्त केली जाते.
- एकाच वर्गाच्या अनेक बहुरूपी आवृत्त्या असण्यात लवचिकता.
- कोड जटिलतेची उच्च पातळी अॅब्स्ट्रॅक्शनद्वारे कमी केली गेली.
- एकच समस्या शोधण्यासाठी कोडच्या शेकडो ओळींचा शोध घेण्याऐवजी, प्रोग्रामिंगची मॉड्यूलरिटी डीबगिंगला सोपी बनवते.
- कोडचा पुनर्वापर चाइल्ड क्लासच्या पालक वर्गाच्या गुणधर्मांच्या वारशामुळे होतो.
- प्रभावी समस्या सोडवणे शक्य आहे कारण आम्ही असे वर्ग तयार करतो जे प्रत्येक लघु-समस्येसाठी आवश्यक क्रिया करतात. आपण त्या वर्गांचा पुनर्वापर करू शकल्यामुळे पुढील समस्या आणखी लवकर सोडवता येऊ शकतात.
निष्कर्ष
शेवटी, आम्ही Python मधील OOPS कल्पनांबद्दल शिकलो, सध्याचा सर्वात लोकप्रिय प्रोग्रामिंग नमुना.
हे वाचल्यानंतर, तुमच्या लक्षात आले असेल की OOPS पॅराडाइम पूर्णपणे वर्ग आणि वस्तूंच्या कल्पनेशी संबंधित आहे. आणि ओओपीएस संकल्पना जसे की एन्कॅप्सुलेशन, पॉलिमॉर्फिज्म, इनहेरिटन्स आणि अॅब्स्ट्रॅक्शन.
प्रत्युत्तर द्या