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

आम्ही OOP च्या चार खांबांपासून सुरुवात करू. ते अ‍ॅब्स्ट्रॅक्शन, एन्कॅप्सुलेशन, इनहेरिटन्स आणि पॉलिमॉर्फिझम आहेत. (तेथे तीन असायचे, परंतु अमूर्तता नंतर जोडली गेली)

1) अमूर्तता.

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

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

समजा तुम्ही तुमच्या कंपनीतील पदांसाठी नावे घेऊन आलात आणि मग तुम्ही या पदांसाठीच्या जबाबदाऱ्या "डिश आउट" कराल. ते अ‍ॅब्स्ट्रॅक्शन आहे - मोठ्या आणि मोनोलिथिक गोष्टीला अनेक लहान भागांमध्ये विभाजित करणे.

ओओपी: मूलभूत तत्त्वे - १

प्रोग्रामरच्या दृष्टीकोनातून, अ‍ॅब्स्ट्रॅक्शन म्हणजे प्रोग्रॅमला वस्तूंमध्ये विभागणे.

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

अमूर्तता ही लष्करी रणनीतीसारखी असते. आपण चुकीची रणनीती निवडल्यास, कोणतीही कल्पक युक्ती दिवस वाचवू शकणार नाही.

2) एन्कॅप्सुलेशन.

एन्कॅप्सुलेशनचा उद्देश वस्तूंमधील परस्परसंवाद सुलभ करून सुधारण्यासाठी आहे.

OOP: मूलभूत तत्त्वे - 2

एखादी गोष्ट सोपी करण्याचा सर्वोत्तम मार्ग म्हणजे ज्यांना त्याबद्दल माहिती असण्याची गरज नाही त्यांच्यापासून कोणतीही क्लिष्ट गोष्ट लपवणे. उदाहरणार्थ, जर तुम्ही बोईंग जेटच्या पायलट नियंत्रणाच्या मागे बसलात, तर ते कसे कार्य करतात हे समजण्यास बराच वेळ लागेल:

OOP: मूलभूत तत्त्वे - 3

दुसरीकडे, विमानातील प्रवाशांना सर्वकाही सोपे दिसते: ते तिकीट खरेदी करतात आणि विमानात चढतात, जे नंतर टेक ऑफ करतात आणि उतरतात. "तिकीट खरेदी" कसे करायचे आणि "विमानात चढायचे" हे जाणून घेऊन तुम्ही एका खंडातून दुसऱ्या खंडात सहज उड्डाण करू शकता. विमान उड्डाण, टेक ऑफ, लँडिंग आणि विविध संभाव्य आपत्कालीन परिस्थितींशी संबंधित कोणतीही गुंतागुंत आम्हाला दिसत नाही. आणि आम्ही उपग्रह नेव्हिगेशन, ऑटोपायलट आणि हवाई वाहतूक नियंत्रण केंद्रांचा उल्लेख केलेला नाही. हे आपले जीवन सोपे करते.

प्रोग्रामिंगच्या दृष्टीने, एन्कॅप्सुलेशन म्हणजे «अंमलबजावणी लपवणे». मला ती व्याख्या आवडते. आमच्या वर्गात शेकडो पद्धती असू शकतात आणि विविध परिस्थितींमध्ये अत्यंत जटिल वर्तन लागू करू शकतात. परंतु इतर वर्गांशी संवाद साधण्यासाठी फक्त दोन किंवा तीन पद्धती सोडून ( त्यांना " सार्वजनिक " चिन्हांकित करून) डोळ्यांपासून ( त्यांना " खाजगी " चिन्हांकित करून) आम्ही त्याच्या सर्व पद्धती लपवू शकतो. मग आमच्या प्रोग्राममधील इतर सर्व वर्ग या वर्गावर फक्त या काही पद्धती पाहतील—आणि कॉल करतील . आनंदी प्रवाशांच्या दृष्टीकोनातून कॉकपिट ठेवल्याप्रमाणे वर्गाची सर्व गुंतागुंत आत लपलेली असेल.

