Class and Object in Java: किसी Objects के एक समूह (Entity Set) को लीजिए। आप देखेंगे कि उन सभी में कुछ ऐसी बातें हैं, जो सभी Objects को समान रूप से प्रभावित करती हैं। ये वही विशेषताएं होती हैं जो किसी Object को किसी दूसरे Object से अलग बनाती हैं। इन विशेषताओं को Attributes कहा जाता है।
हर Object किसी ना किसी Class का एक Instance या सदस्य होता है। किसी Entity Set के ये Attributes ही उनकी Class के Features होते हैं। जैसे यदि हम एक Book को ही लें तो Book की अपनी एक Class हो सकती है, जिससे हम दुनिया की किसी भी Book को Describe कर सकते हैं।
अब इस Book की Class के Features वही होंगे जो किसी एक Book के Features हैं। Book की ऐसी कौनसी Properties हो सकती हैं, जो एक Book को दूसरे किसी Object से अलग बनाती हैं? इसके सवाल के जवाब में हम किसी Book को निम्न Properties द्वारा परिभाषित कर सकते हैं:
- हर Book का एक नाम होता है।
- हर Book का एक Author होता है।
- हर Book किसी ना किसी Publication से प्रकाशित होती है।
- हर Book का एक ISBN Number होता है, जिससे उस Book की Unique पहचान होती है।
- हर Book में कुछ Pages होते हैं।
- हर Book की कुछ कीमत होती है।
इसी तरह से Book की कई और Characteristics हो सकती हैं। ये सभी Characteristics उस Book Object की Class के Features होते हैं। इन्हीं Features को Book Class के Attributes भी कह सकते हैं। यदि हम इस Book की Description को Class के Modal के रूप में Describe करें तो इस Book Object की Class को निम्नानुसार Represent कर सकते हैं:
Book’s Attributes Description (Book Class) bookName bookAuthor bookPublication bookISBN bookPages bookPrice
किसी Class के Attributes किसी Object की Appearance, State व Condition के आधार पर तय होते हैं। यानी किसी Class की Description के Attributes इस तथ्य पर आधारित होते हैं कि उस Class के Object किस प्रकार के दिखाई देते हैं और उनके Objects की स्थिति (Position or Situation) क्या हो सकती है। किसी Object के इन Appearance व State की विभिन्न Description ही उस Object को दुनिया के सभी Object से अलग पहचान प्रदान करती है। उदाहरण के लिए इस Book Class को ही लेते हैं। हम इस Book Class का एक Object Create करके उसके विभिन्न Attributes को निम्नानुसार मान प्रदान कर सकते हैं-
Book’s Attributes Description (Book Class) bookName = B with Java in Hindi bookAuthor = Kuldeep Mishra bookPublication = Publication bookISBN = 010101010101 bookPages = 600 bookPrice = 300
ये सभी Fields Book की State यानी Situation बता रहे हैं। यानी Book का नाम “B with Java in Hindi” है, जो कि Book की एक स्थिति है।
इसी तरह से Book की Price 300 है, ये भी Book की स्थिति को Represent कर रहा है। यदि हम Car का उदाहरण लें, तो Car का Color व Car की Size Car के Appearance को Represent करता है। यानी ये बताता है कि Car दिखाई कैसी देती है। जबकि Car का नाम State या Situation को Represent करता है, जो ये बताता है कि Car की स्थिति क्या है यानी Car बनाने वाली Company की Market में अच्छी साख है या कोई साधारण Company है।
Class की Common Descriptions उसकी Class के सभी Objects के लिए समान होती हैं और Object की ये Common Descriptions एक Object को दुनिया के किसी भी अन्य Object से अलग बनाती हैं। जैसे एक Car और एक Book दोनों अलग Object हैं। Car को Car Class के Attributes से पहचाना जाता है, जबकि Book को Book Class के Attributes से। Class किसी भी एक Object से दूसरे Object को अलग Represent करने का एक Description होता है जबकि एक Object की उसी Class के दूसरे Objects से अलग पहचान Object के Features या Attributes को प्रदान किए जाने वाले मान पर निर्भर होती है।
यानी यदि एक Book का नाम “B with C In Hindi” है और दूसरी Book का नाम “B with OOPS through C++ In Hindi” है, तो ये दोनों ही Books Book Class की सदस्; हैं, लेकिन दोनों ही Books अलग Objects को Represent कर रही हैं, क्योंकि दोनों के bookName Attribute के मान या Data में अन्तर है।
Class एक Secondary User Defined Data Type होता है, जिसे एक Programmer दुनिया के Actual Objects को Computer में Logically Represent करने के लिए Create करता है। जब किसी Object को Computer में Logically Represent करने के लिए Class की Description या Class के Modal को तैयार कर लिया जाता है, तब उस Class को Computer में Programming Language के अनुसार Define किया जाता है।
Class को Logically Computer में Define करने के बाद उस Class के Objects Create किए जा सकते हैं और उनके साथ उसी प्रकार से काम किया जाता है, जिस प्रकार से किसी Real World Object के साथ काम किया जाता है। Java में एक Class Create करने के लिए हम निम्न Syntax का प्रयोग करते हैं:
Class Defining Syntax <Access Specifier> <Modifiers> class ClassName { //Attributes of the Objects //Behaviors of the Objects }
Access Specifier व Modifiers के बारे में हम आगे पढेंगे। यहां हम केवल Class Create करने के Basic Concepts को समझेंगे। class Java का एक Keyword है। किसी Class को Computer में Create करने के लिए इस Keyword का प्रयोग किया जाता है। इस Keyword के बाद एक Programmer का अपनी Class का नाम देना होता है। ये वही नाम होता है जिसके आधार पर Programmer अपने Program में उस Class के Instances या Objects Create करता है।
यदि हम हमारी Book व Car Class के सन्दर्भ में देखें तो यहां हमें Book या Car लिखना होता है। ये एक Identifier होता है इसलिए Identifier को नाम देने के लिए जिन नियमों का Java में पालन करना होता है, उन नियमों का पालन यहां भी करना होता है।
यानी हम केवल Small व Capital Letters का प्रयोग या Underscore व $ चिन्ह का प्रयोग अपनी Class के नाम में कर सकते हैं। यदि हमें अंकों का प्रयोग करना हो तो वह अंक Class के नाम की शुरूआत में नहीं आ सकता। Class का नाम देने के लिए भी Java में एक नियम का पालन किया जाता है।
हालांकि यदि इस नियम का पालन ना भी किया जाए, तो भी Program पर कोई प्रभाव नहीं पडता लेकिन फिर भी इस नियम का पालन करना चाहि, और इसका नियम ये है कि जिस प्रकार से एक Variable का नाम हमेंशा Small Letter से शुरू किया जाता है उसी तरह से एक Class का नाम हमेंशा Capital Letter से शुरू करना चाहिए। यदि नाम में एक से अधिक शब्द हों, तो हर शब्द का पहला Character Capital Letter का ही लिखना चाहिए।
हम एक बार फिर से Student का उदाहरण ही लेते हैं। एक Student के Record को हम Class के रूप में Describe कर सकते हैं। Student की विभिन्न जानकारियों के वे Fields जिनकी School के Principal को जरूरत है वे निम्नानुसार हैं:
- Student का नाम
- Student के पिता का नाम
- Student का Address
- Student की City
- Student की तहसील
- Student का जिला
- Student का State
- Student की Class
- Student के Contact Number
- Student की Date of Birth
- Student की School में Join करने की Date of Admission
- Student की Age
- Student का Serial Number
- Student की जाति
ये Description किसी भी Student के उन Fields को Represent करते हैं, जिनकी School के Principal को जरूरत है। यदि हम इन Description को सामान्य Fields में Convert करें तो हमें निम्नानुसार विभिन्न Fields प्राप्त होते हैं, जिनको Combined रूप में देखने पर Principal को किसी Student के बारे में वे सभी जानकारियां प्राप्त हो सकती हैं, जिन्हें उस School का Principal जानना चाहता है:
- studentName
- studentFName
- studentAddress
- studentCity
- studentTehsil
- studentDistrict
- studentState
- studentClass
- studentContactNumber
- studentDateOfBirth
- studentDateOfAdmission
- studentAge
- studentSerialNumber
- studentCast
चूंकि Student एक Real World Object है और इसे Computer में Logically Represent करना है, इसलिए हमें इसे Class द्वारा Represent करना होगा। चूंकि Student की सभी Basic जानकारियों के Fields जिनकी School के Principal को जरूरत है, हमारे पास Student Class की Description के रूप में उपलब्ध है, इसलिए हम इन्हीं Attributes का प्रयोग Student Class के लिए कर सकते हैं। लेकिन इससे पहले हम किसी Student के इन सभी Fields को मान प्रदान करते हैं। ये मान निम्नानुसार प्रदान किए जा सकते हैं:
- studentName = Bal Gopal
- studentFName = Nandlal
- studentAddress = Bedal Road
- studentCity = Falna
- studentTehsil = Bali
- studentDistrict = Pali
- studentState = Rajasthan
- studentClass = 10th
- studentContactNumber = 9352768938
- studentDateOfBirth =06/03/1982
- studentDateOfAdmission = 03/07/1996
- studentAge = 15
- studentSerialNumber = 1234545
- studentCast = Brahmin
हम देख सकते हैं कि एक Student के विभिन्न Attributes को मान यानी Data प्रदान किया जा सकता है। चूंकि हम जानते हैं कि Computer में मानों को Store करने के लिए Variables का प्रयोग किया जाता है, इसलिए इस Record के आधार पर हम समझ सकते हैं कि Student के हर Attribute को Computer में Store करने के लिए हमें एक Variable की जरूरत होगी।
अब Variable किस Data Type का होगा, ये हम उपरोक्त Record में Fill किए गए मानों के आधार पर तय कर सकते हैं। चलिए इस Record के विभिन्न Attributes को Class में Describe करने के लिए हर Attribute का Data Type तय करते हैं।
हमेंशा Data Type तय करते समय हमें सबसे पहले ये तय करना होता है कि किसी Field का या किसी Attribute का मान Numerical होगा या Non-Numerical, यदि मान Numerical है, तो हमें ये देखना होता है कि उस Numerical Field के साथ किसी प्रकार की प्रक्रिया हो सकती है या नहीं।
यदि प्रक्रिया हो सकती है, तब तो उस Attribute को उसकी Size के अनुसार किसी Numeric Data Type का Declare करना चाहि, अन्यथा उस Numerical दिखाई देने वाले Field या Attribute को भी String प्रकार का ही Declare करना चाहिए। चलिए, इसी आधार पर हम Student के विभिन्न Attributers का Data Type तय करते हैं।
चूंकि Student का नाम, उसके पिता का नाम, Address, जाति, City, District, तहसील, State, Class ये सभी ऐसे Fields हैं, जिनमें Non-Numerical data Store होगा, इसलिए इन सभी को String प्रकार के Data Type का Declare करना होगा। Admission की Data, Birth Date व Age ये तीनों ऐसे Fields हैं, जिनके साथ ये जानने के लिए Processing की जा सकती है, कि कोई Student कितने समय से School में है और कितने दिन से School में है। ये जानकारी प्राप्त करने के लिए Current Date को Admission Date में से घटाया जा सकता है। साथ ही ये तीनों ही पूर्णांक संख्याएं हैं, इसलिए इस प्रकार के Fields को Integer प्रकार का Declare करना होगा।
Serial Number, Class व Contact Number ये तीन Attributes ऐसे हैं कि इनमें Store तो संख्या ही होती है, लेकिन इन संख्याओं के साथ किसी प्रकार की Calculation नहीं की जा सकती है, इसलिए यदि हम चाहें तो इन्हें String प्रकार के Variable में Store कर सकते हैं।
लेकिन String प्रकार का Variable एक Character को Store करने के लिए 1 Byte लेता है। इसलिए यदि 10 अंकों के Contact Number को Store करना हो, तो हमें दस Byte की Memory इसके लिए Reserve करनी होगी, जबकि यदि हम Long प्रकार का Variable Declare करते हैं, तो हम केवल 8 Bytes में ही दस अंकों की संख्या Store कर सकते हैं।
इसलिए यदि हम चाहें तो इन्हें Long प्रकार का Declare कर सकते हैं। Class एक ऐसा मान है, जिसके अधिकतम मान की Range Byte Data Type की Range के अन्तर्गत आ जाती है, इसलिए इसे Byte प्रकार का Declare करना ठीक रहेगा।
इस प्रकार से हम Students के सभी Attributes के Data Type तय कर सकते हैं। Data Type तय करने के बाद इन Data Type के साथ हमें इन Attributes को केवल Class के Attributes Section में लिखना होता है। यानी हम एक Student की Class को Java Language द्वारा निम्नानुसार Computer में Logically Describe कर सकते हैं:
Student Class Defining class Student { String studentName; String studentFName; String studentAddress; String studentCity; String studentTehsil; String studentDistrict; String studentState; byte studentClass; long studentContactNumber; long studentDateOfBirth; long studentDateOfAdmission; byte studentAge; String studentSerialNumber; String studentCast; //Behaviors of the Objects }
चूंकि किसी Class के Create होने वाले सभी Instances एक अलग Object होते हैं और उनके Attributes के मान भी अलग-अलग होते हैं। जैसे Govind नाम के किसी Student के Record व Shyam नाम के किसी Student के Record, इन दोनों Objects के Record के हर Field या Attribute का मान अलग होगा। ये अलग मान Memory में तभी Store हो सकते हैं, जब हर Object के इन Attributes के लिए Memory में अलग Space हो।
वास्तव में होता भी ऐसा ही है। जैसाकि हमने पहले भी कहा कि Class तो मात्र किसी Object के Attributes की एक Description मात्र होती है। उस Description के अनुसार जितने भी Objects बनते हैं, उन सभी Objects के हर Attribute को Store होने के लिए एक अलग Variable मिलता है। चूंकि हर Object किसी Class का एक Instance होता है। इसलिए हर Object के इन Attributes को Represent करने वाले Variables को भी Instance Variable कहते हैं। इसी उदाहरण के आधार पर हम Car व Book की Class को भी Create कर सकते हैं।
Class एक प्रकार का नया Data Type होता है जिसे Programmer किसी Real World Object को Computer में Logically Represent करने के लिए Develop करता है। Class एक ऐसी Specification होती है, जिसमें किसी Object से Related Attributes को एक Group के रूप में Specify किया जाता है और उस Object के सभी Attributes को एक साथ Access किया जा सकता है।
उदाहरण के लिए Book Class एक Real World Book Object को Represent करता है, जिसमें Book से सम्बंधित Related Attributes के Data Store किए जा सकते हैं। हमने पिछले अध्यायों से ये समझा है कि यदि हमें किसी एक Numerical या Non-Numerical Data को Computer में Store करना हो, तो हम एक Variable Declare करते हैं।
इसी तरह से जब हमें एक ही प्रकार के कई Data को Computer में Store व Access करना हो, तो हम Array का प्रयोग करते हैं। लेकिन जब हमें विभिन्न प्रकार के Data Type के मानों को Computer में Store करके Manage करना होता है, तब हमें उस Object की सभी Related Fields को एक Group में रख कर Manage करने की जरूरत होती है। इस जरूरत को पूरा करने के लिए हम Java में Class Create करते हैं।
उदाहरण के लिए मानलो कि हमें किसी Box Object को Computer में Represent करना है। किसी Box के निम्नानुसार तीन Attributes हो सकते हैं, जिन्हें एक Group Data के रूप में Computer की Memory में Store व Manage किया जा सकता है:
- Box की Height
- Box की Width
- Box की Length
यदि हम इन तीनों Attributes के आधार पर एक Class Develop करना चाहें, तो निम्नानुसार कर सकते हैं:
public class Box { double height; double width; double length; }
जैसाकि हमने पहले कहा कि Class एक नए प्रकार का Data Type होता है, जो किसी Real World Object को Computer में Logically Represent करता है। इसलिए हमारी Box Class भी एक नए प्रकार का Data Type है और हम इसके Instance या नी Object Create करके अपने Program में उसी तरह से Use व Access कर सकते हैं, जिस तरह से किसी Basic Data Type के Variable को करते हैं। दोनों के उच्चारण में अन्तर केवल इतना है कि Basic Data Type के Instance को Variable कहते हैं और Class प्रकार के Data Type के Instance को Object कहते हैं।
साथ ही चूंकि Basic प्रकार का Data Type किसी समय में केवल एक ही मान को Hold करता है जबकि Class प्रकार का Data Type एक समय में एक से अधिक Basic Data Type के मानों को Hold कर सकता है।
यदि हमें हमारे Program में Box Class का कोई Object Create करना हो, तो हम ये काम निम्नानुसार Statement द्वारा करते हैं:
Box cpuCabineta = new Box();
चूंकि Class Specification केवल एक Template मात्र होता है, इसलिए कोई Class स्वयं तब तक Memory में कोई Space reserve नहीं करता है जब तक कि उस Class का कोई Instance यानी Object Create ना किया जाए।
जब उपरोक्त Statement Execute होता है, तभी Box Class का Object cpuCabinet Memory में Space Reserve करता है। हम किसी Class के जितने भी Instance Create करते हैं उस हर Object के Data की स्वयं की height, width व length Copy होती है, जिसमें उस Particular Object के Data को Store किया जा सकता है। इन Instance Variables को Access करने के लिए हमें Java में Dot Operator का प्रयोग करना होता है। ये Operator Object के नाम को Object के Instance Variable से Link करने का काम करता है।
उदाहरण के लिए मानलो कि किसी CPU की Length 100 CM, Width 20CM व Height 70 CM है। यदि हम इन तीनों मानों को cpuCabinet Object में Store करना चाहें तो निम्नानुसार कर सकते हैं:
cpuCabinet.length = 100; cpuCabinet.height = 70; cpuCabinet.width = 20;
मानलो कि हमें cpuCabinet का आयतन (Volume) ज्ञात करने के लिए Program लिखना है। ये Program हम निम्नानुसार लिख सकते हैं:
// Program class Box { double width; double height; double length; } public class BoxDemo { public static void main(String args[]) { Box cpuCabinet = new Box(); double volume; cpuCabinet.length = 100; cpuCabinet.height = 70; cpuCabinet.width = 20; volume = cpuCabinet.length * cpuCabinet.height * cpuCabinet.width; System.out.println("Volume is " + volume); } } // Output Volume is 140000.0
जैसाकि हमने पहले भी कहा कि जिस Class में main() Method होता है, वही Class सबसे पहले Compiler होती है। इसलिए ये जरूरी नहीं होता है कि जिस File में main() Method वाली Class हो उसी File में main() Method द्वारा Use की जा रही सभी Classes का Declaration व Definition हो।
हम विभिन्न प्रकार की Classes की अलग फाईल बना सकते हैं और उन Class Files को एक Package में Include करके उस Package को अपनी Source File में import Statement द्वारा Call कर सकते हैं। इस सम्बंध में हम आगे चर्चा करेंगे।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Java Programming Language in Hindi | Page: 682 | Format: PDF