OOPS Concepts in JavaScript: JavaScript एक Object Oriented Scripting Language है। इसलिए Object Oriented Programming System के Fundamental को समझे बिना हम JavaScript को बेहतर तरीके से नहीं समझ सकते। इसलिए पहले हम Object Oriented Programming System के Basic Elements को समझने की कोशिश करेंगे, जो कि निम्नानुसार हैं:
- Object (Method and Property)
- Class
- Encapsulation
- Aggregation and Composition
- Reusability or Inheritance
- Polymorphism
Objects
दुनियां की किसी भी वस्तु (Physical or Logical) को हम Object मान सकते हैं। Object वास्तव में किसी चीज का एक Representation होता है और इस Representation को किसी Programming Language की मदद से Express किया जाता है। Object कुछ भी हो सकता है। ये कोई Physical Car हो सकता है अथवा कोई Logical Bank A/c हो सकता है। यानी हम किसी भी चीज को एक Object मान सकते हैं।
हर Object Basically दो मूल भूत चीजों का बना होता है, जिन्हें Properties व Methods के नाम से जाना जाता है। यानी दुनियां के हर Object की कुछ Characteristics हो सकती हैं, जिन्हें उसकी Appearance व Stat के रूप में जाना जाता है। जैसे Height, Width, Length, Color, Name आदि। जबकि दुनियां कर हर Object किसी न किसी तरह का Action Perform करता है। Object द्वारा Perform किए जा सकने वाले Actions को Object का Method कहते हैं। जैसे उठना,बैठना,चलना,गायब होना आदि।
यदि हम Object को एक Analogy द्वारा समझने की कोशिश करें, तो Book एक Object है। Book के Pages की संख्या, Author का नाम, Book की Price आदि Book की Properties हैं और Book को खरीदा जा सकता है, बेचा जा सकता है, आदि उस Book के Methods हो सकते हैं।
यदि Programming Language की भाषा में समझें तो Window, Menubar, Toolbar, Button आदि सभी Objects के उदाहरण हैं। इन सभी Object की कुछ न कुछ Properties हैं। उदाहरण के लिए Button एक Object है और Button पर दिखाई देने वाला नाम, उस Object की एक Property है। जबकि Button को Click करने पर Button पर दिखाई देने वाले नाम का Change हो जाना, Button का एक Method है जबकि Click होना एक Operating System Event है।
Class
दुनियां के सभी Object किसी न किसी एक Group से संबंधित होते हैं। यानी हम दुनियां के सभी Objects को Categorized कर सकते हैं। उदाहरण के लिए दो पैरों पर चलने वाले जीवों को हम Human Being Class का Object मान सकते हैं जबकि चार पैरों वाले जीवों को हम Animal Class का Object मान सकते हैं। यानी Class वास्तव में एक Blueprint या Description या Prototype या Modal होता है और उस Prototype या Modal को Follow करने वाली सभी चीजें उस Class का Object होते हैं।
Object का दूसरा नाम Instance भी है, इसलिए यदि हम चाहें तो ऐसा भी कह सकते हैं कि Rohan नाम का व्यक्ति Human Being Class का Object है क्योंकि उसमें Human Being Class की Description के सारे Features हैं। या फिर हम Rohan को Human Being Class का Instance भी कह सकते हैं।
Class वास्तव में एक प्रकार का Description या Blueprint मात्र होता है। इसलिए एक बार Class Define कर लेने के बाद हम उस Class के जितने चाहें उतने Object या Instance Create कर सकते हैं। ठीक उसी तरह से जिस तरह से हम किसी घर का Blueprint Create कर लेने के बाद उस Blueprint के आधार पर जितने चाहें उतने एक समान घर Create कर सकते हैं।
चूंकि Object Oriented Programming System केवल एक Concept है और इस Concept को जिस Programming Language में Implement किया जाता है, उस Programming Language को Object Oriented Programming Language कहा जाता है। लेकिन इसका मतलब ये नहीं है कि सभी Object Oriented Programming Languages एक समान OOPS Pattern को Follow करें।
इसीलिए JavaScript जिस Object Oriented Programming Pattern को Follow करता है, उसे Prototypes Pattern के नाम से जाना जाता है और इस Pattern में ठीक उसी तरह की Class Create नहीं होती है, जैसी Classical Object Oriented Programming Languages C++ व Java में होती है। बल्कि JavaScript में हर Object किसी दूसरे Object के आधार पर बनता है क्योंकि एक Object के सभी Features बनने वाले हर नए Object में होते हैं। इसलिए जिस Object के आधार पर नया Object Create होता है, उस मूल Object को सभी अन्य Object के Prototype के रूप में Represent किया जाता है।
यानी C++ या Java जैसी Languages में हम एक Class Create करते हैं और फिर उस Class का Instance Create करते हैं, जो कि Object को Represent करता है। जबकि JavaScript में हम एक Object Create करते हैं और फिर उस Object का एक नया Instance Create करते हैं जो कि ठीक वैसा ही Object होता है, जैसा पहला वाला Object था। यानी JavaScript में एक Object किसी दूसरे Object के लिए Blueprint या Description या Class या Prototype या Modal का काम करता है।
Encapsulation
ये OOPS का एक ऐसा Concept है जिसमें इस बात को Represent किया जाता है कि एक Object वास्तव में Properties व Methods के Combination का एक Unit होता है। यानी दुनियां का कोई भी Object ऐसा नहीं हो सकता, जिसके केवल Characteristics हों और Methods न हों। यानी Object की Appearance व Stat हो लेकिन वह Object कुछ काम न करता हो।
सरल शब्दों में कहें तो दुनिया के हर Object की कुछ न कुछ Properties होती हैं और हर Object कुछ न कुछ काम करता है। Object की Properties को हम Object का Data कह सकते हैं जबकि Object अपने Data पर जिन Operations को Perform कर सकता है, उन Operations को हम Object का Method कह सकते हैं।
चूंकि कोई भी Object हमेंशा Properties व Methods यानी Data व Data पर Perform होने वाले Operations दोनों का एक Combined Unit होता है। इसलिए Programming Language में भी Object की Properties व Methods को एक Unit के रूप में Define किया जाता है।
किसी Object की Properties व Methods को एक Unit के रूप में Define करने की प्रक्रिया को Encapsulation कहा जाता है। यानी Encapsulation को Programming Term के रूप में हम निम्नानुसार Specify कर सकते हैं:
- Data (Stored in Properties)
- Operations to Perform on Data (Methods)
OOPS Based Object Oriented Programming Languages में Encapsulation करने का मूल उद्देश्य Data Hiding करना होता है, ताकि किसी Object के Data पर केवल उसी Object के Methods Operation Perform कर सकें।
Aggregation or Composition
जब बहुत सारे Objects को आपस में जरूरत के अनुसार Combine करके एक नया Object Create किया जाता है, तो इस प्रक्रिया को Object Oriented Programming System में Aggregation या Composition कहा जाता है।
Aggregation एक ऐसी प्रक्रिया है, जिसमें किसी समस्या से संबंधित विभिन्न Objects को कई छोटे-छोटे Objects में Divide कर दिया जाता है, ताकि उन्हें Manage व Develop करना आसान रहे। फिर उन सभी Objects को आपस में Combine करके Problem को बेहतर तरीके से Solve किया जाता है।
उदाहरण के लिए एक Computer System बहुत सारे Units जैसे कि Keyboard, Mouse, Monitor, Micro Processor, RAM, Motherboard आदि का बना हुआ Complex Unit है। हालांकि हम Computer System को एक Single Object के रूप में Identify करते हैं। लेकिन Internally ये बहुत सारे अन्य छोटे-छोटे Objects का Combination होता है। यही है Aggregation या Composition, जिसमें बहुत सारे स्वतंत्र Unit या Objects आपस में मिलकर एक ज्यादा Complex Object Define करने में सक्षम होते हैं।
Inheritance or Reusability
Inheritance एक ऐसी प्रक्रिया है, जिसको Use करके हम समान प्रकार के Codes बार-बार Create करने के बजाय उन्हें एक बार Create करके बार-बार Reuse करने में सक्षम हो पाते हैं।
उदाहरण के लिए यदि हम एक Watch Object Create करने के लिए Code लिखते हैं, जिसमें केवल Hour व Minutes को Handle किया जाता है और भविष्य में हमें ऐसे Watch Object की जरूरत पडती है, जिसमें Hour व Minutes के साथ Seconds को भी Handle करना है। तो हमें पूरा Code फिर से लिखने की जरूरत नहीं होती है। बल्कि Hour व Minutes को Handle करने की Functionality को हम पिछले Codes को ज्यों का त्यों Reuse करते हुए प्राप्त कर लेते हैं और हमें केवल Seconds को Manage करने के लिए ही नया Code लिखने की जरूरत पडती है।
इस प्रकार के Coding Pattern को प्राप्त करने की सुविधा हमें Object Oriented Programming System के Inheritance या Reusability Concept से प्राप्त होती है।
Classical Object Oriented Programming Language में हम Class को Inherit करके ये सुविधा प्राप्त करते हैं। लेकिन चूंकि JavaScript Prototype Pattern Based Object Oriented Programming Language है, इसलिए इसमें ये सुविधा प्राप्त करने के लिए हमें एक Object को किसी दूसरे Object से Inherit करना पडता है।
Polymorphism
“Single Statement Multiple Form” Polymorphism को Represent करने का One Line Statement है। इस Concept के अन्तर्गत विभिन्न प्रकार की Classes के Objects के लिए समान Methods को Call किया जाता है। लेकिन सभी Objects के लिए उनकी Class के Methods Call होते हैं।
यानी Program में Create किए जाने वाले विभिन्न Class के Objects के लिए Call किए जाने वाले Methods का नाम तो समान होता है। लेकिन जब Object के लिए Dot Operator का प्रयोग करते हुए समान नाम के Method को Call किया जाता है, तो Object जिस Class का होता है, उस Object के लिए उसी Class का Method Call होता है न कि किसी दूसरे Object की Class का।
इस प्रकार से एक ही Program Code Statement अलग-अलग Object के लिए अलग-अलग परिस्थिति में अलग-अलग Method को Call करता है। इस प्रक्रिया को Polymorphism कहा जाता है।
यदि हम उपरोक्त सभी Concepts को एक सामान्य उदाहरण द्वारा समझने की कोशिश करें, तो इस प्रकार से समझ सकते हैं कि मानलो :
Rahul एक व्यक्ति (Object) है। | Object |
Rahul का Date of Birth 10 Jan 1980, रंग गोरा, वजन 60KG है। | Properties |
Rahul चल सकता है, बात कर सकता है, सो सकता है। | Methods |
Rahul Programmer Class का एक Instance है। | Class Pattern (in Classical OOP) |
Rahul Programmer Object पर आधारित दूसरा Object है। यानी जो Rohit है वही Rahul है, जबकि Rohit एक Programmer है, इसलिए Rahul भी Programmer है। | Prototype Pattern (in Prototype OOP) |
Rahul की एक Date of Birth (Data) हैं, जिसके आधार पर वह अपनी उम्र Calculate (Method) करता है। | Encapsulation |
Rahul अपनी उम्र कैसे Calculate करता है, इसकी जानकारी Rahul के अलावा किसी को नहीं है, क्योंकि Rahul की Date of Birth केवल Rahul को ही पता है। | Data Hiding |
Rahul Web Development Team Object का हिस्सा है, जिसमें Rajesh और Mukesh भी काम करते हैं। | AggregationComposition |
Rahul, Rajesh and Mukesh तीनो Person Object पर आधारित हैं। | Inheritance |
Rahul:Talk, Rajesh:Talk व Mukesh:Talk के रूप में हम तीन अलग Person Object के लिए Talk नाम का समान Method Call कर सकते हैं। लेकिन हम जिस Object के साथ इस Method को Call करते हैं, वह Object Talk यानी बात करता है। | Polymorphism Method Overriding |
उपरोक्त सभी Concepts, Object Oriented Programming System के Concepts हैं। यदि उपरोक्त सारांश सारणी से भी आपको Object Oriented Programming System का Basic Concepts ठीक से समझ में न आए हों, तो इन Concepts को बेहतर तरीके से समझने के लिए आप हमारी अन्य पुस्तकें “C++ Programming Language in Hindi” व “Java Programming Language in Hindi” को पढ सकते हैं। इन दोनों पुस्तकों में Object Oriented Programming Concepts को बहुत ही Detail में समझाया गया है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Advance JavaScript in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Advance JavaScript in Hindi | Page: 669 | Format: PDF