3) वारसा.

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

जर आपल्याला वास्तविक जीवनात काहीतरी तयार करायचे असेल तर आपल्याकडे दोन पर्याय आहेत:

1) आपल्याला जे आवश्यक आहे ते सुरवातीपासून बनवा आणि ते करण्यात बराच वेळ आणि मेहनत खर्च करा.

२) आधीपासून अस्तित्वात असलेल्या गोष्टींचा वापर करून आपल्याला आवश्यक ते बनवा.

सर्वोत्तम रणनीती ही आहे: आम्ही विद्यमान चांगले उपाय घेतो, आमच्या गरजा पूर्ण करण्यासाठी पुन्हा काम करतो आणि त्यात बदल करतो आणि नंतर त्याचा वापर करतो.

विचार करा, मानवी उत्क्रांती. जर आपण ग्रहावरील जीवनाच्या सुरुवातीपासून त्यांची सुरुवात शोधली तर आपल्याला दिसते की अब्जावधी वर्षे उलटून गेली आहेत. पण माकडापासून सुरुवात करून मानवाचा विचार केला तर फक्त दोन दशलक्ष वर्षे झाली आहेत. सुरवातीपासून काहीतरी तयार करण्यास जास्त वेळ लागतो. जास्त काळ.

त्याचप्रमाणे प्रोग्रॅमिंगमध्ये आपण एका वर्गावर आधारित दुसरा वर्ग तयार करू शकतो. नवीन वर्ग विद्यमान वर्गाचा वंशज (वारस) बनतो. जेव्हा तुमच्याकडे आधीपासूनच ८०-९०% आवश्यक डेटा आणि पद्धतींचा वर्ग असतो तेव्हा हे खूप उपयुक्त आहे. आम्ही आमच्या नवीन वर्गाचे पालक म्हणून योग्य वर्ग घोषित करतो. पालक वर्गाचा सर्व डेटा आणि पद्धती आपोआप नवीन वर्गाचा भाग बनतात. सोयीस्कर, बरोबर?

4) बहुरूपता.

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

जर एखादी व्यक्ती ट्रक चालवू शकते, तर त्याला किंवा तिला रुग्णवाहिका किंवा स्पोर्ट्स कारच्या चाकांच्या मागे देखील ठेवले जाऊ शकते. एखादी व्यक्ती कोणत्या प्रकारची कार आहे याची पर्वा न करता कार चालवू शकते, कारण त्यांच्या सर्वांचा एकच कंट्रोल इंटरफेस आहे: स्टीयरिंग व्हील, पेडल्स आणि गियरशिफ. कार आतून वेगळ्या पद्धतीने आयोजित केल्या जातात, परंतु त्या सर्व समान नियंत्रण इंटरफेस सामायिक करतात.

प्रोग्रामिंगकडे परत जा, पॉलीमॉर्फिझम आपल्याला वेगवेगळ्या वर्गांच्या वस्तूंशी (सामान्यतः सामान्य पूर्वजांसह) समान प्रकारे संवाद साधू देते. याचे महत्त्व जास्त सांगता येणार नाही. कार्यक्रम जसजसा मोठा होतो तसतसे ते अधिक महत्वाचे होते.

OOP ही तत्त्वे आहेत. प्रोग्रामिंग कायदे. त्यांपैकी प्रत्येक आपल्याला काही प्रकारे प्रतिबंधित करतो , परंतु त्या बदल्यात कार्यक्रम मोठ्या प्रमाणात वाढतात म्हणून खूप फायदे प्रदान करतात. ओओपीची चार तत्त्वे खुर्चीच्या चार पायांसारखी आहेत. त्यापैकी एकही काढून घेतल्यास संपूर्ण यंत्रणा अस्थिर होते.