विकासकर्ताहरू बीच, वस्तु-उन्मुख प्रोग्रामिंगले ठूलो संख्यामा निम्नलाई आकर्षित गरेको छ। लोकप्रिय कम्प्यूटर भाषा पाइथन पनि वस्तु-उन्मुख प्रतिमान पालन गर्दछ।
यसले पाइथनमा वस्तुहरू र वर्गहरू परिभाषित गर्ने काम गर्दछ, जसले OOPs सिद्धान्तहरूको आधार बनाउँछ। "पाइथनमा वस्तु-उन्मुख प्रोग्रामिङ" मा रहेको यस ट्यूटोरियलमा, तपाईंले पाइथन क्लासहरू कसरी घोषणा गर्ने, तिनीहरूबाट वस्तुहरू सिर्जना गर्ने र चार ओओपी प्रविधिहरू प्रयोग गर्ने सिक्नुहुनेछ।
त्यसैले, पहिलो कुरा पहिले।
वस्तु-उन्मुख प्रोग्रामिङ के हो?
वस्तु-उन्मुख प्रोग्रामिंग (OOP) को मुख्य फोकस "वस्तुहरू" को निर्माण हो। अन्तरसम्बन्धित चर र प्रकार्यहरूको संग्रहले वस्तु बनाउँछ।
यी चरहरूलाई प्राय: वस्तुको विशेषताहरू भनिन्छ, र यसको व्यवहारहरूलाई प्राय: यसको कार्यहरूको रूपमा उल्लेख गरिन्छ। यी वस्तुहरूले अनुप्रयोगलाई अझ प्रभावकारी र बुझ्ने संरचना प्रदान गर्दछ। एउटा अटोमोबाइल वस्तुको उदाहरण हो।
यदि अटोमोबाइल एउटा वस्तु हो भने, यसको विशेषताहरूमा यसको रंग, मोडेल, मूल्य, ब्रान्ड, आदि जस्ता चीजहरू समावेश हुनेछन्। थप रूपमा, यसले गति बढाउने, ढिलो गर्ने, र गियरहरू परिवर्तन गर्नेछ।
अर्को दृष्टान्त: यदि हामीले कुकुरलाई वस्तुको रूपमा सोच्यौं भने, त्यसका केही विशेषताहरू रंग, नस्ल, नाम, तौल, आदि हुन सक्छन्। र उसले घुम्ने, भुक्ने, खेल्ने, आदि हुन सक्छ।
किनभने यसले वास्तविक-विश्व अवधारणाहरू जस्तै वस्तुहरू, लुकाउने, इनहेरिटेन्स, आदिलाई प्रोग्रामिङमा समावेश गर्दछ, वस्तु-उन्मुख प्रोग्रामिङ राम्रोसँग परिचित छ। किनभने यो वास्तविक-विश्व परिस्थितिसँग मिल्दोजुल्दो छ, दृश्यलाई सरल बनाइएको छ।
वस्तु-उन्मुख प्रोग्रामिंग अवधारणाहरू
पाइथनमा कक्षा र वस्तुहरू
अन्य सबै वस्तु-उन्मुख भाषाहरू जस्तै, पाइथनले तपाईंलाई वस्तुहरू उत्पन्न गर्न कक्षाहरू डिजाइन गर्न सक्षम बनाउँछ। पाइथनमा सबैभन्दा लोकप्रिय डेटा प्रकारहरू, स्ट्रिङहरू, सूचीहरू, शब्दकोशहरू, र अन्य वस्तुहरू सहित, निर्मित वर्गहरू हुन्।
एक वर्ग लिङ्क गरिएका विधिहरू र उदाहरण चरहरूको समूह हो जसले निश्चित प्रकारको वस्तुलाई परिभाषित गर्दछ। एउटा वर्गलाई वस्तुको मोडेल वा टेम्प्लेटको रूपमा देख्न सकिन्छ। क्लास बनाउने चरहरूलाई एट्रिब्युट भनिन्छ।
वस्तु भनेको वर्गको सदस्य हो जसमा विशेषताहरूको परिभाषित सेट हुन्छ। यस कारणले, एउटै वर्ग प्रयोग गरेर वस्तुहरूको संख्या सिर्जना गर्न सकिन्छ।
पाइथन क्लासहरू क्लास शब्द प्रयोग गरेर परिभाषित गरिन्छ, जुन पछि क्लासको नाम र कोलोन हुन्छ। एक तोता वर्ग को एक दृष्टान्त हुन सक्छ:
यहाँ, हामीले क्लास किवर्ड प्रयोग गरेर खाली वर्ग Parrot घोषणा गर्छौं। हामी कक्षाहरूबाट उदाहरणहरू सिर्जना गर्छौं। एक उदाहरण एक विशेष वस्तु हो जुन एक निश्चित वर्गबाट बनाइएको थियो। 'पास' कोडको लागि स्ट्यान्ड-इनको रूपमा प्रायः प्रयोग गरिन्छ जसको कार्यान्वयनलाई हामी क्षणको लागि छोड्न सक्छौं। हामी "पास" कुञ्जी शब्द प्रयोग गरेर त्रुटि नउठाएर पाइथन कोड कार्यान्वयन गर्न सक्छौं।
वस्तु (उदाहरण) मा एक वर्ग को एक इन्स्ट्यान्टिएशन परिणाम। वर्ग सिर्जना गर्दा वस्तुको विवरण मात्र परिभाषित गरिन्छ। नतिजाको रूपमा, कुनै भण्डारण वा RAM आवंटित गरिएको छैन।
तोता वर्ग वस्तुको उदाहरण हो:
Obj यस उदाहरणमा तोता-वर्ग वस्तु हो।
मानौं हामी तोता बारे विशेष जान्दछौं। अब हामी तोता वर्ग र यसका वस्तुहरू कसरी सिर्जना गर्ने भनेर देखाउनेछौं।
विशेष विधि ( __init__ )
init भनिने विधिले प्रत्येक तोता वस्तु () हुनु पर्ने विशेषताहरू परिभाषित गर्दछ। जब नयाँ तोता वस्तु बनाइन्छ, प्रकार्य __init__ ले वस्तुको प्रारम्भिक अवस्था सिर्जना गर्दछ जुन हामीले वस्तुको गुणहरू भित्र आपूर्ति गर्छौं।
त्यसैले, कक्षाको प्रत्येक नयाँ उदाहरण __init__() प्रयोग गरेर प्रारम्भ गरिएको छ। यद्यपि __init__() ले कुनै पनि मापदण्डहरू स्वीकार गर्न सक्छ, सेल्फ सधैं पहिलो प्यारामिटर हो।
सक्रिय वर्ग उदाहरणको सन्दर्भ आत्म-तर्कमा समावेश गरिएको छ। सेल्फ प्यारामिटर, जसले क्लासको हालको वस्तुको ठेगानासँग लिङ्क गर्छ र हामीलाई यसको (वस्तुको) चर डेटामा पहुँच दिन्छ, त्यसलाई जनाउँछ।
उदाहरण 1
हामीले माथिको कोडमा तोता नामक कक्षा स्थापना गर्यौं। अर्को, गुणहरू परिभाषित छन्। कुनै पनि चीजको विशेषता भनेको यसको गुण हो। वर्गको __init__ प्रकार्य हो जहाँ यी विशेषताहरू निर्दिष्ट गरिएको छ।
जब एक वस्तु बनाइन्छ, प्रारम्भिक विधि भनेको प्रारम्भिक भनिन्छ। त्यसपछि, तोता वर्गको उदाहरणहरू सिर्जना गरिएका छन्। यस उदाहरणमा ब्लेज र वोन्डा हाम्रा नयाँ वस्तुहरूको सन्दर्भ (मानहरू) हुन्। __class .species ले हामीलाई वर्ग विशेषता पहुँच गर्न अनुमति दिन्छ।
कक्षाको प्रत्येक उदाहरणमा समान विशेषताहरू छन्। उदाहरणका विशेषताहरू पनि blaze.name र blaze.age प्रयोग गरेर पहुँच गर्न सकिन्छ। कक्षाको सबै उदाहरणहरूमा अद्वितीय उदाहरण विशेषताहरू छन्, यद्यपि।
उदाहरण 2
तरिका
वर्गको शरीर भित्र परिभाषित कार्यहरूलाई विधि भनिन्छ। तिनीहरू एक वस्तु कसरी व्यवहार गर्नेछ निर्दिष्ट गर्न कार्यरत छन्।
दुई विधिहरू, sing() र नृत्य, माथि उल्लिखित अनुप्रयोग () मा परिभाषित गरिएको छ। किनभने तिनीहरू एक उदाहरण वस्तुमा आह्वान गरिन्छ, जस्तै ज्वाला, तिनीहरूलाई उदाहरण विधिहरू भनिन्छ।
OOPS अवधारणा को आधारहरु
वस्तु-उन्मुख प्रोग्रामिङका चार मुख्य विचारहरू हुन्:
- इनहेरिटन्स
- Encapsulation
- पोलीमोर्फिजम
- संक्षेप
इनहेरिटन्स
मानिसहरूले नवजात शिशुहरूलाई बारम्बार बताउँछन् कि तिनीहरूसँग अनुहारको विशेषताहरू छन् जुन तिनीहरूका आमाबाबुको जस्तो देखिन्छ वा तिनीहरूले आफ्ना आमाबाबुबाट विशेष गुणहरू वंशानुगत रूपमा पाएका छन्।
यो सम्भव छ कि तपाईंले आफ्नो आमाबाबुसँग केही विशेषताहरू साझा गर्नुभएको पनि तपाईंले अवलोकन गर्नुभएको छ। वास्तविक संसारको अवस्था पनि विरासतसँग मिल्दोजुल्दो छ।
यद्यपि, यस अवस्थामा, "अभिभावक वर्गहरू" को विशेषताहरू "बाल वर्गहरू" मा पठाइन्छ। यी पक्षहरूलाई यस सन्दर्भमा "गुण" र "विधिहरू" भनिन्छ।
एक वर्गले विरासत भनिने प्रविधि प्रयोग गरेर अर्को वर्गबाट आफ्नो विधि र विशेषताहरू प्राप्त गर्न सक्छ। उत्तराधिकार भनेको अभिभावक वर्गको गुणहरू प्राप्त गर्ने बाल वर्गको प्रक्रिया हो।
उदाहरणका:
अभिभावक वर्ग मानव माथिको उदाहरणमा बाल वर्ग केटा द्वारा वंशानुगत छ। किनभने केटा मानवबाट विरासतमा आएको हो, हामीले केटा वर्गको उदाहरण सिर्जना गर्दा हामी यसको सबै विधिहरू र विशेषताहरूमा पहुँच गर्न सक्छौं।
केटा कक्षामा स्कूल नाम भनिने विधि पनि परिभाषित गरिएको छ। अभिभावक वर्ग वस्तु विधि स्कूल नाम पहुँच गर्न असमर्थ छ। स्कूलनाम विधि, तथापि, बाल कक्षा वस्तु (केटा) सिर्जना गरेर बोलाउन सकिन्छ।
Encapsulation
कक्षाहरूमा काम गर्दा र संवेदनशील डाटा ह्यान्डल गर्दा कार्यक्रममा प्रत्येक चरलाई विश्वव्यापी पहुँच दिनु बुद्धिमानी कदम होइन।
ती चरहरू मध्ये कुनै पनि कार्यक्रममा पूर्ण पहुँच नदिई, encapsulation ले हामीलाई आवश्यक चरहरू प्राप्त गर्नको लागि एक संयन्त्र प्रदान गर्दछ।
उद्देश्यका लागि स्पष्ट रूपमा परिभाषित गरिएका विधिहरू चरहरूबाट डाटा अद्यावधिक गर्न, सम्पादन गर्न वा मेटाउन प्रयोग गर्न सकिन्छ। प्रोग्रामिङको यो विधिमा डेटा इनपुटमा परिष्कृत सुरक्षा र नियन्त्रणको फाइदाहरू छन्।
तलको प्रदर्शनमा चरहरू कति चाँडो पहुँच गर्न सकिन्छ हेर्नुहोस्:
पोलीमोर्फिजम
मानौं कि तपाइँ ब्राउज गर्न आफ्नो फोन प्रयोग गर्दै हुनुहुन्छ इन्स्टाग्राम फीडहरू। जब तपाइँ केहि संगीत सुन्न आग्रह गर्नुभयो, तपाइँ Spotify पहुँच गर्नुभयो र तपाइँको मनपर्ने गीत बजाउन थाल्नुभयो।
एक समय पछि, तपाईंले कल प्राप्त गर्नुभयो, त्यसैले तपाईंले यसको जवाफ दिन पृष्ठभूमिमा के गरिरहनु भएको थियो पज गर्नुभयो। तपाईंको साथीले फोन गरेर अनुरोध गर्नुभयो कि तपाईंले उनीहरूलाई एक निश्चित व्यक्तिको फोन नम्बर पाठ गर्नुहोस्।
त्यसोभए तपाईंले उसलाई एसएमएस मार्फत फोन नम्बर पठाउनुभयो र आफ्नो कार्यहरू जारी राख्नुभयो। के तपाईंले केहि उठाउनुभयो? केवल एउटा यन्त्रको साथ-तपाईंको मोबाइल फोन-तपाईं फिडहरू मार्फत सर्फ गर्न, संगीत सुन्न, फोन कलहरू लिन र सन्देशहरू गर्न सक्नुहुन्छ।
तसर्थ, बहुरूपता त्यो तुलनात्मक छ। Poly को अर्थ असंख्य, र morph ले विभिन्न रूपहरूलाई जनाउँछ। तसर्थ, समग्र रूपमा बहुरूपताले विभिन्न रूपहरू भएको कुरालाई जनाउँछ।
वा "केहि" जुन, परिस्थितिमा निर्भर गर्दछ, विभिन्न प्रकारका व्यवहारहरू प्रदर्शन गर्न सक्छ। OOPS मा, पोलिमोर्फिज्मले एउटै नामहरू तर फरक व्यवहारका कार्यहरू वर्णन गर्दछ। वैकल्पिक रूपमा, एउटै प्रकार्य नामको साथ फरक प्रकार्य हस्ताक्षर (प्रकार्यमा पास गरिएका प्यारामिटरहरू)।
उदाहरणका:
यहाँ, हामी जेब्रा र खरगोशका वस्तुहरूमा पुनरावृत्ति गर्न चर जनावर प्रयोग गर्न सक्छौं, तिनीहरूको सम्बन्धित उदाहरण विधिहरू प्रयोग गरेर। नतिजाको रूपमा, जेब्रा र खरगोश दुवैको व्यवहार (रङ() र खान्छ ()) यहाँ जनावर भनिने एकल चरद्वारा प्रतिनिधित्व गरिएको छ। त्यसैले यो पोलिमोर्फिज्म नियमहरूको पालना गर्दैछ।
संक्षेप
तपाइँ प्राय: यो सामग्री पढ्न ल्यापटप, फोन, वा ट्याब्लेट प्रयोग गर्नुहुन्छ। यसलाई पढ्दै गर्दा, तपाईंले सम्भवतः नोटहरू लिइरहनुभएको छ, कुञ्जी खण्डहरू रेखांकित गर्दै हुनुहुन्छ, र सायद तपाईंको व्यक्तिगत फाइलहरूमा केही जानकारी भण्डारण गर्दै हुनुहुन्छ।
तपाईले यो पढ्दा तपाईले देख्न सक्नुहुने सबै डेटा तपाईलाई देखाइएको "स्क्रिन" हो। तपाईले टाइप गर्दा किबोर्डको कुञ्जीहरू मात्र देख्नुहुन्छ, त्यसैले तपाईले आन्तरिक सूक्ष्मताहरूको बारेमा चिन्ता लिनु पर्दैन जस्तै कुञ्जीलाई धक्काले त्यो शब्दलाई स्क्रिनमा देखा पर्न सक्छ।
वैकल्पिक रूपमा, कसरी तपाइँको स्क्रिनमा बटन थिच्दा नयाँ ट्याब सुरु गर्न सकिन्छ।
तसर्थ, यस अवस्थामा हामीले जे देख्न सक्छौं त्यो सार हो। हामी केवल यसले सिर्जना गरिरहेको नतिजा देख्न सक्छौं र भित्री जटिलताहरू होइन (जुन वास्तवमा हामीलाई महत्त्वपूर्ण छ)।
यससँग मिल्दोजुल्दो, अमूर्तताले कुनै पनि कार्यान्वयन वा आन्तरिक विवरणहरू लुकाउँदा सबै चीजहरू भएको कार्यहरू मात्र प्रकट गर्दछ।
Abstraction को प्रमुख उद्देश्य पृष्ठभूमि जानकारी र कुनै पनि बाह्य डेटा कार्यान्वयन लुकाउनु हो ताकि मानिसहरूले उनीहरूले हेर्नु पर्ने कुरा मात्र देख्छन्। यसले कोडको जटिलता व्यवस्थापन गर्न मद्दत गर्दछ।
उदाहरणका:
एक वाहन सम्बन्धित सार वर्ग यहाँ उपस्थित छ। किनभने यो अमूर्त वर्ग ABC बाट प्राप्त हुन्छ, यो सार हो। किनकी अमूर्त विधिहरू परिभाषित छैनन् वा खाली रहन्छन्, वर्ग वाहनमा एउटा अमूर्त विधि छ जसलाई पाङ्ग्राहरूको संख्या भनिन्छ जसको परिभाषा छैन।
तिनीहरूले विधिको कार्यान्वयन दिनको लागि अमूर्त वर्गहरू इनहेरिट गर्ने कक्षाहरूको अनुमान गर्छन्।
OOPS अवधारणाहरु को लाभ
- encapsulating द्वारा, उच्च सुरक्षा र डाटा गोपनीयता प्राप्त गरिन्छ।
- एउटै वर्गको धेरै बहुरूपी संस्करणहरू भएको लचिलोपन।
- कोड जटिलता को उच्च स्तर अमूर्त द्वारा कम गरिएको थियो।
- एउटै समस्या पत्ता लगाउन कोडका सयौं लाइनहरू मार्फत छान्नुको सट्टा, प्रोग्रामिङको मोड्युलरिटीले डिबगिङलाई सरल बनाउँछ।
- कोड पुन: प्रयोग अभिभावक वर्ग गुणहरूको बाल वर्गको उत्तराधिकारको कारणले हुन्छ।
- प्रभावकारी समस्या-समाधान सम्भव छ किनभने हामी प्रत्येक मिनी-समस्याको लागि आवश्यक कार्यहरू गर्ने कक्षाहरू सिर्जना गर्छौं। हामीले ती कक्षाहरू पुन: प्रयोग गर्न सक्ने हुनाले निम्न समस्याहरू अझ छिटो समाधान गर्न सकिन्छ।
निष्कर्ष
निष्कर्षमा, हामीले पाइथनमा OOPS विचारहरूको बारेमा सिक्यौं, अहिलेको सबैभन्दा लोकप्रिय प्रोग्रामिङ प्रतिमान।
यो पढिसकेपछि, तपाईंले महसुस गर्नुभएको हुनुपर्छ कि OOPS प्रतिमान पूर्ण रूपमा वर्ग र वस्तुहरूको विचारसँग सम्बन्धित छ। र OOPS अवधारणाहरू जस्तै encapsulation, polymorphism, inheritance, र abstraction।
जवाफ छाड्नुस्