Introduction to My Coding Journey
- Began coding in 2008 during 11th grade with Visual Basic.
- Created simple applications like movie booking systems without OOP concepts.
Transition to College
- Learned C language in college, which is also non-OOP. For a deeper understanding of OOP, check out the Comprehensive Guide to Object-Oriented Programming (OOP) in C++.
- Faced challenges understanding Object-Oriented Programming (OOP) concepts like classes and inheritance.
Initial Confusion with OOP
- Struggled with definitions and real-world applications of OOP.
- Found OOP concepts like encapsulation and inheritance confusing and irrelevant at first.
Realization of OOP Importance
- Worked as an iOS developer using Objective-C, which clarified OOP concepts.
- Discovered Alan Kay's definition of OOP focusing on messaging rather than complex terminology.
Key OOP Concepts Covered
- Classes and Objects: Classes as blueprints for creating objects.
- Encapsulation: Bundling data and methods into a single unit.
- Inheritance: Mechanism to create new classes based on existing ones.
- Polymorphism: Ability to process objects differently based on their data type or class.
JavaScript and OOP
- Discussed how JavaScript implements OOP differently from traditional languages like Java and C#. For those interested in Java, the Java Programming: A Comprehensive Guide to Understanding Java and Its Concepts is a great resource.
- Explained the prototype-based nature of JavaScript and its implications for OOP.
Conclusion
- Emphasized the importance of understanding OOP principles for effective programming. If you're considering how to learn programming, you might find the article on Should You Learn Programming from Books or Online Tutorials? helpful.
- Encouraged viewers to explore and practice OOP concepts in their coding journey.
मेरी जो कोडिंग की जर्नी थी दैट स्टार्टेड इन व्हेन आई वास इन क्लास 11थ सो इन ईयर 2008 सो मैंने जो पहली प्रोग्रामिंग
लैंग्वेज पे काम किया था दैट वाज विजुअल बेसिक यह एक नॉन ऑब्जेक्ट ओरिएंटेड लैंग्वेज थी यहां पर हमने विंडोज ऑपरेटिंग
सिस्टम के लिए छोटे-छोटे सॉफ्टवेयर्स बनाए थे जस्ट फॉर फन स्टफ जैसे कि मूवी बुकिंग या मूवी बाइंग लाइब्रेरी मैनेजमेंट सिस्टम
स्टूडेंट मैनेजमेंट सिस्टम पूरा ग्राफिकल यूजर इंटरफेस के साथ विदाउट ओपी और फिर जब मैं कॉलेज में गया तो वहां
पर मैंने सी सीखी ओके बट सी भी एक नॉन ओओ पी लैंग्वेज थी अब सी मैंने सेकंड ईयर में सीखी थी व्हेन आई वास इन फर्स्ट सेम इन
सेकंड सेम आई गट दिस सब्जेक्ट ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग और यहां पर एवरी थ वास शटर्ड क्योंकि अभी तक मैंने
क्लासेस का कोई कांसेप्ट पढ़ा नहीं था मैं सिर्फ फंक्शंस वेरिएबल लूप इन्हीं सब चीजों पर मैंने काम
किया था तो आई थॉट कि ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग इज सम एडवांस्ड स्टफ ओके जो करने के लिए काफी मेहनत चाहिए और यह ऐसी
चीज है जो बड़े-बड़े सॉफ्टवेयर्स में ही यूज होती है और इसके बहुत बेनिफिट्स भी होंगे मैंने कॉलेज में ऑब्जेक्ट ओरिएंटेड
प्रोग्रामिंग बस एग्जाम पास करने के लिए पड़ी क्योंकि आई थॉट कि इसका कोई रेलीवेंस ही नहीं है मेरा जो काम है वह मैं फंक्शंस
बनाक कर ले रहा हूं मैं क्यों वेकल क्लासेस पेरेंट चाइल्ड क्लासेस ऑब्जेक्ट इन्हेरिटेंस इन सबके बारे में पढ़ूं मैं
कहीं पर भी ओ ओपी सर्च करता था मुझे सेम रटी रटाई डेफिनेशन मिलती थी कि अ क्लास इज अ ब्लूप्रिंट ऑब्जेक्ट इज अ इंस्टेंस
इन्हेरिटेंस एब्स्ट्रेक्शन कोई मुझे रियल मीनिंग नहीं बता रहा था कि हम यह करते क्यों हैं ओके
और अगर मैं इंटरनेट पर सर्च करता था तो मुझे कुछ इस तरह की चीजें मिलती थी अ क्लास इज अ ब्लूप्रिंट फॉर क्रिएटिंग
ऑब्जेक्ट्स टेंप्लेट फॉर ऑब्जेक्ट्स एनकैप्सूलेशन टू बंडल डाटा एंड मेथड्स इनटू इजी टू यूज यूनिट्स कोई कोई इसे
इंफॉर्मेशन हाइडिल होता था एब्स्ट्रेक्शन जो कि एगजैक्टली एनकैप्सूलेशन जैसा ही लगता है दोनों में बहुत ही सिमिलरिटीज हैं
सम टाइम्स मैं कंफ्यूज हो जाता था कि भाई यह दोनों एक ही चीजें हैं तो एवरीथिंग वाज कन्फ्यूजिंग टू मी और मेरे लिए बहुत
मुश्किल था ओओ पी पे काम करना मैंने ओओ पी पे काम किया था जब मैं आईओएस डेवलपर था थ्री इयर्स आई वर्क्ड इन ऑब्जेक्टिव सी तो
वहां पे मैंने कई सारी चीजें ने रियलाइफ कोड विथ ह्यू एंड अंजना वकील मैंने इन दोनों के वर्क और इन दोनों के
वीडियोस देखे वहां से मुझे एक थर्ड पर्सन के बारे में पता चला दिस मैन सो दिस इज एलन के ही इज द प्रिंसिपल डिजाइनर ऑफ
स्मॉल टॉक स्मॉल टॉक इज फर्स्ट ऑब्जेक्ट ओरिएंटेड लैंग्वेज इससे पहले भी और ् ट ओरिएंटेड लैंग्वेज थी बट स्मॉल टॉक इज अ
पोरेट ऑब्जेक्ट ओरिएंटेड लैंग्वेज एंड एलन के फाउंडेड द टर्म ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सो जब मैंने एलन की की लाइक
से ब्लॉग पोस्ट और वीडियोस देखे तब मेरे कांसेप्ट बहुत ही ज्यादा क्लियर हुए दिस इज द डेफिनेशन जो एलन के ने दी थी अबाउट
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सो लेट्स रीड इट आई थॉट ऑफ ऑब्जेक्ट्स बीइंग लाइक ऑ
बायोलॉजिकल सेल्स एंड और इंडिविजुअल कंप्यूटर्स ऑन अ नेटवर्क ओनली एबल टू कम्युनिकेट विद मैसेजेस
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग टू मी मींस ओनली मैसेजिंग लोकल रिटेंशन एंड प्रोटेक्शन एंड हाइडिंट प्रोसेसेस एंड
एक्सट्रीम लेट बाइंडिंग ऑफ ऑल थिंग्स यहां पर कोई जिक्र नहीं है इन्हेरिटेंस एब्स्ट्रेक्शन इन कैप्सूलेशन पॉलीमोर्फस
जम जैसे बड़े लंबे चौड़े वर्ड्स का सो इन रियलिटी ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग इज ऑल अबाउट मैसेज
पासिंग ओके अब यह जो मैसेज पासिंग हम करते हैं इस मैसेज पासिंग में हम बहुत सारी चीजें करते हैं जिसको लोगों ने ब्रेक कर
कर के इन्हेरिटेंस एनकैप्सूलेशन पॉलीमोर्फस म इन सबका नाम दे दिया बट रियलिटी में यह सारी
चीजें यू कैन से बाय प्रोडक्ट है अगर तुम ओओ पी में काम कर रहे हो तो यह काम तुम नेचुरली करोगे तुम्हें यह काम करने की
जरूरत पड़ती नहीं है ऑटोमेटिक ये काम हो जाते हैं जो हम अभी कुछ टाइम में एक्सपीरियंस करेंगे लेट्स मूव टू आवर
एजेंडा आज हम क्या-क्या कवर करने वाले हैं सो बफ बिफोर वी स्टार्ट आई हैव फ्यू थिंग्स टू से कि जावास्क्रिप्ट में ओपी
क्या है कैसे काम करती है वी विल सी कि ये प्रोसीजरल प्रोग्रामिंग क्या है ओओ पी क्या है एडवां एडवांटेज डिसएडवांटेज ऑफ ओओ
पी क्लासेस ऑब्जेक्ट्स कंस्ट्रक्टर सुपर क्लास फील्ड्स डिफाइनिंग मेथड्स ओवरलोडिंग ओवरराइडिंग पिलर्स ऑफ ओओ जो कि ऐसा कुछ है
नहीं और एक्सेस मोडिफाय इंटरफेस स्टैटिक क्लासेस और हाउ जावास्क्रिप्ट उप्स इज डिफरेंट फ्रॉम
नॉर्मल पप जावास्क्रिप्ट में हम जो क्लासेस वगैरह ऑब्जेक्ट्स वगैरह बनाते हैं दोज आर
कंपलीटली डिफरेंट फ्रॉम व्हाट वी हैव इन जावा एंड सी शप यहां पर जो रिलेशनशिप होती है वह बहुत ही अलग है ओके इसको हम डिटेल
में नेक्स्ट सेशन में पढ़ेंगे बट मैं थोड़ा सा एक्सप्लेन कर दूंगा कि क्या डिफरेंस है सो दैट यू गाइस कैन नो
और तुम अपने आप से ही एक्सप्लोर कर लो ओके सो लेट्स सी व्हाट वी हैव इन बिफोर स्टार्ट सो फर्स्ट क्वेश्चन हमारे सामने
आता है क्या जावास्क्रिप्ट क्लासेस सपोर्ट करती है सो इसका जो आंसर है वह है यस एंड नो ईस सि से पहले जावास्क्रिप्ट में
क्लासेस का कोई कांसेप्ट नहीं था जावास्क्रिप्ट इज अ टोटली प्रोटोटाइप बेस्ड लैंग्वेज जो फोकस करती है फंक्शनल
स्टाइल स्टाइल ऑफ प्रोग्रामिंग में बट जावा सी शप की जो पॉपुलर है वह बहुत ही ज्यादा बढ़ रही है और अभी भी है अब वहां
पर जो डेवलपर्स हैं उनका जो काम है व वो क्लासेस में है अब अगर वह क्लासेस छोड़ के जावास्क्रिप्ट में आएंगे तो उनको एक अलग
लैंग्वेज सीखनी पड़ेगी उनको थोड़ा होमली फील हो इस वजह से भी जावास्क्रिप्ट में क्लासेस ऐड करना पड़ा ठीक है अब जो
क्लासेस ऐड हुई है जावास्क्रिप्ट में अंडर द हुड वह सिंटेक्टिक शुगर है फंक्शंस के
ऊपर जावास्क्रिप्ट का जो स्पेक है वह कहता है कि अगर तुम कोई क्लास बनाते हो बिहाइंड द सीन वह क्लास फंक्शन में कन्वर्ट होती
है बट इसका मतलब यह कतई नहीं है कि जावास्क्रिप्ट ओओ सपोर्ट नहीं करता और सब कुछ एक सिंटेक्टिक शुगर है सिंटेक्टिक
शुगर बस 60 पर है 40 पर न्यू फीचर ऐड की है क्लासेस में तुम ऐसे कुछ काम कर सकते हो जो तुम विदाउट क्लासेस कर ही नहीं सकते
हो ओके फॉर एग्जांपल सुपर कीवर्ड सुपर कीवर्ड के साथ जो तुम कर सकते हो विदाउट जेएस तुम कर ही नहीं सकते हो सो दिस इज
नॉट ओनली सिंटेक्टिक शुगर देयर इज अ होल न्यू मैकेनिज्म जो डेड है जावास्क्रिप्ट में सो यह कहना
बहुत गलत है कि क्लासेस आर कंप्लीट सिंटेक्टिक शुगर यस दे आर
बट ओनली 60 पर ओके 40 पर बहुत सारे नए फीचर भी हैं जो तुम्हें जेएस में नहीं मिलते हैं सो यह मैं स्टार्ट करने से पहले
ही क्लियर कर देना चाहता था सो ट सबको यह सुपर क्लियर हो जाए कि यस जावास्क्रिप्ट में क्लासेस है और वह कंपलीटली सिंटेक्टिक
शुगर नहीं है सो प्रोसीजरल प्रोग्रामिंग में सी लैंग्वेज है वीबी सि है जो मैंने तुम्हें बताई थी प्रोसीजरल प्रोग्रामिंग
में हम सारे काम फंक्शंस की हेल्प से करते हैं हमारे पास एक बड़ी-बड़ी फाइल्स होती हैं जहां पर फंक्शंस लिखे होते हैं ओके और
इसमें कोई बुरी बात नहीं है अगर मैं एक अच्छा डेवलपर हूं तो मैं अपने फंक्शंस को भी ऑर्गेनाइज करके रख सकता हूं बट ओवर द
पीरियड ऑफ टाइम कुछ चैलेंज मुझे फेस करने पड़ सकते हैं अब वो चैलेंज क्या है सो लेट्स सी यहां पर मैंने सिंपली एक
एग्जांपल लिया है जावास्क्रिप्ट का जो कि टोटली बेस प्रोसीजरल प्रोग्रामिंग में अब देखो यहां पर दो फंक्शन है और सिंपली एक
ऑब्जेक्ट है मैं इस ऑब्जेक्ट पर कुछ कुछ ऑपरेशन परफॉर्म कर रहा हूं अब यहां पर टेक्निकली मेरे पास कोई तरीका नहीं है
जिससे मैं इस कार ऑब्जेक्ट को प्रोटेक्ट कर सकूं किसी और फंक्शन से अगर मेरे पास इस सेम फाइल में मैं कोई फंक्शन बनाता हूं
लेट कार एक ग्लोबल स्कोप में है हर फंक्शन इसे एक्सेस कर सकता है कोई प्रोटेक्शन नहीं है ओके तो ये एक प्रॉब्लम है
प्रोसीजरल प्रोग्रामिंग में अब अगर मैं किसी के साथ कोड शेयर करना चाहता हूं तो मुझे आइर मैं उसको एक फंक्शन कॉपी करके
दूं अगर मैं पूरी फाइल कॉपी करके दूंगा तो अगेन दैट इज अ प्रॉब्लम उसको ढूंढना पड़ेगा सो कोड शेयर करने में भी
प्रॉब्लम रीयूज बिलिटी में भी प्रॉब्लम अगर मुझे बस ये ड्राइव फंक्शन कहीं यूज करना है तो मुझे या तो मैं सिंपली बस एक
फंक्शन को एक्सपोर्ट करूं या पूरी फाइल एक्सपोर्ट करूं तो यहां पर बहुत ही सारी डिपेंडेंसी की प्रॉब्लम आ जाती है यू कैन
सिंपली सर्च ऑन दी इंटरनेट कि प्रोसीजरल और ओपी में क्या एडवांटेज है डिसएडवांटेज है यू विल गेट दी लॉन्ग लिस्ट उसको तुम
सिंपली पढ़ सकते हो बट जो मोटी मोटी प्रॉब्लम है वह है सिक्योरिटी
की ओके क्योंकि तुम्हारा डाटा एक्सेसिबल रहता है ग्लोबल स्कोप में रहता है हर कोई एक्सेस कर सकता है प्रिवेंट
करना थोड़ा सा टफ या कॉम्प्लेक्शन इज रीयूज एबिलिटी ठीक है यह बहुत हैपर करती है और
थर्ड है एडिशन ऑफ न्यू फंक्शनालिस क कल को मान लो एक नई रिक्वायरमेंट आ जाती है कि वी हैव टू ऐड
समथिंग ऑन दिस कार अब ऐसे समझो कि 10 20 फंक्शन है जो यह कार ऑब्जेक्ट को यूज कर रहे हैं अलग-अलग तरीकों से तो तुम्हें हर
उस फंक्शन में जा जा के चेंजेज करने पड़ेंगे या देखना पड़ेगा कि वह क्या कर रहे हैं और यह करने में बहुत टाइम भी लग
सकता है तो मेनली यह तीन चैलेंज आते हैं प्रोसीजरल प्रोग्रामिंग में और ओी इसको सॉल्व करने की कोशिश करता है
ओओ इज नॉट अ परफेक्ट सॉल्यूशन ओओ पी में अपनी अलग समस्याएं हैं ठीक है यह कोई ऐसी टेक्नोलॉजी या कोई ऐसा पैटर्न नहीं है जो
कंपलीटली परफेक्ट है इवन प्रोसीजरल प्रोग्रामिंग से भी ज्यादा मैं कहूंगा इसमें दिक्कतें हैं अगर हम अच्छे से चीजों
को फॉलो ना करें ओके बेसिकली ओओ पी क्या बोलता है कि तुम्हारे पास जो भी रिलेटेड डाटा है वह तुम अलग-अलग फाइल में या पूरी
फाइल में मत रखो तुम सिंपली एक ब्लॉक ऑफ कोड बना लो इसको तुम ब्लॉक ऑफ कोड की तरह देखो अभी एक ब्लॉक ऑफ कोड है और सारा
रिलेटेड डाटा यहां पर रख दिया है अब मुझे पता है अगर मेरे पास एक ऑब्जेक्ट है तो वह बस इसी ब्लॉक में यूज होगा और मैं इजली
यहां पर एडिशन मॉडिफिकेशन कर सकता हूं तो मेरे लिए जो सिक्योरिटी एडिशन ऑफ न्यू फीचर रीयूज एबिलिटी की प्रॉब्लम थी वह
यहां पर कुछ हद तक सॉल्व हो जाती है ओके थोड़ा एडवांज एडवांटेज डिसएडवांटेज देख लेते हैं तो अगेन रीयूज एबिलिटी है ओओ
में दिस इज फॉर ओओ ओके एडिंग न्यू फीचर सिक्योरिटी हमें मिल जाती
है क्या इसका डिसएडवांटेज है यस इसका एक बहुत बड़ा डिसएडवांटेज है इसका जो डिसएडवांटेज है वह है अगर मैं तुम्हें
रियल लाइफ एग्जांपल दूं यू आर आस्किंग फॉर बनाना ओके बट यू आर गेटिंग अ मंकी होल्डिंग बनाना और जो मंकी
है उसने पेड़ को पकड़ रखा है यू आल्सो गेटिंग द ट्री यह कैसा एग्जांपल है वेल ओओ पी में
हम इन्हेरिटेंस यूज करते हैं तुमने बहुत एग्जांपल सुने होंगे पेरेंट हो लाइक से तुम्हारे जो फादर हैं तुम उनसे डराइड हो
तुम उनकी क्लास हो दिस इज अ वेरी रंग एग्जांपल टू गिव क्यों भाई मेरे पापा ड्रिंक करते हैं ही इज अ बैड
पर्सन अब अगर मैं अपने पेरेंट्स से एक्सटेंडेड हूं तो आई हैव ऑल दी क्वालिटीज ऑफ माय फादर अच्छी बुरी सारी चीजें आ गई
मेरे पास मुझे जो नहीं चाहिए वह भी आ गया तो दिस इज द प्रॉब्लम विद ओओ पी जो तुम्हें चाहिए वह तो तुम्हें मिलेगा बट
साथ में तुम्हें वह सारी चीजें मिलेंगी जो तुमको नहीं चाहिए सो इनिशियल डेज से ही जो हमें एग्जांपल्स सिखाए जाते हैं वो थोड़े
से मैं कहूंगा गलत होते हैं क्योंकि मैंने भी जब स्टार्टिंग में पढ़ा था मुझे पैरेंट चाइल्ड का ही रिलेशन बताया गया था और आई
वाज थिंकिंग कि यस मैं ब्लाइंड किसी भी क्लास को एक्सटेंड कर ले रहा था विदाउट थिंकिंग कि किस प्रॉब्लम में मैं फंस सकता
हूं ओके सो जब भी लाइक से हम कोई क्लास एक्सटेंड करें वी हैव टू थिंक क्या मुझे इस क्लास की सारी चीजें चाहिए अगर मुझे उस
क्लास की बस कुछ चीजें चाहिए देन वी हैव टू थिंक क्या यह क्लास पर लाइक से अच्छे वे में आर्किटेक्ट की गई
है अगर नहीं तो फिर उस क्लास को ब्रेक करो फिर वहां पर सॉलिड प्रिंसिपल्स की एंट्री हो जाती है ये जो सारी चीजें हैं ये बस
इसी वजह से ऐड हुई थी कि हम क्लासेस वगैरह थोड़े अच्छे से क्रिएट करें ओके ये हम देखेंगे अभी थोड़ी देर
में तो फर्स्ट नाउ लेट्स सी कि क्लासेस क्या होते हैं ओके जो क्लास होती है वो एक बिहेव बिहेवियरल थिंग होती है
क्लास रियल में एजिस्ट नहीं करती दैट्ची फॉर एग्जांपल अगर कोई ट्रकर है ठीक है जो
रोडवेज में ट्रक वर्क चलाते हैं अगर उनको ट्रकर बनना है तो उनको ड्राइविंग सीखनी पड़ेगी ओके
अगर किसी को लॉयर बनना है तो उन्हें लॉ की पढ़ाई करनी पड़ेगी किसी को अकाउंटेंट बनना है तो उन्हें अकाउंटेंट की पढ़ाई करनी
पड़ेगी जब वह पढ़ाई कर लेंगे तो वह अकाउंटेंट बन जाएंगे और वह अपने एक ग्रुप में ही रहेंगे तुम देखते
होगे तुम्हारा जो ग्रुप है वह सिमिलर लोगों का ग्रुप है तुम आउटसाइड लोगों को अपने ग्रुप में
ना ही आने देते हो ना ही तुम दूसरों के ग्रुप में जाते हो तुम यह एग्जांपल सोसाइटीज में भी देख सकते हो सिमिलर लोगों
का ग्रुप होता है लाइक से ऑटो ड्राइवर्स एक जगह रहते हैं बस ड्राइवर्स एक जगह रहते हैं तो यहां
से एलन के कि ये कहना चाहते हैं कि बेसिकली जो ऑब्जेक्ट्स है दोज आर रियल एंटिटीज जैसे मैं हूं मैं एक रियल एंटिटी
हूं मैंने बीटेक किया है मैंने बीटेक की पढ़ाई की है मैंने बीटेक के मेथड्स सीखे हैं बीटेक में जो चीजें होती है वह मैंने
सीखी है और मैं राइवर्सेंटर ऑब्जेक्ट बने हैं ओके और ऑब्जेक्ट्स
कम्युनिकेट विद ईच अदर अगर कल को मेरा हाथ टूट जाता है मुझे
डॉक्टर की पढ़ाई नहीं आती भाई आई एम नॉट अ डॉक्टर मैं एक ऑब्जेक्ट हूं अब मुझे डॉक्टर ऑब्जेक्ट से कम्युनिकेट करना है
ओके तो मैं उसको कम्युनिकेट करूंगा कि भाई मेरा हाथ टूट गया है प्लीज हेल्प मी और आई विल ट्रस्ट हिज नॉलेज वो हेल्प करेगा वाय
मैसेज पासिंग तो हम मैसेज पासिंग में एक दूसरे से बात कर रहे हैं और हमारे अंदर सारी इंफॉर्मेशन इन
कैप्सूलेटेड है सारी इंफॉर्मेशन ऑलरेडी है जैसे मेरे पास बीटेक की इंफॉर्मेशन है उसके पास डॉक्टरी की इंफॉर्मेशन
है वह मुझे कुछ इंफॉर्मेशन प्रोवाइड कर रहा है कि पट्टी ऐसे बांधते हैं यू कैन कंसीडर इट एज
एब्स्ट्रेक्शन ओके सो यह जो फोर पिलर्स है दज आर नेचुरल ट्रेट यह तुम्हें बाय डिफॉल्ट मिलते ही है ठीक है नाउ लेट्स सी
सम डेफिनेशन टू क्लियर इट आउट मोर सो अगेन जावास्क्रिप्ट में जो क्लासेस है दोजर एक्सटेंशन बियोंड सिंटेक्टिक शुगर वह
सिर्फ सिंटेक्टिक शुगर नहीं है अ क्लास इज अ फैक्ट्री ऑफ ऑब्जेक्ट्स जो क्लास है वह ऑब्जेक्ट्स बना बना के देती रहती है ठीक
है क्लासेस डिस्क्राइब डेटा स्ट्रक्चर की तुम्हारा डाटा का स्ट्रक्चर कैसा होगा तुम किस स्ट्रक्चर में अपने डाटा को रखना
चाहते हो क्लासेस में एल्गोरिथम्स होते हैं मेथड्स एंड एक्सटर्नल लिंक्स फॉर एग्जांपल तुम किसी और क्लास से कम्युनिकेट
करना चाहते हो वाया एक्सटेंडिंग इट क्लास इज द डेफिनेशन ऑफ एन ऑब्जेक्ट क्लास बताती है कि ऑब्जेक्ट कैसा बनेगा ओके अगर लॉयर
क्लास है तो लॉयर ऑब्जेक्ट बनेगा अकाउंटेंट क्लास है तो अकाउंटेंट ऑब्जेक्ट बनेगा सो बेसिकली अ क्लास डिफाइंस एन
ऑब्जेक्ट क्लास इज द डेफिनेशन ऑफ एन ऑब्जेक्ट एंड अ क्लास प्रोवाइड्स कंप्लीट कैपेबिलिटी टू सॉल्व अ प्रॉब्लम ओके एंड
देयर कैन बी टू टाइप्स ऑफ क्लासेस डेटा क्लासेस एंड
बहेल बिहेवियरल क्लासेस ओके डेटा क्लासेस में बेसिकली हम बस डेटा रखते हैं फॉर एग्जांपल किसी पर्सन का नाम
एज जेंडर डिपार्टमेंट सिर्फ डेटा और एक बिहेवियरल क्लासेस होती है जिसमें हम नॉर्मली डेटा
और फंक्शंस रखते हैं ठीक है तो दिस इज द लाइक से डेफिनेशन ऑफ क्लास ओके क्लास इज अ काइंड ऑफ डाटा स्ट्रक्चर तुम कुछ ऐसा अगर
किसी ने सी पढ़ी है ठीक है तो यू कैन नॉट क्रिएट अ न्यू डाटा स्ट्रक्चर तो वहां पर इंट कैर फ्लोट इन पर काम करते हो अगर मैं
तुमको बोलूं कि भाई क्रिएट अ क्रिएट अ न्यू डाटा स्ट्रक्चर कॉल्ड नंबर नंबर में इंट की सारी
फंक्शनालिस सो तुम वहां पर यह काम नहीं कर सकते हो यू कैन यूज स्ट्रक्ट वगैरह जस्ट टू हैव फ्यू फ्यू थिंग्स बट अगर तुम्हें
एग्जैक्ट इंट की फंक्शनैलिटी चाहिए सो यू कैन नॉट है दैट फंक्शनैलिटी तुम्हें इंट की पूरी फाइल पढ़नी पड़ेगी या इंट का पूरा
कोड अपनी नंबर फाइल में लिखना पड़ेगा और फिर नंबर में कुछ एडिशनल चीजें ऐड करनी पड़ेंगी सो दैट तुम इंट की सारी चीजें भी
यूज कर लो और नंबर की कुछ चीजें भी ऐड कर लो बट नॉट इन क्लासेस इन क्लासेस यू कैन सिंपली डू
दिस एक्सटेंड्स इंट जस्ट लाइक दिस यू विल गेट ऑल द फंक्शन ऑफ दिस इंट सो यू कैन कंसीडर द क्लास एज अ
डाटा स्ट्रक्चर ठीक है अ कस्टम डाटा स्ट्रक्चर जो हम जब भी एक क्लास बनाते हैं तो हम एक डाटा स्ट्रक्चर बनाते हैं ठीक
है नाउ लेट्स सी व्हाट इज एन ऑब्जेक्ट सो अ ऑब्जेक्ट इज अ लिविंग ऑर्गेनिस्ट म
बेसिकली एलन के एक बायो बायोलॉजिस्ट था ठीक है बिफोर ही बिकम द प्रोग्रामर तो जो भी मेटाफर उसने लिए थे इन ओओ पी दैट इज
फ्रॉम बायोलॉजी तो जो हमें इन्हेरिटेंस पढ़ाया जाता है अबाउट पेरेंट चाइल्ड वह सब इंस्पायर्ड है इससे
टैक्सो टेक्सोनोमी से ठीक है कि भाई एक स्पेसस दूसरे स्पेसस से बनी है फिर उससे उससे उससे बट दिस इज अ वेरी रंग मेंटल
मॉडल जो एलन के हमें समझाना चाहते हैं दैट इज सेल्स और ऑर्गन का सेल्स एंड ऑर्गन ऐसा या सेल्स एंड टिशूज कह लो सो जो
ऑब्जेक्ट्स है दूज आर सेल्स तुम ऐसा समझो कि जो हमारी ह्यूमन बॉडी है वह छोटे-छोटे सेल से मिलकर बनी है जब छोटे-छोटे सेल
मिलते हैं तो टिशू बनता है टिशू जब छोटे-छोटे मिलते हैं तो ऑर्गन बनता है अब ऐसा समझो हमारी बॉडी में सेल मरते रहते
हैं और बनते रहते हैं बट क्या हमें कोई फर्क पड़ता है नहीं सो यही एनालॉजी ओओ पी में है अगर तुम्हारे कोई ऑब्जेक्ट में
दिक्कत आती है तो योर प्रोग्राम शुड बी कैपेबल इनफ टू ओवरकम दैट एरर उस स्मॉल चेंज की वजह से व फेल ना हो ओके सो ओओ पी
में अगर हमें रियल लाइफ से कोई एनालॉजी लेनी है तो वह है सेल्स टिशूज एंड ऑर्गन्स की जो हम छोटे-छोटे ऑब्जेक्ट्स बनाते हैं
वो मिलके एक एपली बनाते हैं ठीक है और अगर सेम एग्जांपल मैं तुम्हें प्रोसीजरल प्रोग्रामिंग का दूं तो उसको तुम कुछ ऐसा
समझ सकते हो एक वॉच का सिस्टम ठीक है यहां पर देखो हर एक चीज आपस में कितनी स्ट्रांग कंबाइंड
है बट यह आपस में मिलकर कितना ब्यूटीफुल तरीके से काम करते हैं बट अगर मैं एक गियर निकाल द तो पूरी वॉच रुक जाएगी ओके सो सेम
हैपेंस इन प्रोसीजरल प्रोग्रामिंग वहां पर अगर एक पीस ऑफ कोड खराब हुआ तो पूरा सिस्टम रुक जाता है क्योंकि डिपेंडेंसी
बहुत ज्यादा होती है बट ओओ पी में ऐसा नहीं होता है हम अपने प्रोग्राम को इस तरह से स्ट्रक्चर करते हैं कि एक क्लास की या
एक ऑब्जेक्ट की दूसरे ऑब्जेक्ट पर डिपेंडेंसी कम रहे ओके और एरर टॉलरेंस कम रहे नाउ लेट्स सी कि ऑब्जेक्ट की क्या
डेफिनेशन है सो एन ऑब्जेक्ट इज अ लिविंग ऑर्गेज्म ऑब्जेक्ट इज सिंपली रिलेटेड पीस ऑफ कोड एंड डेटा ट्स इट यह जो डेफिनेशन है
यह मैंने स्मल टॉक की बुक से ट्यूटोरियल की जो बुक है उससे निकाली है यहां पे स्मल टॉक वर्ल्ड को तुम वर्ड को समझना है ही
नहीं विदाउट स्मल टॉक वर्ड इस डेफिनेशन को अगर तुम पढ़ोगे तो रियल मीनिंग ऑफ एन ऑब्जेक्ट समझ में आएगा सो रिलेटेड डटा एंड
प्रोग्राम पीस आर एनकैप्सूलेटेड विद इन अ ऑब्जेक्ट अ कम्युनिकेटिंग ब्लैक बॉक्स ऑब्जेक्ट एक ब्लैक बॉक्स है जो मैसेज सेंड
एंड रिसीव कर सकता है मैसेज पासिंग इज द ओनली मींस ऑफ इंपोर्टिडोरा
कोई डाटा मैनिपुलेट करना है कुछ भी करना है तो यू हैव टू पास अ मैसेज अभी मैं बताऊंगा मैसेज पासिंग क्या है एंड इफ एन
ऑब्जेक्ट नीड्स समथिंग डन दैट इट डज नॉट नो हाउ टू डू विद इन इट्स ओन सेट ऑफ मेथड्स इट सेंड्स अ मैसेज टू अनदर
ऑब्जेक्ट इन इफेक्ट आस्किंग फॉर असिस्टेंसिया था जब मेरा हाथ टूटा था और मैं डॉक्टर के पास गया था मैं एक ऑब्जेक्ट
हूं मुझे नहीं पता कैसे अपना इलाज करूं मैं दूसरे ऑब्जेक्ट के पास गया मैंने उसको बोला मेरा हाथ टूटा है ठीक करो उसने हाथ
ठीक किया सो ही रिस्पांडस टू माय मैसेज अब हम मैसेज कैसे पास करते हैं तो जनरली सभी को आईडिया होगा आते जाते तुम लोगों ने
ऑब्जेक्ट क्रिएशन देखा ही होगा कि हम सिंपली कुछ इस तरह से ऑब्जेक्ट बनाते हैं इन ओपी ओके और एक डॉक्टर बना लेते हैं ठीक
है अब ओी इस ओ इसे इंजीनियर कर देते हैं ज टू हैव अ गुड प्रोनंसिएशन अब मेरे पास यह दो ऑब्जेक्ट हैं अब यह आपस
में कैसे बात करेंगे इन दोनों को आपस में कोई रिलेशन है ही नहीं इंजीनियर के पास इंजीनियर की
इंफॉर्मेशन है डॉक्टर के पास डॉक्टर की इंफॉर्मेशन है तो यह ऑब्जेक्ट्स
दूसरे ऑब्जेक्ट से बात कर सके यह कुछ मेथड्स सपोज करेंगे फॉर
एग्जांपल डॉक्टर ने कोई मेथड अपने अंदर बनाया होगा आस्क एनीथिंग
यहां पे इंजीनियर बोल देगा इस तरह से ठीक है तो यहां पे यह जो डॉक्टर आस्क
है आस्क एनी एनीथिंग सो दिस इज मैसेज पासिंग जब हम एक क्लास में फंक्शन बनाते हैं तो
हम उसे मेथड बोलते हैं ओके सो मेथड हम इसलिए बोलते हैं क्योंकि हम उसे डायरेक्टली इवोक नहीं करते हम उसे
ऑब्जेक्ट पर कॉल करते हैं यहां पर मैं आस्क एनीथिंग एक ब्लैक बॉक्स के अंदर एक्सेस कर रहा हूं मुझे नहीं पता इस
डॉक्टर के अंदर क्या कोड लिखा हुआ है आई एम पासिंग अ मैसेज आस्क एनीथिंग और इसमें मैं डाटा भेज रहा हूं कि मुझे
क्या पूछना है या क्या बताना है ठीक है सो जब भी हम किसी ऑब्जेक्ट पर कोई कोई मेथड कॉल करते हैं डॉट नोटेशन के
साथ सो दिस इज अ मैसेज पासिंग अब तुम ऐसे समझ लो कि डॉक्टर ऑब्जेक्ट के अंदर जितनी भी
इंफॉर्मेशन है दैट इज एग्जांपल ऑफ इन कैप्सूलेशन डॉक्टर ऑब्जेक्ट ने एक फंक्शन एक्सपोज किया है दिस इज अ एब्स्ट्रेक्शन
कि भाई मैंने कुछ चीजें दे दी है यूज कर लो अब यह एक नेचुरल ट्रेट है इन ओओ पी अब इसको तुम एब्स्ट्रेक्शन बोल दो या इन
कैप्सन बोल दो ठीक है सो नाउ लेट्स स्टार्ट विद सम सम कोडिंग पहले हम देखेंगे हम क्लास कैसे क्रिएट करते हैं और देन वी
विल सी कि कैसे हम ऑब्जेक्ट्स क्रिएट करें मैसेज पासिंग वगैरह थोड़ा सा कर लेते हैं उसके बाद फिर हम इस इंडेक्स के हिसाब से
चीजों को प्रोसीड आउट करेंगे तो अगर मुझे एक क्लास बनानी है तो मुझे एक कीवर्ड यूज करना पड़ेगा
क्लास दिस इज अ प्री डिफाइंड इनबिल्ट कीवर्ड इन जावास्क्रिप्ट क्लास के बाद मुझे क्लास का
नाम लिखना पड़ेगा फॉर एग्जांपल सुपर हीरो मैंने एक क्लास बना दी सुपर हीरो और फिर कर्ली ब्रेस ओपन क्लोज ट्स इट इस कर्ली
ब्रेस से इस क्लास का स्कोप डिसाइड होगा कि इस क्लास में क्या-क्या चीजें होंगी जो भी चीजें इस ब्लॉक के अंदर होंगी इस ब्लॉक
के बाहर कोई उसको यूज नहीं कर पाएगा अंट्स पलिस बताऊं कि मुझे यूज करना है सो अगर मैं यहां पर कोई वेरिएबल बनाता हूं
नेम या फिर सुपर हीरो नेम तो यह सुपर हीरो नेम अगर मैं यहां पे कंसोल करूंगा तो ये एक्सेसिबल नहीं होगा
ठीक है सुपर हीरो नेम इज नॉट डिफाइंड तो जो हमने सिक्योरिटी वाली प्रॉब्लम देखी
थी वो क्लासेस ने सॉल्व कर दी मैं जो भी चीज इस ब्लॉक के अंदर बनाऊंगा दैट इज नॉट एक्सेसिबल आउटसाइड ओके तो अब देखते हैं कि
कैसे हम क्लास में वेरिएबल और फंक्शंस क्रिएट करते हैं तो यह जो कर्ली ब्रेस वाला सिंटेक्स है ये
थोड़ा बहुत जाना पहचाना लग रहा है जावास्क्रिप्ट में हम यह यूज करते हैं ऑब्जेक्ट्स बनाने के लिए जब हम ऑब्जेक्ट्स
में कोई कीज ऐड करते हैं तो हमें कोई री लाइक से वेरिएबल का टाइप नहीं बताना पड़ता लेट या कॉन ओके और
es6 में अगर मैं किसी की को फंक्शन बनाना चाहता हूं तो मुझे फंक्शन कीवर्ड भी लिखने की जरूरत नहीं है तो सेम एनालॉजी क्लासेस
में भी चलती है अगर मुझे कोई वेरिएबल बनाना है जो पूरे क्लास में कहीं भी अवेलेबल हो तो मुझे लेट कंस्ट यूज नहीं
करना दोज आर कंपलीटली नॉट रिक्वायर्ड यहां पे मैंने सिंपली सुपरहीरो ड नेम एक वेरिएबल बनाया है यहां प मैं कुछ भी नाम
रख सकता हूं ठीक है दिस इज दी वैल्यू ऑफ दिस सुपर हीरो नेम अगर मुझे यहां पे कोई फंक्शन बनाना है तो आई कैन डायरेक्टली
क्रिएट अ फंक्शन विदाउट राइटिंग दी फंक्शन कीवर्ड और यहां से मैं रिटर्न कर दूं सुपर हीरो नेम अब अगर
मुझे इस सुपर हीरो नेम को एक्सेस करना है तो हाउ कैन आई एक्सेस इट अगर मैं यहां पर कुछ ऐसे करता हूं कंसोल
डलॉग सुपरहीरो डॉट सुपरहीरो नेम मुझे अनडिफाइंड देखने को मिलता है ओके
सो जब हम क्लासेस पर काम करते हैं तो हमें कुछ स्पेशल वे में चीजों को यूज करना पड़ता है यहां पर मैंने ये जो क्लास बनाई
है यह एक डाटा स्ट्रक्चर है ऐसा समझ लो जब तुम सी
में ये ऐसे समझ लो ये इंट है इंट क्लास है ये ठीक है ये इंट डाटा टाइप है क्या तुम कभी सी में कुछ ऐसा करते हो
लाइक से फॉर एग्जांपल इंट में कोई मेथड है टू स्ट्रिंग का तो अगर तुम्हें इंटी जर को स्ट्रिंग में कन्वर्ट करना होता तो तुम
पहले एक इंटी जर बनाते हो और फिर जो इंटी जर बनाते हो उस परे तुम मेथड्स कॉल करते हो तुम कभी भी इंट पे कुछ नहीं करते
हो कि तुम इंट क्लास प कुछ करो डाटा स्ट्रक्चर प कुछ करो तुम स्ट्रिंग प कुछ करो तो यहां पर मैं यह जो काम कर रहा
हूं सुपरहीरो ड सुपरहीरो नेम यह मैं डाटा स्ट्रक्चर प डायरेक्टली इसको एक्सेस करने की कोशिश कर रहा हूं मुझे ऐसा नहीं करना
मैंने एक डाटा स्ट्रक्चर बना दिया है अब मुझे इसका यूज करके अपना डाटा बनाना पड़ेगा तो वह करने का तरीका है
यह हमें इस क्लास को अगर यूज करना है तो मुझे न्यू कीवर्ड लिखना पड़ेगा और फिर क्लास का
नाम और मून ब्रैकेट जब मैं ऐसा करूंगा तो मुझे एक ऑब्जेक्ट मिल जाएगा जो बना होगा इस जो भी इंफॉर्मेशन इस क्लास में है उसका
यूज करके ठीक है लेट्स कंसोल दिस हीरो ऑब्जेक्ट सी यहां पर मुझे मिल रहा है
सुपरहीरो नेम सिल्वर सर्फर जो मैंने असाइन किया है और प्रोटोटाइप को अगर मैं एक्सटेंड करूंगा तो यू कैन सी गेट नेम
मुझे गेट नेम फंक्शन भी मिल रहा है दैट मींस जो भी चीज मैं अपनी क्लास में बनाऊंगा या ऐड करूंगा वह मेरे ऑब्जेक्ट
में मुझे मिलेगी अभी अगर मुझे इस सुपर हीरो नेम को एक्सेस करना है तो आई कैन एक्सेस इट लाइक दिस यू कैन सी इन कंसोल
सिल्वर सर्फर अगर मुझे इस फंक्शन को कॉल करना है आई कैन कॉल इट बट यहां पर मुझे एरर देखने को मिली
सुपर हीरो नेम इज नॉट डिफाइंड यहां पर भाई क्यों एरर नहीं आ क्यों एरर आ रही है मैंने तो यह डिफाइन किया है सो अगेन लेट्स
गो बैक टू दी एनालॉजी ऑफ आवर ऑब्जेक्ट फॉर एग्जांपल एक ऑब्जेक्ट है जिसमें माय नेम की है और एक फंक्शन है शो अब अगर मुझे
यहां पर माय नेम चाहिए मुझे ठीक है तो मैं कैसे माय नेम को गेट कर सकता हूं अगर मैं यहां
पर माय नेम करूंगा तो क्या मुझे माय नेम मिलेगा मुझे माय नेम नहीं मिलेगा मुझे अनडिफाइंड मिलेगा क्योंकि माय नेम तो मैं
आउटर स्कोप में खोजने चले जाऊंगा अगर मुझे माय नेम चाहिए तो मुझे यहां पर दिस डॉट मा नेम करना पड़ेगा राइट तो सेम एनालॉजी फॉलो
होती है क्लासेस में भी यह जो वेरिएबल हम बनाते हैं दिस इज अ क्लास फील्ड वेरिएबल अगर मुझे
इसको किसी फंक्शन के अंदर एक्सेस करना है तो आई हैव टू यूज दिस ओके दिस डॉट सुपरहीरो नेम और अभी ये
सही चल रहा है ओके सो एक क्लास को बनाने के लिए हम क्लास कीवर्ड लिखते हैं उसके बाद क्लास का नाम
क्लास में तुम कहीं पर भी अपने क्लास फील्ड वेरिएबल बना सकते हो जो थ्रू आउट दी क्लास अवेलेबल होंगे अभी मैं कितने भी
फंक्शन बना लूं सब में मुझे सुपर हीरो नेम दिखेगा ठीक है और कैसे मैं इस क्लास को यूज करूंगा आई हैव टू इंस्टेंशिएट इट इन
शॉर्ट मुझे इस क्लास का एक इंस्टेंस बनाना पड़ेगा जो कि ये ऑब्जेक्ट है और इस ऑब्जेक्ट में वो सारी चीजें होंगी जो
मैंने क्लास में डिफाइन की है सो क्लास इज अ डेफिनेशन ऑफ एन ऑब्जेक्ट हमने यहां पर एक क्लास बना के एक
फंक्शन बनाकर देख लिया कि कैसे हम क्लास का ऑब्जेक्ट बनाते हैं कैसे हम फंक्शन को कॉल करते हैं नेक्स्ट लेट्स सी कि
कंस्ट्रक्टर क्या होता है ओके सो इसी सुपर हीरो क्लास में फॉर एग्जांपल अब यह जो मेरा हीरो है सिल्वर
सर्फर यह कहीं पर भी हो सकता है इट कैन बी ऑन प्लेनेट अर्थ इट कैन बी ऑन जुपिटर यह कहीं पर भी हो सकता है मैं चाहता हूं जब
भी मैं इस सुपर हीरो को क्रिएट करूं मैं इसकी लोकेशन बताऊं कि यह कहां पर है अब इसकी जो लोकेशन है क्या मैं डिसाइड कर
सकता हूं स्टार्टिंग में ही देर इज नो वे मुझे नहीं पता कि यह सुपर हीरो कहां मिलेगा मैं बस गेस कर सकता हूं कि इसकी
डिफॉल्ट लोकेशन माइट बी अर्थ हो मैं सेट कर सकता हूं अब कंस्ट्रक्टर हमें हेल्प करते हैं लेट मी क्रिएट कंस्ट्रक्टर सो
कंस्ट्रक्टर इज अ रिजर्व्ड कीवर्ड जो हर क्लास में होता है
कंस्ट्रक्टर इनिशियल वैल्यूज सेट करने में हमें हेल्प करता है फॉर एग्जांपल जब मैं कोई वेरिएबल क्रिएट करता
हूं किसी भी प्रोग्रामिंग लैंग्वेज में जावास्क्रिप्ट ही मान लेते हैं लेट माय
नेम अब इस माय नेम के साथ क्या करूंगा कभी-कभी हम डिफॉल्ट वैल्यू असाइन करते हैं
राइट ऐसा तो हम करते हैं हम डिफॉल्ट वैल्यू असाइन करते हैं सिमिलरली अगर मुझे क्लासेस की दुनिया में डिफॉल्ट वैल्यू
असाइन करनी है तो मैं कंस्ट्रक्टर का यूज करूंगा कंस्ट्रक्टर जो बंदा क्लास बनाता है उसकी
रिस्पांसिबिलिटी होती है तुम ऐसा समझ लो यहां पर तुमने लेट लिखा माय नेम इक्वल टू राहुल किया तो बिहाइंड द
सीन जेएस इंजन ने एक कंस्ट्रक्टर बना रखा है जहां पर वह इस वैल्यू को एज अ इनपुट लेता है कैसे कुछ ऐसे समझ लो मैं यहां पर
लोकेशन भेज देता हूं जुपिटर ठीक है इसे तुम कुछ ऐसे समझ लो कि यहां पर मैं ऐसा कर रहा
हूं ठीक है दोनों में मैं एक इनिशियल वैल्यू असाइन कर रहा हूं इंटरनली तुम ऐसे समझ समझ लो जो लेट क्लास है वह कुछ ऐसे ही
बनी है अब अगर मुझे यह मून हीरो में असाइन करना है तो आई हैव टू रिसीव इट इन कंस्ट्रक्टर जब भी मैं एक वेरिएबल बनाता
हूं या जब भी मैं एक ऑब्जेक्ट क्रिएट करता हूं न्यू कीवर्ड के साथ तो कंस्ट्रक्टर ऑटोमेटिक कॉल हो जाता है ओके सी अगर मैं
यहां पर कंसोल करूं इनसाइड कंस्ट्रक्टर इनसाइड कंस्ट्रक्टर सिल्वर
सर्फर क्योंकि मैंने गेट नेम कॉल किया है तो अभी मैं सिंपली यहां पर लोकेशन रिसीव कर लेता हूं अब मुझे पता है अगर यह लोकेशन
है तो मुझे इस लोकेशन को क्या करना है इस लोकेशन में डाल देना है तो आई कैन डू दिस इफ यूजर ने मुझे बताई है कि लोकेशन क्या
है देन डू दिस ओके तो अभी अगर मैं गेट नेम को कर दूं या इसे
मैं कॉपी पेस्ट कर देता हूं गेट लोकेशन लोकेशन ठीक है इसको रिमूव कर सकते
हैं और मैंने एक हीरो बनाया है जो जुपिटर में है और हीरो फ्रॉम अर्थ
812 यह है भाई मून पे या इसकी लोकेशन मुझे अननोन है ठीक है तो अभी अगर मैं कंसोल करूंगा रो डॉट गेट लोकेशन
और हीरो फ्रॉम अर्थ 812 लेट्स सी व्हाट वी गेट दो बार मुझे इनसाइड कंस्ट्रक्टर मिला
क्योंकि मैंने दो बार ऑब्जेक्ट बनाया एक में मुझे जुपिटर मिला एक में मुझे अर्थ मिला क्योंकि मैंने एक में इनिशियल लोकेशन
भेजी है एक में नहीं भेजी है सो दिस इज द रीजन वई वी यूज कंस्ट्रक्टर कंस्ट्रक्टर हम यूज करते हैं इनिशियल डाटा सेटअप करने
में ठीक है जब हम कोई वेरिएबल या कोई ऑब्जेक्ट क्रिएट करते हैं मैं चाहता हूं यह ऑब्जेक्ट इन इन वैल्यूज से इनिला इज हो
देन वी यूज कंस्ट्रक्टर जो भी वैल्यू हम क्लास को जब कॉल करते हैं पास करते हैं
वह एज अ पैरामीटर हमें कंस्ट्रक्टर में मिल जाती है ठीक है जस्ट लाइक दिस अभी यहां पर मैं कितने भी नंबर ऑफ आर्गुमेंट
सेंड कर सकता हूं और सिंपली उनको मैं यहां कॉमा सेपरेटेड वे में रिसीव कर सकता हूं कंस्ट्रक्टर जो यूजर होता है फॉर एग्जांपल
यह सुपर हीरो क्लास मैं बना रहा हूं इसके जो यूजर हो अब यह वाला जो कोड है यह मैं नहीं लिखूंगा यह वाला कोड तुम लोग लिखोगे
ठीक है अभी अगर मैंने यह कोड लिखा ही नहीं है तो तुम यहां पर कुछ भी पास कर लो कुछ भी नहीं होगा दोनों में तुम्हें अर्थ अर्थ
ही मिलेगा ठीक है सो कंस्ट्रक्टर की फंक्शनैलिटी वो क्रिएटर डालता है जैसे भगवान है जब तुम पैदा होते हो तुम्हें आंख
नाक हाथ मुंह ये सब मिलता है ना क्योंकि भगवान ने कंस्ट्रक्टर बना रखा है ठीक है ना कंस्ट्रक्टर में उन्होंने लिख रखा है
या ऐसे समझ लो कि जब भी बेबी पैदा होगा तो डिफॉल्ट आंख डिफॉल्ट आंख ये सब मुझे लगा देनी है अगर वो यह कंस्ट्रक्टर हटा दें तो
क्या होगा जितने भी बच्चे पैदा होंगे सब एक ही जैसे दिखेंगे क्यों क्योंकि इनिशियल वैल्यूज सबकी सेम है तो कंस्ट्रक्टर कुछ
इस तरह से काम करते हैं कि सिंपली जब भी तुम कुछ क्रिएट करते हो उसमें तुम कुछ कस्टमाइजेशन करना चाहते हो क्या उसको
कंस्ट्रक्टर में भेज दो अब अगर वह बंदा डेवलपर अच्छा होगा उसने क्लास में कंस्ट्रक्टर बनाया है तो इनिशियल
इंफॉर्मेशन असाइन हो जाएगी अगर उसने नहीं बनाया तो नहीं असाइन होगी सीधी सी बात है ओके सो एक बार मैं क्विक रिवीजन दे देता
हूं कि व्हाट आर क्लासेस व्हाट आर ऑब्जेक्ट्स व्हाट आर क्लास फील्ड्स हाउ वी डिफाइन मेथड्स
सो अ क्लास इज अ डाटा स्ट्रक्चर ओके दैट वी यूज टू क्रिएट आवर ओन कस्टम डाटा स्ट्रक्चर्स अब वो डेटा स्ट्रक्चर्स कुछ
भी हो सकते हैं ठीक है एंड अ क्लास इज अ डेफिनेशन ऑफ एन ऑब्जेक्ट मेरी क्लास डिसाइड करेगी कि मेरा बनने वाला ऑब्जेक्ट
कैसा होगा वो सारी इंफॉर्मेशन मैं अपनी क्लास में डाल दूंगा इसका सबसे इजी एग्जांपल फ्रॉम रियल
वर्ल्ड तुम इंजीनियर बने क्योंकि तुमने इंजीनियरिंग की पढ़ाई की इंजीनियरिंग एक क्लास है ठीक है तुम्हारे बिना
इंजीनियरिंग का कोई एसिस्टेंसिया बने तुम एक इंजीनियरिंग के स्टूडेंट हो इन टर्म्स ऑफ प्रोग्रामिंग
द्वारा ऑब्जेक्ट ऑफ इंजीनियरिंग तुम्हारे अंदर वह सारी चीजें हैं जो एक इंजीनियरिंग के स्टूडेंट में होनी चाहिए क्योंकि तुमने
वह सीखी है अब एक क्लास में जब हम डाटा स्ट्रक्चर अपना बनाते हैं तो हमें इंफॉर्मेशन ऐड करनी पड़ती है कि क्या-क्या
चीजें होंगी हम दो तरीकों का यूज करके वह इंफॉर्मेशन प्रोवाइड करते हैं पहली इंफॉर्मेशन है
वेरिएबल क्लासेस की दुनिया में इनको क्लास फील्ड्स बोला जाता है ऐसा क्यों क्योंकि जो भी वेरिएबल हम बनाते हैं वह थ्रू आउट द
क्लास एक्सेसिबल होते हैं अब इस लोकेशन को मैं पूरी क्लास में कहीं पर भी एक्सेस कर सकता हूं इसी रीजन की वजह से इसे हम क्लास
फील्ड्स बोलते हैं ठीक है और हम कुछ फंक्शंस बनाते हैं विदाउट यूजिंग फंक्शन कीवर्ड इनको हम मेथड्स बोलते हैं ठीक है
अभी थोड़ी देर पहले मैंने एक पासिंग वर्ड बताया था तो देखो अभी अगर मैं इस क्लास के अंदर गेट नेम के अंदर कुछ ऐसा करू दिस डॉट
गेट लोकेशन सो दिस इ अ फंक्शन कॉल ओके बट अगर मैं ऑब्जेक्ट का यूज करके गेट लोकेशन को
कॉल कर रहा हूं तो दिस इज अ मैसेज पासिंग सो फंक्शन कॉल और मैसेज पासिंग में तुम्हें डिफरेंस समझना पड़ेगा फंक्शन कॉल
जहां पर तुम एक क्लास के अंदर सिर्फ फंक्शन कॉल कर रहे हो मैसेज पासिंग तब पिक्चर में आती है जब तुम एक ऑब्जेक्ट का
यूज करते हो यहां पर मैं इस हीरो ऑब्जेक्ट का यूज करके एक मैसेज पास कर रहा हूं हीरो इज अ ब्लैक बॉक्स मुझे कोई आईडिया नहीं है
कि गेट लोकेशन क्या करेगा आई हैव सिंपली पास्ड अ मैसेज गेट लोकेशन दैट्ची अभी हम मूव करते हैं फोर इंपॉर्टेंट
थिंग्स जिसे जनरली लोग बोलते हैं फोर इंपॉर्टेंट पिलर्स ऑफ ओओ पी बट दीज फोर थिंग्स आर द नेचुरल ट्रेट ठीक
है अगर तुम ओओ प में काम कर रहे हो तो यह चारों चीज जाने अनजाने में तुम करोगे यहां पर हमने एनकैप्सूलेशन किया है
यहां पर हमने ट्रैक्शन किया है कैसे अभी बताता हूं और यहां पर हमने
पॉलीमोर्फस जम भी किया है कैसे नाउ लेट्स सी एनकैप्सूलेशन क्या बोलता है डाटा हाइडिंट
नेम गेट लोकेशन सुपर हीरो नेम लोकेशन हमने यह सारी इंफॉर्मेशन को सुपर
हीरो क्लास में कंबाइन कर दिया दिस इज अ सिंगल यूनिट हमने यह सारी इंफॉर्मेशन सुपर हीरो
के अंदर हाइड कर दी कि भाई यह सारी इंफॉर्मेशन चली जाओ सुपर हीरो के अंदर दिस इज एनकैप्सूलेशन अनदर टर्म में तुम सुनते
होगे बंडलिंग द इंफॉर्मेशन तो भाई हम यहां पर वही तो कर रहे हैं एक क्लास में हमने इंफॉर्मेशन को बंडल कर दिया है दिस इज अ
एनकैप्सूलेशन व्हाट इज पॉलीमोर्फस म एबिलिटी टू टेक मल्टीपल फॉर्म पॉली मींस मल्टीपल जो मॉर्फिस म है उसका मतलब है
लाइक से शेप या फिर रूप तो यहां पर कंस्ट्रक्टर में मैं कुछ भी पास कर
सकता हूं जुपिटर पास किया मैंने मेरा हीरो जुपिटर पहुंच गया मैंने मून पास किया मून में पहुंच गया
इट्स एबल टू टेक मल्टीपल फॉर्म्स जो वैल्यू मैं दे रहा हूं उसके बेसिस पे डिफरेंट वैल्यूज डिफरेंट एक्शंस मुझे मिल
सकते हैं दिस इ पॉलीमोर्फस जम व्हाट इज एब्स्ट्रेक्शन मैंने फॉर एग्जांपल यहां पर
मैं इस गेट लोकेशन को कमेंट आउट कर देता हूं ठीक है एंड यहां से
मैं इसको रिमूव करके सिंपली यहां से मैं लोकेशन रिमूव कर लोकेशन को रिटर्न कर देता हूं अब आई डोंट हैव अ वे टू डायरेक्टली
गेट द लोकेशन कोई ऐसा मेथड अवेलेबल नहीं है बट मैंने गेट नेम फंक्शन को एक्सपोज कर दिया कि ठीक है तुम गेट नेम को कॉल कर लो
और लोकेशन को ले लो मैंने दिस डॉट लोकेशन को हाइड कर दिया ओके सो तुम देख रहे हो मैंने जाने
अनजाने में इन तीनों चीजों को किया है बट बट लेट्स यह बहुत ही मैंने वेग तरीके से बताया है मैं इनको एक अच्छे तरीके से बता
देता हूं सबसे पहला प्रिंसिपल है इन्हेरिटेंस ओके सो इन्हेरिटेंस क्या बोलता है कि अगर
हमारे पास दो चीजें हैं और वह दो चीजें आपस में कुछ इंफॉर्मेशन को शेयर करना चाहती हैं
फॉर एग्जांपल इस सुपर हीरो क्लास के पास कुछ क्लास फील्ड्स है जैसे कि नेम है एंड पावर है
एंड फाइट विद विलन एक मेथड है ठीक है जहां पर मैं विलन का नेम एस इनपुट लेता हूं एंड सिंपली एक मैसेज कंसोल कर देता हूं फाइट
विथ विलन नेम ओके सो अब मैं जितने भी सुपर हीरोज बनाऊंगा फॉर एग्जांपल मैंने एक सुपरहीरो क्लास बनाई सिल्वर सर्फर
अब भाई यह जो सिल्वर सर्फर है यह सारी चीजें करेगा इसके इसके पास नेम होगा इसके पास पावर होगी और य फाइट करेगा तो क्या
मैं इस इंफॉर्मेशन को यूज कर सकता हूं या मुझे यहां पर फिर से यह सारी चीजें क्रिएट करनी पड़ेंगी
ओके सो यहां पर देखो कैसे मैं चीजों को रीयूज कर सकता हूं यहां पर इन्हेरिटेंस पिक्चर में आता है अगर मेरे पास कोई एक
क्लास बनी हुई है और मुझे उस क्लास की सारी चीजें चाहिए ठीक है सारी सारी वर्ड पे ध्यान देना सारी चीजें अगर मैं कुछ
चीजें लेना चाहता हूं सो हम कौन सी प्रॉब्लम को इंट्रोड्यूस कर रहे हैं वी आस्क फॉर अ लेट मी यूज इमोजी वी आस्क फॉर
अ बनाना ओके बट व्हाट वी गॉट वी गॉट अ ट्री जिसको मंकी ने पकड़ रखा है और मंकी ने क्या पकड़ रखा है बनाना लाइक अगर मैं
इस कोड में एग्जांपल दूं यहां पर एक मेथड है
स्विम भाई सिल्वर सर्फर स्विम नहीं करता है राइट सो यहां पर दिस इज द प्रॉब्लम मुझे
अननेसेसरी य चीज मिल जाएगी सो अगर मैं ऐसा कर रहा हूं देन आई हैव टू लुक कि क्या भाई मेरी पैरेंट क्लास अच्छे से आर्किटेक्टेड
है मुझे इसको रिविजिट करने की जरूरत है पहले दो सो इन्हेरिटेंस में हम य चेक करते हैं कि क्या मैं जो क्लास बना रहा हूं
इसमें मुझे जो चीज चाहिए वह किसी दूसरी क्लास में है अगर है तो आई कैन यूज इट कैसे बाय यूजिंग अ स्पेशल कीवर्ड कॉल्ड
एक्सटेंड्स एक्सटेंस स्पेस उस क्लास का नाम जिसकी चीजों को तुम एक्सेस करना चाहते हो ठीक है
अभी अगर यहां पर मैं एक ऑब्जेक्ट क्रिएट करू कंस्ट सिल्वर सर्फर
न्यू सिल्वर सर्फर और यहां पर मैं कुछ वैल्यूज असाइन कर देता हूं नेम नरेड
पावर फलाई ओके नाउ लेट्स सी लेट मी डू दिस कंसोल
डॉट लॉग सिल्वर सर्फर डॉट नेम व्ट वी गट इन कंसोल नरन रेड ऐसी कोई इंफॉर्मेशन मेरे सिल्वर सर्फर क्लास में तो नहीं है यह तो
पैरेंट क्लास में है तो ये इंफॉर्मेशन अब मुझे पैरेंट क्लास से मिल रही है सो यहां पर मैंने सिल्वर सर्फर क्लास को लिंक कर
दिया सुपर हीरो क्लास से सुपर हीरो क्लास में जो जो चीजें होंगी वोह सब मुझे मिल जाएंगी नाउ आई एम द ओनर इसका एग्जांपल
रियल लाइफ में मेरे दोस्त के पास बाइक है मुझे बाइक चाहिए थी मैं उसके पास गया मैंने उसको बोला मुझे अपनी बाइक दे दे
उसने दे दी अब वो बाइक मेरी है अब मैं उस बाइक में कुछ भी कर सकता हूं ठीक है जाहिर सी बात है मैं इधर उधर ले जाऊंगा अगर मैं
कुछ तोडूंगा फोडा तो मेरी रिस्पांसिबिलिटी है अब फॉर एग्जांपल मेरा दोस्त थोड़ा सा दुष्ट आदमी निकला उसने अपने बाइक में बॉम
मम रख रखे हैं ओके तो अब क्या होगा अगर पुलिस मुझे पकड़े गी तो वह क्या सोचेगी कि यह बॉम तो मेरे हैं मैं फस गया तो यहां पर
कौन सी प्रॉब्लम हुई भाई वी आस्ड फॉर अ बाइक बट वी गट अ बाइक विद बॉम ठीक है सो इन्हेरिटेंस इज अ वेरी बिग टूल बट यूज विद
रिस्पांसिबिलिटी दिस इज लाइक से हाउ इन्हेरिटेंस वर्क्स यू सिंपली एक्सटेंड अ पेरेंट क्लास और जो भी उस पेरेंट क्लास
में चीजें होती है व तुमको मिल जाती है अभी यहां पर आई कैन इजली कॉल दिस मेथड यहां पर मैं सिंपली गैलेक्टस पास कर सकता
हूं एंड आई विल गेट अ लॉग फाइट विथ गैलेक्टस ओके एंड यहां पर कुछ कुछ चीजें और होती है जो बहुत ही स्पेशल है
क्या अगर मेरे पैरेंट क्लास में कोई कंस्ट्रक्टर बना हुआ है सो यह ऑटोमेटिक कॉल हो जाता है मुझे इसको कॉल करने की
जरूरत नहीं पड़ती है कसोल डलॉग कंस्ट्रक्टर ऑफ पैरेंट सी कंस्ट्रक्टर ऑफ पैरेंट यह ऑटोमेटिक ही कॉल हो गया मुझे
इसको कॉल नहीं करना पड़ा ठीक है दिस इज वन स्पेशल थिंग अब अगर मुझे इस कंस्ट्रक्टर में कुछ इंफॉर्मेशन को पास करना है तो मैं
कैसे कर सकता हूं सो यहां पर एंट्री होती है सुपर कीवर्ड की सुपर कीवर्ड को हम यूज करते हैं पैरेंट क्लास को एक्सेस करने के
लिए ओके सो फॉर एग्जांपल मैं चाहता हूं कि मैं इस कंस्ट्रक्टर में विलन का नाम इनिश इज कर दूं सो दैट मुझे बार-बार यह पास
करने की जरूरत ना पड़े तो आई कैन डू दिस और कंस्ट्रक्टर में तुम डायनेमिक क्लास फील्ड्स बना सकते हो
ओके सो फॉर एग्जांपल विलन नेम अभी मैंने स्टार्टिंग में बनाई नहीं थी बट अभी मैं बना रहा हूं ओके और यहां पे मुझे इसकी
जरूरत है नहीं मैं रिमूव कर सकता हूं यहां पे दिस डॉट विलन नेम ठीक है अभी अनडिफाइंड आएगा क्योंकि हमने कोई विलन नेम पास नहीं
किया है कैसे मैं सुपर क्लास में कंस्ट्रक्टर में वैल्यू भेजूं तो हमको सबसे पहले तो अपनी चाइल्ड क्लास में
कंस्ट्रक्टर को इंप्लीमेंट करना पड़ेगा सो दैट जब यह कॉल हो तभी तो मैं यहां भेज सकता हूं अब इस कंस्ट्रक्टर से मुझे
पैरेंट में भेजना पड़ेगा ओके सो व्हाट आई कैन डू आई कैन कॉल सुपर विथ जो भी मुझे भेजना
है यह ऐसे तुम समझ लो कि यहां से मैं क कम्युनिकेट कर रहा हूं चाइल्ड टू पेरेंट कि भाई मेरी चाइल्ड क्लास बन रही है यह ये
डाटा तुम पेरेंट में भी डाल दो तो अभी अगर मैं इसको रन करूंगा तो मुझे गैलेक्टस देखने को मिल रहा है ठीक है अगर मुझे
पैरेंट में कुछ इनिला करना होता है देन आई विल यूज सुपर कीवर्ड सुपर कीवर्ड का एक और यूज होता है अगर
मुझे पैरेंट क्लास के मेथड को एक्सेस करना है यहां इस चाइल्ड क्लास में सो फॉर एग्जांपल फाइट विथ विलन तो मैंने यहां पर
कॉल कर लिया है ऑब्जेक्ट में बट व्ट इफ मैं चाहता हूं कि मैं किसी फंक्शन के अंदर यहां पे फॉर
एग्जांपल मेरे पास एक फंक्शन है गेट डिटेल्स और मैं इस गेट डिटेल्स में सुपरहीरो का नाम पावर और विलन नेम चाहता
हूं कैसे ले सकता हूं अगर मैं दिस करूंगा तो मुझे तो यह क्लास मिलेगी मुझे तो यह क्लास चाहिए तो वी हैव टू यूज सुपर कीवर्ड
सुपर डॉट नेम पावर और विलन नेम नेम पावर एंड विलन नेम वी हैव टू डू कसोल डलॉग लेट मी कॉपी पेस्ट इट एंड लेट
कॉल दिस गेट डिटेल्स इंस्टेड ऑफ दिस अभी यह मुझे अनडिफाइंड अनडिफाइंड अनडिफाइंड मिला यहां पर हमें जो अनडिफाइंड मिल रहा
है सो दिस इ एक्सपेक्टेड ओके यह अनडिफाइंड हमें इस वजह से मिल रहा है क्योंकि यहां पर जो हम काम करना चाह रहे हैं वह काम गलत
है यहां पर मैं जो मेरी पैरेंट क्लास है उस पैरेंट क्लास की प्रॉपर्टीज को एक्सेस करना चाहता हूं मैं
क्लास फील्ड्स को एक्सेस करना चाहता हूं नेम पावर और विलन नेम यह जो क्लास फील्ड्स है पैरेंट क्लास में जो हम बनाते हैं जब
मेरा ऑब्जेक्ट बनता है तो यह उसमें ऑटोमेटिक ऐड हो जाती है अगर मैं यहां पर कंसोल करूं कसोल डलॉग सिल्वर सर्फर तो तुम
देखोगे कि इस ऑब्जेक्ट में ही नेम पावर और विलन नेम है मुझे सुपर को यूज करने की जरूरत ही नहीं है यहां पर आई कैन यूज दिस
दिस डॉट नेम दिस डॉट पावर दिस डट विलन नेम सी और लेट मी कॉल दिस गेट डिटेल्स एंड लेट मी कॉमेंट दिस देखो मुझे तीनों वैल्यूज
मिल रही है सो सुपर को फिर हम किस लिए यूज करते हैं तो अब अगर मेरे पास यहां पर सेम मेथड होता फाइट विथ
विलन ओके और यहां पर लिखा होता नो फाइट बट मुझे तो यह वाला फाइट विथ विलन कॉल करना है ओके सो
अगर मुझे अपनी चाइल्ड क्लास से अपनी पेरेंट क्लास के मेथड्स को कॉल करना है तब मैं यूज करूंगा सुपर ओके अभी यहां पर मैं
सिंपली यह कर सकता हूं इसको रिमूव करके सुपर डॉट फाइट विथ विलन ओके अभी अगर मैं यहां पर यह कॉल करता हूं फाइट वि विलन सी
फाइट विथ गैलेक्टस मेरा पैरेंट क्लास का मेथड कॉल हो रहा है सुपर क्लास के दो यूज केसेस हैं नंबर वन यूज
केस जब चाइल्ड क्लास बन रही हो उस टाइम पर मुझे पैरेंट क्लास में कुछ एडिशनल इंफॉर्मेशन ऐड करनी है तब मैं सुपर कीवर्ड
का यूज करके पैरेंट क्लास के कंस्ट्रक्टर को इवोक कर सकता हूं कुछ इंफॉर्मेशन पास कर सकता हूं सेकंड यूज केस अगर मुझे
चाइल्ड क्लास से पैरेंट क्लास के कोई मेथड्स को कॉल करना है देन आई कैन यूज सुपर कीवर्ड ओके एंड यहां पर हमने जाने
अनजाने में मेथड ओवरराइडिंग कर दी है दिस इज एग्जांपल ऑफ ओवरराइडिंग
ओके हमने पैरेंट क्लास में जो मेथड बना था उसको ओवरराइड कर दिया चाइल्ड क्लास में
दिस इज एग्जांपल ऑफ ओवरराइडिंग ठीक है तो जो भी कांसेप्ट हम उप्स में पढ़ते हैं एब्स्ट्रेक्शन
एनकैप्सूलेशन इन्हेरिटेंस पॉलीमोर्फस जम यह नेचुरल ट्रेट है यह हम करते ही करते हैं ठीक है सो ज आर नॉट
पिलर्स ऐसा तुम कह सकते हो यह तुम्हें करने ही पड़ेंगे भाई इसके बिना ओओ पी तो है ही नहीं एक्जिस्टेंस
में ठीक है तो यह काम होता है देखो सुपर का ओके और जो फीड वो तुम डायरेक्टली दिस से एक्सेस कर सकते
हो तो हम पढ़ रहे थे इनहेरिटेंस इन्हेरिटेंस हम तब यूज करते हैं जब मुझे किसी एक क्लास को रीयूज करना होता है उसकी
सारी फंक्शनालिस किसी और क्लास में ऐड करनी पड़ती है देन वी यूज कांसेप्ट ऑफ इन्हेरिटेंस हम एक्सटेंड कीवर्ड का यूज
करके एक रिलेशनशिप बना देते हैं कि भाई मेरी एक्स क्लास वाई क्लास से एक्सटेंड हो रही है वाई क्लास की सारी चीजों को इसमें
डाल दो दिस इज एग्जांपल ऑफ इन्हेरिटेंस और सुपर कीवर्ड हम यूज करते हैं चाइल्ड क्लास से पैरेंट क्लास के मेथड्स को कॉल
करने के लिए और पैरेंट क्लास के कंस्ट्रक्टर में इंफॉर्मेशन भेजने के लिए सो नाउ लेट्स सी कि ये एनकैप्सूलेशन क्या
है अब ये एनकैप्सूलेशन तुम्हें जाके करना नहीं पड़ता कि लोग करो एनकैप्सूलेशन अगर तुम क्लास पर काम कर रहे हो सुपर
हीरो तो तुम एनकैप्सूलेशन करोगे ही करोगे जैसे ही तुमने इस सुपर हीरो क्लास में कुछ भी काम किया तुमने एनकैप्सूलेशन कर दिया
एनकैप्सूलेशन बोलता है रैपिंग ऑफ डेटा यूनिट्स ठीक है इसका वही एग्जांपल जो
जनरली हर कोई देता है कैप्सूल जिसमें सारी चीजें इनबिल्ट होती है इन कैप्सन तुम नॉर्मली भी करते हो
ऑब्जेक्ट हर कोई बनाता है राइट ऑब्जेक्ट में तुम लोग क्या करते हो कीज ऐड करते हो राइट यह क्या है यह
एनकैप्सूलेशन ही तो है जहां पर भी तुम मल्टीपल चीजें किसी एक चीज में डालते हो ट इ एनकैप्सूलेशन एस
क्लियर एस दैट ओके इसमें कोई भी रॉकेट साइंस नहीं है नेक्स्ट तो फिर य एब्स्ट्रेक्शन क्या है ए एकशन को लोग
बोलते हैं इंप्लीमेंटेशन हाइडिंट मेंटेशन हाइडिल मैं मैं बहुत ही कंफ्यूज होता हूं
एब्स्ट्रेक्शन और एनकैप्सूलेशन में दोनों सिमिलर साउंडिंग वर्ड है एब्स्ट्रेक्शन इज
इंप्लीमेंटेशन हाइडिंट पसले इज इंफॉर्मेशन
व्हाट द हेल इज गोइंग हियर सो अगर मैं एब्स्ट्रेक्ट वर्ड का तुम्हें हिंदी दिखाऊं कि एब्स्ट्रेक्ट का मतलब होता क्या
है एब्स्ट्रेक्ट मीनिंग इन हिंदी ओके सो इसकी जो एग्जैक्ट मीनिंग मैं तुम्हें दिखाना चाहता
हूं वह है यह संक्षिप्त करना ओके एब्स्ट्रेक्ट का मतलब होता है एक समरी प्रोवाइड
करना डिपेंड करता है कौन मुझसे क्या पूछ रहा है ओके इसको बहुत ध्यान से सुनना
एब्स्ट्रैक्ट्स बताता हूं हम सब स्कूल पढ़ के आए हैं यहां पे ठीक है वी र ऑल आर फ्रॉम
स्कूल्स पर्सनली ये मेरे साथ होता था जब भी हमारा गेम्स का पीरियड होता था हम ग्राउंड में जाते थे बट जब हम क्लास में
आते थे तो हम पूरे स्कूल का चक्कर काट के आते थे ठीक है अब जाहिर सी बात है यह काम मैं अकेले
तो करूंगा नहीं मेरे साथ मेरे दोस्त भी होंगे ओके कई बार ऐसा होता था जब हम क्लास में जाते
थे तो टीचर पहले से ही होता था से ही होता था ओके अब वो हमसे पूछता था भाई कहां से आ रहे हो तो क्या हम उसको
बताते थे सर हम पहले यहां आए फिर यहां गए फिर वहां गए फिर यहां गए फिर यहां आए हम उसको बस बोलते
थे ग्राउंड से आने में देर हो गई दिस इज अ एब्स्ट्रेक्शन हम एक समरी उसको बता रहे हैं और बस उतना ही बता रहे हैं जितना उसको
जानना है ओके सो एब्स्ट्रेक्शन में हम बेसिकली समरी प्रोवाइड करते हैं किसी भी मतलब जो कोई भी मांगता है अब अगर उसी
क्लास में मेरा कोई और दोस्त होता जो मेरे साथ आ नहीं पाया वह पहले ही आ गया अगर वह मुझसे पूछता कि कहां कहां गए तुम लोग तब
मैं उसको सारी चीजें बताता कि भाई मैं यहां गया यहां गया यहां गया अब यह उसके लिए एब्स्ट्रेक्शन
है यहां पर भी माइट बी मैंने उससे कुछ चीजें छिपा ली क्योंकि मैं उसको सारी चीजें नहीं बताना चाहता तो उसके लिए जो
लेवल ऑफ एब्स्ट्रेक्शन है वो थोड़ा सा और डिक्रीज हो गया मैंने उसको थोड़ा सा और लो लेवल में डिस्क्राइब करके बताया बट ज्यादा
नहीं बताया तो एब्स्ट्रेक्शन में मोटा मोटा हम तुम ऐसे समझ लो समरी प्रोवाइड करते
हैं अगर मैं इसको ओओ प की लैंग्वेज में बताऊं तो एब्स्ट्रेक्शन में हम किसी क्लास को यह बताते हैं कि भाई तुमको मिनिमम यह
काम करना ही करना है अब ऐसे समझो मैं एक सॉफ्टवेयर डेवलपर हूं ठीक है क्लास डेवलपर नाम की क्लास बना लेते हैं
ठीक है अब मेरा जो मैनेजर है क्लास
मैनेजर ओके अब भाई मैनेजर मुझको बोलता है कि जो भी डेवलपर होगा वह यह यह काम करेगा डेवलपर का यह काम है तो उसने क्या किया
उसने क्लास बना दी एब्स्ट्रेक्ट क्लास एब्स्ट्रेक्ट क्लास फॉर
डेवलपर जो उसको लगा कि डेवलपर यह काम करता है फॉर एग्जांपल फिनिश
वर्क उसने एक मेथड बना दिया और लाइक से शेयर स्टेटस
अपडेट उसने एक मेथड बना दिया कि भाई एक डेवलपर यह काम करेगा मैनेजर की नजर में यह दो काम एक डेवलपर करता है तो उसने भाई यह
मेथड्स बना दिए कि यह काम डेवलपर को करने ही करने हैं अब जो डेवलपर होगा वह इस क्लास को यूज कर
लेगा और इस डेवलपर को यह दोनों काम करने पड़ेंगे तो इस डेवलपर के लिए यह चीज एक समरी हो गई फ्रॉम
मैनेजर बट क्या यह डेवलपर क्लास बस यही तो काम करेगी यह बहुत सारी चीजें अलग से कर रही होगी जो इसके अंदर खुद भी बने हो सकते
हैं अब इस डेवलपर के अंदर मान लो सारी चीजें प्राइवेट है बट अब यह दोनों चीजें तो मैनेजर ने
इसको दी हैं यह दोनों चीजें पब्लिक है तो डेवलपर क्लास ने यह दोनों फंक्शन आउटसाइड वर्ड को एक्सपोज कर
दिए ठीक है अब क्या हुआ जब मैनेजर पूछने आएगा फिनिश वर्क या शेयर स्टेटस अपडेट व सिंपली डेवलपर ऑब्जेक्ट पे यह दो फंक्शन
या मेथड को कॉल करेगा फिनिश वर्क शेयर स्टेटस अपडेट मैनेजर को कोई आईडिया ही नहीं है कि डेवलपर कैसे काम कर रहा है
क्या पता डेवलपर सो के काम कर रहा हो क्या पता उसने कॉपी पेस्ट किया हो क्या पता उसने झूठ बोल दिया हो कोई आईडिया नहीं है
मैनेजर को बस वह फिनिश वर्क को कॉल करेगा और डेवलपर बता देगा यह काम हुआ है कि नहीं ठीक है तो इस पूरे सिनेरियो से हम दो
चीज समझ सकते हैं पहली चीज एब्स्ट्रेक्शन इज अ समरी हम समरी प्रोवाइड करते हैं
एब्स्ट्रेक्शन में कि कोई पर्टिकुलर क्लास मिनिमम कितना काम करेगी और कोई क्लास मिनिमम चीज एक्सपोज करती है जो
सामने वाले को जानना जरूरी होता है ऐसा समझ लो अभी फॉर डेवलपर में डेवलपर ने यह दोनों चीजें एक्सपोज की कभी आगे जाके
क्लास डेवलपर एक्सटेंड्स फ्रेंड कर देते हैं अब मैंने फ्रेंड की क्लास को एक्सटेंड कर लिया अब भाई फ्रेंड ने तो कई सारी
चीजें बता बना रखी हैं अपने अंदर कि भाई यह बताओ वो बताओ वो बताओ तो डेवलपर वो सारी चीजें एक्सपोज कर
देगा राइट तो अगेन इन एब्स्ट्रेक्शन वी सिंपली प्रोवाइड अ समरी और हम उतनी ही चीजें प्रोवाइड करते हैं
जो सामने वाले को जानना जरूरी होता है बेस्ड ऑन कौन पूछ रहा है या किसको बताना है बाय
डिफॉल्ट जावास्क्रिप्ट में एब्स्ट्रेक्शन नहीं होता या मैं ऐसा कहूं बाय डिफॉल्ट हम
एब्स्ट्रेक्ट क्लास नहीं बना सकते ओके दूसरी लैंग्वेज में होता है तुम एब्स्ट्रेक्ट क्लास बना के इंप्लीमेंटेशन
वगैरह प्रोवाइड कर सकते हो कई बार और बता सकते हो कि जो भी क्लास इससे बने वो ये ये चीजें बनाए बट जावास्क्रिप्ट में
एब्स्ट्रेक्ट क्लास का कांसेप्ट नहीं होता हम यह रिस्ट्रिक्शन डाल सकते हैं कि जो भी क्लास इस डेवलपर वर्क को एक्सटेंड करें वह
फिनिश वर्क और शेयर अपडेट को इंप्लीमेंट करें मैं सिंपली यहां पे एरर थ्रो कर सकता हूं थ्रो न्यू एरर इंप्लीमेंट फिनिश वर्क
अब यह एरर हमेशा नहीं आएगी यह एरर तभी आएगी जब कोई इस फंक्शन को कॉल करेगा सो फॉर एग्जांपल मैनेजर ने कॉल किया यह
फंक्शन तो हमें एरर देखने को मिल जाएगी कि भाई य यह फंक्शन डेवलपर ने बनाया ही नहीं है तो फिर डेवलपर को वो फंक्शन अपने अंदर
बनाना पड़ेगा तो जावास्क्रिप्ट में बाय डिफॉल्ट हम किसी क्लास को एब्स्ट्रेक्ट नहीं बना सकते बट एटलीस्ट एब्स्ट्रेक्शन
का कांसेप्ट अब हमें पता है तो नेक्स्ट हम देख लेते हैं पॉलीमोर्फस तो पॉलीमोर्फस जम का मतलब होता है एबिलिटी टू डू मल्टीपल
थिंग्स अब ये पॉलीमोर्फस ज्म हम हमेशा से यूज करते आए हैं console.log दिस इज अ पॉलीमोरफिक फंक्शन अगर मैं यहां पे वन पास
करूं मुझे वन दिखेगा राइट क्या इसका मतलब यह है कि मैं बस यहां पे एक ही आर्गू मेंट पास कर सकता हूं नहीं यहां पे मैं दो पास
कर सकता हूं यहां पे मैं तीन पास कर सकता हूं जितने भी आर्गुमेंट मैं पास कर रहा हूं उसके बेसिस पे console.log अपने आप को
मैनेज कर रहा है तो पॉलीमोर्फस जम में कोई भी फंक्शन मल्टीपल चीजें करता है दैट्ची और वर्क और कभी ना कभी तुमने इस तरह का
कोड जरूर लिखा होगा इफ नॉट इक्वल टू एज रिटर्न 3 इफ नेम रिटर्न थ्री एज अ स्ट्रिंग इफ वर्क रिटर्न डब् तो यहां पर
क्या हो रहा है तीन पैरामीटर के बेसिस पर हम तीन अलग-अलग काम कर रहे हैं दिस इज अ पॉलीमोर्फस फंक्शन तो जहां पर भी तुम एक
से ज्यादा काम करो यू डूइंग पॉलीमोर्फस जम दैट्ची तरीके से करते हो मैं तुम्हें तीन तरीके बता देता हूं ठीक है
क्लास सुपर हीरो यार फंक्शन की आदत जाएगी नहीं क्लास सिल्वर सर्फर लेट्स क्रिएट अ फंक्शन
इनसाइड सिल्वर सर्फर फ्लाई ओके एंड लेट्स क्रिएट अ ऑब्जेक्ट
सिल्वर सर्फर न्यू सिल्वर सर्फर एंड लेट्स कॉल सिल्वर सफर ड फलाई कंसोल में कुछ नहीं दिखेगा
क्योंकि हमने कुछ किया नहीं है लेट्स ड अ फंक्शन या कंसोल फ्लाइंग फ्लाइंग मुझे यहां कंसोल में दिख गया अभी यह एक ही काम
कर रहा है बट व्हाट इफ आई डू दिस फ्लाइंग अबब इंडिया फ्लाइंग अबब इंडिया अगर मैं कुछ भी पास ना
करूं तो फ्लाइंग तो ऐसा कोई फंक्शन जो एक से ज्यादा काम कर रहा है यू आर डूइंग पॉलीमोर्फस जम
दैट्ची लैंग्वेजेस में क्या होता है कि तुम सेम नेम से ना मल्टीपल फंक्शन बना सकते हो जैसे फ्लाई है तो मैं एक दूसरा
फंक्शन बना सकता हूं सेम नेम से और यहां पर आर्गुमेंट डिफरेंट कर दूंगा तो जब मैं फ्लाई को कॉल करूंगा दो आर्गुमेंट से तो
यह वाला कॉल होगा एक से कॉल करूंगा तो यह वाला कॉल होगा तो दिस इज द सेकंड टाइप ऑफ पॉलीमोर्फस जम बट जावास्क्रिप्ट में ऐसा
होता नहीं है तुम एक नाम से दो फंक्शन बनाओगे तो नीचे वाला ओवरराइड मार देगा ठीक है बट
आर्गुमेंट के बेसिस पर यू कैन डिसाइड कि क्या करना है और वही पॉलीमोर्फस जम है एक थर्ड टाइप का जो होता है वह होता है
ओवरराइडिंग जहां पर तुम क्लास में कोई फंक्शन होता है लाइक से पैरेंट क्लास में कुछ होता है जैसे कि सुपर हीरो में कोई
फंक्शन है फ्लाई ओके फ्लाई दिस इज अ फंक्शन और तुमने उसको चाइल्ड क्लास में ओवरराइड कर दिया सो
ओवरराइडिंग इज आल्सो एग्जांपल ऑफ पॉलीमोर्फस जम ओवरराइडिंग मोफिज जहां पर तुम एक से ज्यादा कुछ काम
करो अगर मैं फ्लाई को हटा दूंगा तो यह कुछ नहीं करेगा इंप्लीमेंट कर दूंगा तो यह कुछ करेगा ठीक है सो थ्री वेज में पॉलीमोर्फस
जम हम अचीव करते हैं एक नॉर्मल फंक्शन दूसरा फंक्शन ओवरलोडिंग और तीसरा ओवरराइडिंग
ठीक है बाय द वे ओवरराइडिंग इज अ कांसेप्ट जहां पर हम पैरेंट क्लास में डिफाइंड मेथड को चाइल्ड में सिंपली राइड कर लेते हैं
दोबारा बना देते हैं सो दिस इज़ ओवरराइडिंग जैसे यहां पे मैं ओवरराइडिंग कर रहा
हूं तो हमने इन्हेरिटेंस पढ़ लिया पॉलीमोर्फस ज्म एनकैप्सूलेशन एब्स्ट्रैक्टर भी हमने देख लिया ओवरलोडिंग
ओवरराइडिंग भी देख लिया लेट्स सी व्हाट आर दीज एक्सेस मॉडिफिकेशन स्पेशल
पावर इक्वल टू बोट ठीक
है एंड लेट्स क्रिएट न्यू [संगीत] ऑब्जेक्ट बाय द वे किसी ने सिल्वर सर्फर
देखा हुआ है या नहीं देखा नो सर ठीक है
सो अब यह जो सिल्वर सर्फर है इसकी जो सुपर पावर है दैट लाइज इन अ बोट सिल्वर सर्फर ओके सो दिस इज अ सिल्वर
सर्फर इसको जो पावर मिलती है वह इसके बोट से मिलती है ठीक है इसी बोट पे यह फ्लाई वगैरह करता है सारी पावर इसको इसी से
मिलती है अब अगर सबको पता चल जाए कि इसको यह पावर इससे मिलती है तो एवरीवन विल ट्राई टू स्नैच इट ओके अभी अगर यहां पर
मैं सिल्वर सर्फर डॉट स्पेशल पावर करूंगा तो मुझे बोट दिख गई अब मैं चाहता हूं कि मैं बस इसको
प्रोटेक्ट करूं कि यह मेरे अलावा किसी और को पता ना चले तो इसको मैं प्राइवेट बना सकता हूं बाय डिफॉल्ट सारे क्लास फील्ड
सारे मेथड पब्लिक होते हैं ओके एवरीवन कैन एक्सेस इट जो भी क्लास या जो भी ऑब्जेक्ट उससे एक्सटेंड हो रही है इंस्टेंस
ऑब्जेक्ट का बन रहा है दे कैन एक्सेस इट अगर मुझे इसको प्रोटेक्ट करना है कि इस स्पेशल पावर को मैं बस क्लास के अंदर ही
यूज कर सकूं तो मुझे बस इसके अंदर एक हैश लगा देना है इससे क्या होगा यह स्पेशल पावर एक प्राइवेट वेरिएबल बन गया जिसको
मैं बस सुपर हीरो क्लास के अंदर ही एक्सेस कर सकता हूं अगर अब मैं यहां पर करूंगा सिल्वर सफर डॉट है स्पेशल पावर तो आई विल
गेट एन एरर प्राइवेट फील्ड स्पेशल पावर मस्ट बी डिक्लेयर्ड इन इन क्लोजिंग क्लास ठीक है कैन नॉट एक्सेस इट नाउ और मैं एक
मेथड को भी प्राइवेट बना सकता हूं गेट स्पेशल पावर कसोल
डलॉग बोट ओके तो अभी अगर मैं इसको कॉल करूंगा तो आई विल अगेन गेट एन एरर अगर मैं इस हैश को हटा दूं तो आई विल नॉट गेट द
एरर सी आई विल गेट द फंक्शन बॉडी लेट मी कॉल इट ओके आई एम गेटिंग बोट
अब अगर मैं चाहता हूं कि मैं अपना ये स्पेशल वेरिएबल वाया फंक्शन एक्सपोज कर सकूं तो आई कैन रिटर्न इट ठीक है मैं यहां
से इसको एक्सेस करके रिटर्न कर सकता हूं अभी मुझे बोट मिल रहा है तो आई कैन गिव सम क्लासेस और बेस्ड ऑन सम कंडीशन की
अगर यहां पर जरूरत है तो दे दो बट सबको मत दो तो यू कैन हैव प्राइवेट क्लास फील्ड एंड प्राइवेट मेथड ठीक है एक थर्ड एक्सेस
मॉडिफाइड में होता है प्रोटेक्टेड जहां पर जो क्लास एक्सटेंड कर रही है वह इसको यूज कर सकती है बस बट
प्रोटेक्टेड का कांसेप्ट जावास्क्रिप्ट में नहीं होता है ओके सो जावास्क्रिप्ट में बस दो चीजें होती हैं प्राइवेट और
पब्लिक बाय डिफॉल्ट क्लास में तुम जितनी भी क्लास फील्ड्स और फंक्शंस बनाते हो वो पब्लिक होते हैं यू कैन मेक देम प्राइवेट
बाय एडिंग अ हैश सिंबल इंटरफेस सो इंटरफेस एक ऐसा कांसेप्ट है जहां पर हम एक इंफॉर्मेशन का यूज करके
बताते हैं कि यह पर्टिकुलर क्लास यह ये चीजें कंटेन करेगी फॉर एग्जांपल जैसे कि यह सुपर हीरो क्लास है
अभी मुझे नहीं पता कि इस सुपर हीरो क्लास में क्या-क्या फंक्शन हो सकते हैं क्या-क्या प्रॉपर्टीज हो सकती हैं बट बाय
यूजिंग इंटरफेस मैं प्री डिफाइन कर सकता हूं कैसे आई कैन क्रिएट अ इंटरफेस यूजिंग इंटरफेस
कीवर्ड और इंटरफेस का नाम फॉर एग्जांपल आई सुपरहीरो और यहां पर मैं स्पेसिफाई कर सकता हूं कि मेरी इस क्लास में क्या-क्या
हो फॉर एग्जांपल एक नेम होगा जिसका टाइप होगा स्ट्रिंग और एक पावर जिसका टाइप होगा
स्ट्रिंग आई कैन क्रिएट अ मेथड गेट पावर जो कि एक फंक्शन टाइप का होगा और आई कैन अटैच दिस आई सुपरहीरो टू दिस क्लास वाया
इंप्लीमेंट्स वर्ड इससे क्या होगा कि मुझे पता रहेगा जो डेवलपर है कि सुपर हीरो क्लास में ये ये
चीजें होंगी अब हम इंटरफेस क्यों लिखते हैं सो इंटरफेस हेल्प्स अस टू डिसाइड कि मैं इस क्लास में क्या-क्या डालूंगा अदर
वाइज सी जब भी कोई हम क्लास बनाते हैं हम बस बना देते हैं बाद में चीजों को ऐड करते रहते हैं तो उससे मेस क्रिएट हो जाता है
इंटरफेस में हम क्लास बनाने से पहले सोचते हैं कि इसमें हम क्या-क्या डालेंगे और हम वह सारी इंफॉर्मेशन को लिखते हैं और फिर
अगेन जिस क्लास में वो चाहिए होती है उसमें हम ऐड कर देते हैं फन फैक्ट जावास्क्रिप्ट में इंटरफेस अभी तक नहीं है
अगर तुम टाइप स्क्रिप्ट में जाओगे तो तुम्हें वहां पर सपोर्ट मिलेगा बट जावास्क्रिप्ट में देयर इज नो इनबिल्ट
सपोर्ट ऑफ इंटरफेस यट यू कैन अचीव इट वाया जेएस डॉक जेस डॉक एक फीचर है लाइक जहां पर हम कुछ स्पेशल कॉमेंट्स का यूज करके
एडिशनल इंफॉर्मेशन प्रोवाइड करते हैं तो मैंने एक छोटा सा एग्जांपल यहां पर प्रिपेयर कर रखा
है यहां पर मैंने सिंप प्लीज सुपरहीरो क्लास में एक एडिशनल इंफॉर्मेशन प्रोवाइड कर दी है वाया सम कॉमेंट्स अब ये जो
कॉमेंट्स हैं दीज आर वेल स्टैंडर्ड्स अगर मैं इस सुपरहीरो क्लास पे अब माउस लेकर जाऊंगा तो आई नो कि भाई यह
इंप्लीमेंट कर रहा है आई सुपर हीरो इंटरफेस और यहां पे एडिशनल इंफॉर्मेशन भी है रिप्रेजेंट्स सुपरहीरो विथ फ्लाइंग
एबिलिटीज जो मैंने यहां पर लिखा है ठीक है अगर मैं इस चीज को यहां से हटा दूंगा तो अब मेरे पास कुछ और चीजें आएंगी जैसे
कि इंटरफेस आई सुपरहीरो प्रॉपर्टी ये प्रॉपर्टी ये मेथड ये जो मैंने यहां पर लिख रखा है तो बाय यूजिंग जेएस डॉक वी कैन
हैव एडिशनल इंफॉर्मेशन अवेलेबल टू आवर क्लास राइट नाउ इंटरफेस आर नॉट इन जावास्क्रिप्ट हम इंटरफेस क्यों यूज करते
हैं जस्ट टू बी क्लियर कि हम इस क्लास में ये ये चीजें ऐड करेंगे ट्स इट ओके नेक्स्ट इज स्टैटिक क्लास स्टैटिक
मेथड एंड स्टैटिक वेरिएबल सो डिफरेंट डिफरेंट लैंग्वेज में स्टैटिक वर्ड अलग तरह से बिहेव करते हैं
फॉर एग्जांपल अगर तुम सी में हो तो सी में स्टैटिक कीवर्ड बोलता है कि अगर तुम एक वेरिएबल को स्टैटिक कीवर्ड का यूज करके
डिक्लेयर करोगे तो उसका इनिश इजेशन बस एक ही बार होता है वह बार-बार इनिश इज नहीं होता ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में
स्टैटिक कीवर्ड का थोड़ा मतलब बदल जाता है स्टैटिक कीवर्ड रिप्रेजेंट करता है क्लास फील्ड्स को लाइक ऐसी इंफॉर्मेशन जो
तुम बस क्लास तक ही रखना चाहते हो फॉर एग्जांपल मैं एक क्लास बनाता हूं सिल्वर
सर्फर और यहां पर मैं एक की बनाता हूं प्लेसेस विजिटेक फंक्शन है फ्लाई
ठीक है कंसोल डॉट लॉग फ्लाइंग टू
प्लेस प्लेस और एक ऑब्जेक्ट बना लेते हैं कंस्ट सिल्वर सर्फर इक्वल टू न्यू सिल्वर सर्फर एंड लेट्स मेक महिम
फ्लाई अर्थ डॉट फलाई
मून और लेट्स डू दिस थिंग लेट्स डू कंसोल डट लॉग सिल्वर सर्फर डॉट प्लेसेस
विटेड सो सी अच्छा यहां पर मैंने पुश नहीं किया ट दिस दिस डॉट प्लेसेस
विड पु सो कोई भी जो इस क्लास को यूज कर रहा है ही कैन नो कि भाई यह सिल्वर सर्फर
कहां-कहां घूम के आया है दिस इज ब्रीच ऑफ प्राइवेसी अगर मैं चाहता हूं किसी इंफॉर्मेशन को बस क्लास तक रिस्ट्रिक्टर
कि वह इंफॉर्मेशन क्लास के बाहर ना जाए ऑब्जेक्ट्स को पता ना चले जैसे कि मेरी ट्रेवल हिस्ट्री मैं नहीं चाहता मेरी
ट्रेवल हिस्ट्री मेरे घर वालों को पता चले या वो कहीं भी भी लीक हो तो उसे बस मैं अपने तक ही सीमित रखूंगा तो ऐसी कोई
इंफॉर्मेशन जो तुम बस क्लास तक ही रखना चाहते हो इस केस में प्लेस है जो दूसरे एग्जांपल है वह हो गया लाइक से आईडी तुमको
यूनिक आईडी जनरेट कर रहे हो या तुम कुछ भी ट्रैक कर रहे हो किसी यूजर का एक यूजर ऑब्जेक्ट तुमने बना लिया बट तुम उसके सारे
बिहेवियर ट्रैक कर रहे हो तुम नहीं चाहते व किसी को मिले तो यू कैन यूज स्टैटिक फील्ड्स स्टैटिक फील्ड बस क्लास्ट तक ही
रहती है सो अभी अगर यहां पर मैं कुछ ऐसा कर दूं स्टैटिक प्लेसेस विजिटेक तो सी कैन नॉट रीड प्रॉपर्टीज ऑफ अनडिफाइंड रीडिंग
पुश ठीक है व्हाई बिकॉज अब ये जो प्लेसेस विजिटेक ऑफ दिस सिल्वर सर्फर क्लास नॉट दी ऑब्जेक्ट यहां प मैं दिस कर रहा हूं तो
दिस में कोई भी प्लेसेस विजिट करके की नहीं होगी जब मैं किसी चीज को स्टैटिक बना देता हूं स्टैटिक फील्ड तो वो चीज मेरे
क्लास पर एजिस्ट करती है अगर मैं इसको कमेंट करूं और यहां पर मैं कंसोल करूं कसोल
डलॉग सिल्वर सर्फर क्लास डॉट प्लेसेस विजिटेबल बनाता हूं वह सिंपली मेरे क्लास
में अटैच हो जाती है इट्स जस्ट लाइक डूइंग दिस सिल्वर सफर डॉट प्लेसेस टू विटेड इ टू य मैं य फॉर्मेशन इंस्टेंस को नहीं देना
चाहता हूं मैं बस एक क्लास तक ही रखना चाहता हूं ओके जस्ट टू ट्रैक कि मेरा जितने भी मेरे ऑब्जेक्ट बने हैं सिल्वर
सर्फर के वह कहां-कहां गए हैं फॉर एग्जांपल मैं मैं पूरे यूनिवर्स को ट्रैक करना चाहता हूं पूरे यूनिवर्स में कितने
भी सिल्वर सर्फर हो सकते हैं वह सारे जहां जहां जाए मुझे पता हो तो वह चीज मैं अपने पास रखना चाहता हूं ओके और अगर मुझे
स्टैटिक फील्ड को एक्सेस करना है तो नाउ आई हैव टू डू दिस इंस्टेड ऑफ दिस आई हैव टू यूज क्लास नेम
ओके और टू एक्सेस इट वी कैन नॉट एक्सेस इट ऑन ऑब्जेक्ट अभी मैं इसे रन करूंगा तो मुझे अनडिफाइंड मिलेगा अब अगर मुझे इसको
एक्सेस करना है तो आई हैव टू एक्सेस इट ऑन क्लास सी आई एम गेटिंग इट सो स्टैटिक फील्ड हम यूज करते हैं ऐसी इंफॉर्मेशन जो
बस में क्लास तक ही रखना चाहता हूं ऑब्जेक्ट्स को देना नहीं चाहता हूं ओके जिस तरह से
फीड उसी तरह से स्टैटिक मेथड्स होते हैं अभी अगर मैं इस फ्लाई को स्टैटिक बना दूं तो अब मुझे इस फ्लाई को कॉल करने के लिए
मुझे इस क्लास का ऑब्जेक्ट नहीं बनाना पड़ेगा सी अभी मुझे एरर आने लगी फ्लाई इज नॉट अ फंक्शन अब मैं इस फ्लाई को विदाउट
ऑब्जेक्ट कॉल कर सकता हूं ठीक फ्लाइंग टू अनडिफाइंड यहां पर मैं कुछ पास कर देता हूं
ओके तो अब सवाल उठता है मैं ऐसा क्यों करूंगा भाई मैं क्यों किसी क्लास का बिना ऑब्जेक्ट बनाए फंक्शन को कॉल करूंगा तो कई
बार हम ना कुछ यूटिल्स या यूटिलिटी टाइप की चीजें करते हैं फॉर एग्जांपल ट्रांसफॉर्मेशन ऑफ
डटा इंटी जर से स्ट्रिंग में कन्वर्ट करना इन सब चीजों एरर को हैंडल करते टाइम भी हम करते
हैं इसका यूज स्टिक में बैक एंड ओके ओके सो ऐसी इंफॉर्मेशन या ऐसी चीजें जहां पर मुझे ऑब्जेक्ट का इंस्टेंस नहीं
चाहिए मेरे केस में मैं स्टैटिक तब यूज करता हूं जब मैं कोई यूटिलिटी बना रहा हूं स्टैटिक मेथड में बहुत कम बनाता हूं मैं
स्टैटिक क्लास बनाता हूं ठीक है सो अगेन स्टैटिक कीवर्ड जब हम फील्ड को बनाते हैं तो वह बस क्लास तक अवेलेबल रहती है जब हम
मेथड को स्टैटिक बनाते हैं तो उसको कॉल करने के लिए हमें इंस्टेंस नहीं बनाना पड़ता क्लास का वी कैन डायरेक्टली कॉल इट
बाय द नेम ऑफ क्लास और अगर तुम स्टैटिक मेथड के अंदर दिस को एक्सेस करोगे ओके तो इट विल बी दी इट विल बी दी
क्लास इट सेल्फ ठीक है जैसे तुम्हारी क्लास यहां पर आ रही है तुम्हारी पूरी क्लास की बॉडी है ओके यहां पर तुम्हें
इंस्टेंस ऑब्जेक्ट नहीं मिलेगा अब मैं प्रेफर करता हूं स्टैटिक क्लास ठीक है स्टैटिक क्लास ये स्टैटिक
क्लासेस मैंने बनाई थी जब मैं आईओएस डेवलपमेंट करता था बिकॉज ऑब्जेक्टिव सी वाज टोटली ऑब्जेक्ट ओरिएंटेड वहां पर हमें
यूटिलिटीज बनानी पड़ती थी हेल्पर क्लासेस बनानी पड़ती थी टू ट्रांसफॉर्म डटा और टू राइट जेनरिक यूटिलिटी सो फॉर एग्जांपल
मुझे एक यूट फाइल बनानी है सो बाय डिफॉल्ट जावास्क्रिप्ट में नहीं है स्टैटिक क्लासेस का सपोर्ट बट स्टैटिक क्लास हम तब
बनाते हैं जब हमें कोई यूटिलिटी लिखनी होती है हम जो बनाते थे स्टैटिक क्लास वो सिर्फ हेल्पर फंक्शन होते थे जैसे कि
ट्रांसफॉर्म डेट इन फॉर्मेट लाइक से कोई मुझे कस्टम डेट आती थी मुझे उसे इस फॉर्मेट में दिखाना होता था अब यह फंक्शन
तो कई जगह यूज होगा तो ओओ में हम यूटिलमन के फंक्शन हो गए उसके लिए तुमने अलग से यूट बना दी स्टैटिक क्लास स्ट्रिंग
यूटिलमन कॉल करना है तो ऑब्जेक्ट बनाने की जरूरत नहीं है आई कैन सिंपली डायरेक्टली कॉल इट
लाइक दिस ट्स इट यह एक तरीका होता है ओओ पी में चीजों को रीयूज करने का नॉर्मल
जावास्क्रिप्ट में हम बस एक फाइल में एक्सपोर्ट कॉन एक्सपोर्ट कॉनस कर देते हैं ऐसा समझ ये उसी का इक्विवेलेंट है ओओ में
ठीक है एरो फंक्शन ओके सो आई थिंक हमने मेनली चीजें कवर कर ली है अब यहां पर यह जो दो
चीजें है ना द दीज टू थिंग्स आर वेरी इंपॉर्टेंट एरो फंक्शंस शूज विद दिस इन क्लासेस हाउ जेएस ऊप्स इज डिफरेंट फ्रॉम
ओओ तो पहले मैं दिस का इशू बता देता हूं अब ये दिस के इशू केलिए मैंने सैटरडे क्लास रखी है तो अगर दिस क्लियर नहीं होगा
तो यू गाइस कैन जवाइन अब देखो जावास्क्रिप्ट में जो दिस कीवर्ड है वह बहुत ही नोटोरियस है दिस की वैल्यू कभी
फिक्स नहीं होती है अभी अगर यहां पर कुछ मैं ऐसा करूं क्लास पावर या ठीक है इसे रन करके देखते हैं लेट्स सी आई गेट बोट नाइस
इट इज वर्किंग कंपलीटली फाइन बट लेट्स डू अनदर वेरिएशन ऑफ इट इंस्टेड ऑफ सी यहां पर मैं एक एरो फंक्शन
पास कर रहा हूं राइट है ना बेसिकली सेट टाइम आउट एक कॉल बैक फंक्शन लेता है उस कॉल बैक फंक्शन को
थोड़े टाइम बाद कॉल कर लेता है यहां पर तो मैं टेंडेंट काम कर रहा हूं आई कैन ड डू दिस
राइट मैं सिंपली फंक्शन ही ना भेज दू मैं क्यों फालतू में एरो फंक्शन क्रिएट करूं नाउ लेट्स दिस नाउ लेट्स ू दिस लेट्स
रन दिस एंड लेट्स सी द आउटपुट बोट एंड अनडिफाइंड वई इज
दैट क्लासेस में भी दिस के इश्यूज है यहां पे अब दिस का रेफरेंस लॉस्ट हो गया है क्यों क्योंकि दिस की वैल्यू डिपेंड करती
है कैसे हम फंक्शन को कॉल करते हैं अभी मैंने सेट टाइम आउट में सिंपली य गेट सुपर पावर को पास कर दिया है एज इट इज इस तरह
से समझ लो उठा के डाल दिया अब जब ये गेट सुपर पावर कॉल होगा तो विंडो पर कॉल होगा और वहां पर सुपर पावर है ही नहीं तो
अनडिफाइंड आ गया इस प्रॉब्लम को फिक्स करने के लिए हमारे पास दो तरीके हैं सबसे पहला तरीका इंप्लीमेंट अ
कंस्ट्रक्टर एंड अटैच दिस कीवर्ड टू गेट सुपर पावर परमानेंटली यूजिंग बांड दिस डॉट डॉट बांड
एंड दिस लेट्स रन इट आफ्टर टू सेकंड आई विल गेट द बोट क्योंकि अब मैंने परमानेंटली दिस की वैल्यू को
बाइंडर दिया दिस इ फर्स्ट सॉल्यूशन व्हाट इस सेकंड सॉल्यूशन यूज एरो फंक्शन एरो फंक्शन में ऐसा क्या स्पेशल है बिकॉज एरो
फंक्शन में जो दिस की वैल्यू है दैट इज नॉट डिपेंडेंट ऑन हाउ यू कॉल द फंक्शन इट्स ऑलवेज दी वैल्यू ऑफ इट्स पैरेंट सो
यहां पर गेट सुपर पावर का पैरेंट कौन है दिस क्लास इट सेल्फ ओके सो दिस इज द इशू विद दिस एंड हाउ एरो फंक्शन सॉल्व इट ओके
सो दिस इज द मोस्ट इंपॉर्टेंट थिंग टू रिमेंबर व्हेन यू वर्क विद क्लासेस इसके बारे में कैसे
बाइंड्स सेशन में डिस्कस करेंगे एंड नेक्स्ट इज हाउ जेएस ऊप्स इज डिफरेंट फ्रॉम नॉर्मल ओओ सो दिस इज वेरी
इंपॉर्टेंट जावास्क्रिप्ट इज अ प्रोटोटाइप बेस्ड लैंग्वेज प्रोटोटाइप इज अ वेरी रंगली नेम वर्ड अगेन इसको मैं अभी बिल्कुल
एक्सप्लेन नहीं करूंगा ट्रेडिशनल ओपी सिस्टम में क्या होता है यू क्रिएट अ
क्लास सुपरहीरो ओके एंड यहां पर एक फंक्शन है दिस इज हाउ ओओ सिस्टम वर्क्स इन अदर
प्रोग्रामिंग लैंग्वेजेस लाइक c+ प्स जावा सी शॉप देयर इज
अ क्लास दैट डिफाइंस व्ट शुड बी इनसाइड दी क्लास एंड जो भी उससे ऑब्जेक्ट बनेंगे वंस यू हैव
क्रिएटेडटेड तुम अपने रास्ते मैं अपने रास्ते फॉर एग्जांपल मेरे फादर हैं एंड मैं हूं
अब मैं उनका ऑब्जेक्ट हुआ फॉर एग्जांपल माय पेरेंट इज माय क्लास माय फादर इज माय क्लास मैं उनसे एक्सटेंड हुआ मैंने अपने
आप को बनाया अब अगर कल को मेरा हाथ टूटता है तो मेरे पापा का हाथ नहीं टूटेगा अगर मेरे पापा का पांव फ्रैक्चर होता तो मेरा
पाउन ही फ्रैक्चर होगा वी बोथ आर टू सेपरेट एंटिटीज हमारे बीच में कोई लिंक नहीं है दिस इज हाउ अदर ओओ पी सिस्टम
वर्क्स अगर मैं इसका एक रियल लाइफ एग्जांपल दूं
ब्रिक ब्रिक फैक्ट्री मेकिंग जस
ब्रिक मोल्ड यस सो जो ईंट बनती है व इस मोल्ड से बनती है दिस इज अ क्लास दिस मोल्ड इज अ
क्लास अब मैं इस मोल्ड से जितनी भी ईट बनाऊंगा जब ईंट बन गई उस ईट का क्या होता है मुझे उससे फर्क नहीं है अगर ईट बनने के
बाद यह मोल्ड टूट भी गया या मैंने इस मोल्ड में कुछ चेंज कर दिया तो मेरा ऑब्जेक्ट नहीं बदलने वाला मेरा ईट नहीं
बदलने वाली बट जावास्क्रिप्ट के केस में ऐसा नहीं होता बिकॉज जावास्क्रिप्ट इज अ प्रोटोटाइप
बेस लैंग्वेज और प्रोटोटाइप का यहां बहुत ही सिग्निफिकेंट है प्रोटोटाइप वर्ड इज अगेन रंगली नेम ठीक है सो अभी अगर मैं
यहां पर कुछ ऐसा करू क्याय डांस करेगा यह कहां पर रर है सुपर हीरो कैन नॉट बी
इवोक अनकट टाइप एरर आयरन मैन डांस इ नॉट अ फंक्शन दिस इ हाउ अदर प्रोग्रामिंग लैंग्वेजेस वर्क ओके मैंने ऑब्जेक्ट बनाया
सारा लिंकेज उकेज खत्म बट व्ट इफ आई डू दिस सी आई एम डांसिंग जावास्क्रिप्ट में जो ऑब्जेक्ट्स
बनते हैं या जो ओओ पी होता है वह बहुत ही अलग चलता है ऑब्जेक्ट बनने के बाद भी वह अपने पेरेंट से कनेक्टेड रहते हैं अगर
पैरेंट में भी कुछ चेंजेज होंगे तो दे आर लिसनिंग दे विल अडेप्ट टू इट ओके सो दिस इज द मेन डिफरेंस बिटवीन
स्टैटिक लाइक से स्टैटिक इन्हेरिटेंस स्टैटिक ओओ वर्सेस जावास्क्रिप्ट ओओ दिस प्रोटोटाइप इज द डिफरेंस दिस प्रोटोटाइप
इज द गेम चेंजर ओके सो अगेन वी विल डिस्कस इट इन लेटर कि ऐसा क्या हो रहा है यहां पे सो विद दैट सेड आई
थिंक वी हैव कंप्लीटेड ऑल ऑफ द थिंग्स
I began coding in 2008 during my 11th grade, and my first programming language was Visual Basic. I created simple applications like movie booking systems, which helped me get a grasp of basic programming concepts.
Initially, I struggled with OOP concepts like classes and inheritance, finding them confusing and irrelevant. However, my experience as an iOS developer using Objective-C clarified these concepts for me, especially after discovering Alan Kay's definition of OOP.
The key OOP concepts I learned include classes and objects, encapsulation, inheritance, and polymorphism. These principles are crucial for effective programming as they help in organizing code, promoting reusability, and making it easier to manage complex systems.
JavaScript implements OOP in a prototype-based manner, which differs from the class-based approach of languages like Java and C#. This means that in JavaScript, objects can inherit directly from other objects, which has unique implications for how OOP is utilized.
I recommend checking out the 'Comprehensive Guide to Object-Oriented Programming (OOP) in C++' for a deeper understanding of OOP concepts. Additionally, for those interested in Java, the 'Java Programming: A Comprehensive Guide to Understanding Java and Its Concepts' is a great resource.
For beginners struggling with OOP, I suggest focusing on real-world applications of the concepts. Practice by creating small projects that utilize OOP principles, and don't hesitate to seek out resources or tutorials that explain these concepts in simpler terms.
Understanding OOP principles is essential for effective programming because they provide a framework for organizing code, enhancing reusability, and simplifying the management of complex systems. Mastering these concepts can significantly improve your coding skills and project outcomes.
Heads up!
This summary and transcript were automatically generated using AI with the Free YouTube Transcript Summary Tool by LunaNotes.
Generate a summary for free
