हम इस ट्यूटोरियल में सीखने वाले है कि जावा Object और क्लासेस Java Object and Classes in Hindi और हम इसे कैसे इस्तमाल कर सकते हैं? जावा एक वस्तु-उन्मुख भाषा है। Object-ओरिएंटेड विशेषता वाली भाषा के रूप में जावा निम्नलिखित मौलिक अवधारणाओं का समर्थन करता है –
- Polymorphism
- Inheritance
- Encapsulation
- Abstraction
- Classes
- Objects
- Instance
- Method
- Message Passing
इस अध्याय में हम अवधारणाओं – वर्ग और वस्तुओं पर गौर करेंगे।
Object − वस्तुओं में अवस्थाएं और व्यवहार होते हैं। उदाहरण: एक कुत्ते की अवस्थाएँ होती हैं – रंग, नाम, नस्ल और व्यवहार – दुम हिलाना, भौंकना, खाना। एक वस्तु एक वर्ग का एक उदाहरण है।
Class − एक वर्ग को एक टेम्पलेट/ब्लूप्रिंट के रूप में परिभाषित किया जा सकता है जो उस व्यवहार/स्थिति का वर्णन करता है जो उसके प्रकार का समर्थन करता है।
Table of Contents
जावा Object (Java Objects in Hindi)
आइए अब हम गहराई से देखें कि वस्तुएं क्या हैं। यदि हम वास्तविक दुनिया पर विचार करें, तो हम अपने आस-पास बहुत सी वस्तुएँ, कार, कुत्ते, मनुष्य आदि पा सकते हैं। इन सभी वस्तुओं की एक अवस्था और एक व्यवहार होता है।
कुत्ते की माने तो उसकी अवस्था है – नाम, नस्ल, रंग, और व्यवहार है – भौंकना, दुम हिलाना, दौड़ना।
यदि आप सॉफ़्टवेयर Object की वास्तविक दुनिया की वस्तु से तुलना करते हैं, तो उनकी बहुत समान विशेषताएँ होती हैं।
सॉफ़्टवेयर Object में भी एक राज्य और एक व्यवहार होता है। एक सॉफ़्टवेयर Object की स्थिति को फ़ील्ड में संग्रहीत किया जाता है और व्यवहार विधियों के माध्यम से दिखाया जाता है।
तो सॉफ्टवेयर विकास में, विधियाँ किसी वस्तु की आंतरिक स्थिति पर काम करती हैं और वस्तु-से-वस्तु संचार विधियों के माध्यम से किया जाता है।
जावा क्लासेज (Java Classes in Hindi)
एक वर्ग एक खाका है जिससे अलग-अलग वस्तुएँ बनाई जाती हैं।
निम्नलिखित एक वर्ग का एक नमूना है।
Example
public class Dog {
String breed;
int age;
String color;
void barking() {
}
void hungry() {
}
void sleeping() {
}
}
एक वर्ग में निम्न में से कोई भी variables प्रकार हो सकता है।
Local variables – विधियों, निर्माणकर्ताओं या ब्लॉकों के अंदर परिभाषित variables को स्थानीय variables कहा जाता है। वेरिएबल घोषित किया जाएगा और विधि के भीतर प्रारंभ किया जाएगा और विधि पूर्ण होने पर वेरिएबल नष्ट हो जाएगा।
Instance variables – Instance variables एक वर्ग के भीतर लेकिन किसी भी विधि के बाहर वेरिएबल्स हैं। इन वेरिएबल्स को इनिशियलाइज़ किया जाता है जब क्लास को इंस्टेंट किया जाता है। Instance variables को किसी भी विधि, कंस्ट्रक्टर या उस विशेष वर्ग के ब्लॉक के अंदर से एक्सेस किया जा सकता है।
Class variables – Class variables किसी भी विधि के बाहर, स्थिर कीवर्ड के साथ, क्लास के भीतर घोषित वेरिएबल्स हैं।
विभिन्न प्रकार के तरीकों के मूल्य तक पहुँचने के लिए एक वर्ग के पास कई तरीके हो सकते हैं। उपरोक्त उदाहरण में, भौंकने (), भूखा () और सोना () विधियाँ हैं।
निम्नलिखित कुछ महत्वपूर्ण विषय हैं जिन पर जावा भाषा की कक्षाओं को देखते समय variables्चा करने की आवश्यकता है।
कंस्ट्रक्टर्स (Constructors in Hindi)
कक्षाओं के बारे में variables्चा करते समय, सबसे महत्वपूर्ण उप-विषयों में से एक कंस्ट्रक्टर होगा। प्रत्येक वर्ग में एक कंस्ट्रक्टर होता है। यदि हम स्पष्ट रूप से किसी वर्ग के लिए कंस्ट्रक्टर नहीं लिखते हैं, तो जावा कंपाइलर उस वर्ग के लिए एक डिफ़ॉल्ट कंस्ट्रक्टर बनाता है।
हर बार एक नया Object बनाया जाता है, कम से कम एक कंस्ट्रक्टर को बुलाया जाएगा। कंस्ट्रक्टर्स का मुख्य नियम यह है कि उनका नाम क्लास के समान होना चाहिए। एक वर्ग में एक से अधिक कंस्ट्रक्टर हो सकते हैं।
निम्नलिखित एक कंस्ट्रक्टर का उदाहरण है –
Example
public class Puppy {
public Puppy() {
}
public Puppy(String name) {
// This constructor has one parameter, name.
}
}
जावा सिंगलटन क्लासेस को भी सपोर्ट करता है जहाँ आप एक क्लास का केवल एक उदाहरण बना पाएंगे।
नोट − हमारे पास दो अलग-अलग प्रकार के कंस्ट्रक्टर हैं। हम बाद के अध्यायों में विस्तार से कंस्ट्रक्टर्स पर variables करने जा रहे हैं।
एक Object बनाना (Creating an Object)
जैसा कि पहले उल्लेख किया गया है, एक वर्ग वस्तुओं के लिए ब्लूप्रिंट प्रदान करता है। तो मूल रूप से एक वर्ग से एक वस्तु बनाई जाती है। जावा में नए कीवर्ड का उपयोग New Object को बनाने के लिए किया जाता है।
किसी वर्ग से Object बनाते समय तीन variables होते हैं –
घोषणा Declaration − एक वस्तु प्रकार के साथ एक variables नाम के साथ एक variables घोषणा।
इन्स्टेन्शिएशन Instantiation − Object बनाने के लिए ‘नया’ कीवर्ड का उपयोग किया जाता है।
इनिशियलाइज़ेशन Initialization – ‘नया’ कीवर्ड के बाद कंस्ट्रक्टर को कॉल किया जाता है। यह कॉल नई वस्तु को इनिशियलाइज़ करती है।
निम्नलिखित एक वस्तु बनाने का एक उदाहरण है –
Example
public class Puppy {
public Puppy(String name) {
// This constructor has one parameter, name.
System.out.println(“Passed Name is :” + name );
}
public static void main(String []args) {
// Following statement would create an object myPuppy
Puppy myPuppy = new Puppy( “tommy” );
}
}
यदि हम उपरोक्त प्रोग्राम को कंपाइल और रन करते हैं, तो यह निम्नलिखित परिणाम देगा –
Output
Passed Name is :tommy
इंस्टेंस वेरिएबल्स और मेथड्स एक्सेस करना (Accessing Instance Variables and Methods)
इंस्टेंस variables और विधियों को निर्मित वस्तुओं के माध्यम से एक्सेस किया जाता है। एक उदाहरण variables का उपयोग करने के लिए, निम्नलिखित पूरी तरह से योग्य पथ है –
/* First create an object */
ObjectReference = new Constructor();
/* Now call a variable as follows */
ObjectReference.variableName;
/* Now you can call a class method as follows */
ObjectReference.MethodName();
उदाहरण
यह उदाहरण बताता है कि किसी वर्ग के उदाहरण variables और विधियों तक कैसे पहुँचा जाए।
public class Puppy {
int puppyAge;
public Puppy(String name) {
// This constructor has one parameter, name.
System.out.println(“Name chosen is :” + name );
}
public void setAge( int age ) {
puppyAge = age;
}
public int getAge( ) {
System.out.println(“Puppy’s age is :” + puppyAge );
return puppyAge;
}
public static void main(String []args) {
/* Object creation */
Puppy myPuppy = new Puppy( “tommy” );
/* Call class method to set puppy’s age */
myPuppy.setAge( 2 );
/* Call another class method to get puppy’s age */
myPuppy.getAge( );
/* You can access instance variable as follows as well */
System.out.println(“Variable Value :” + myPuppy.puppyAge );
}
}
यदि हम उपरोक्त प्रोग्राम को कंपाइल और रन करते हैं, तो यह निम्नलिखित परिणाम देगा –
Output
Name chosen is :tommy
Puppy’s age is :2
Variable Value :2
स्रोत फ़ाइल घोषणा नियम (Source File Declaration Rules)
इस खंड के अंतिम भाग के रूप में आइए अब स्रोत फ़ाइल घोषणा नियमों को देखें। स्रोत फ़ाइल में कक्षाओं, आयात विवरणों और पैकेज विवरणों की घोषणा करते समय ये नियम आवश्यक हैं।
- प्रति स्रोत फ़ाइल में केवल एक सार्वजनिक वर्ग हो सकता है।
- एक स्रोत फ़ाइल में कई गैर-सार्वजनिक वर्ग हो सकते हैं।
- सार्वजनिक वर्ग का नाम स्रोत फ़ाइल का नाम भी होना चाहिए जिसे अंत में .java द्वारा जोड़ा जाना चाहिए। उदाहरण के लिए: वर्ग का नाम सार्वजनिक वर्ग कर्मचारी {} है तो स्रोत फ़ाइल कर्मचारी.जावा के रूप में होनी चाहिए।
- यदि क्लास को पैकेज के अंदर परिभाषित किया गया है, तो पैकेज स्टेटमेंट सोर्स फ़ाइल में पहला स्टेटमेंट होना चाहिए।
- यदि आयात विवरण मौजूद हैं, तो उन्हें पैकेज विवरण और वर्ग घोषणा के बीच लिखा जाना चाहिए। यदि कोई पैकेज विवरण नहीं है, तो आयात विवरण स्रोत फ़ाइल में पहली पंक्ति होनी चाहिए।
- आयात और पैकेज विवरण स्रोत फ़ाइल में मौजूद सभी classes पर लागू होंगे। स्रोत फ़ाइल में विभिन्न classes के लिए अलग-अलग आयात और/या पैकेज स्टेटमेंट घोषित करना संभव नहीं है।
कक्षाओं में कई पहुंच स्तर होते हैं और विभिन्न प्रकार की कक्षाएं होती हैं; सार वर्ग, अंतिम कक्षाएं, आदि। हम इन सभी के बारे में एक्सेस संशोधक अध्याय में समझाएंगे।
उपरोक्त प्रकार की कक्षाओं के अलावा, जावा में कुछ विशेष कक्षाएं भी हैं जिन्हें इनर क्लासेस और एनोनिमस क्लासेस कहा जाता है।
जावा पैकेज (Java Package in Hindi)
सरल शब्दों में, यह कक्षाओं और इंटरफेस को वर्गीकृत करने का एक तरीका है। जावा में एप्लिकेशन विकसित करते समय, सैकड़ों कक्षाएं और इंटरफेस लिखे जाएंगे, इसलिए इन classes को वर्गीकृत करना आवश्यक है और जीवन को बहुत आसान बनाता है।
आयात विवरण (Import Statements in Hindi)
जावा में यदि एक पूरी तरह से योग्य नाम दिया गया है, जिसमें पैकेज और वर्ग का नाम शामिल है, तो संकलक आसानी से स्रोत कोड या कक्षाओं का पता लगा सकता है। इम्पोर्ट स्टेटमेंट उस विशेष वर्ग को खोजने के लिए कंपाइलर को उचित स्थान देने का एक तरीका है।
import java.io.*;
एक साधारण केस स्टडी
हमारे मामले के अध्ययन के लिए हम दो वर्ग बना रहे होंगे। वे कर्मचारी और कर्मचारी परीक्षण हैं।
सबसे पहले नोटपैड खोलें और निम्न कोड जोड़ें। याद रखें कि यह Employee class है और वर्ग एक सार्वजनिक वर्ग है। अब, इस सोर्स फाइल को Employee.java नाम से सेव करें।
Employee class के चार उदाहरण variables हैं – नाम, आयु, पदनाम और वेतन। कक्षा में एक स्पष्ट रूप से परिभाषित कन्स्ट्रक्टर है, जो पैरामीटर लेता है।
Example
import java.io.*;
public class Employee {
String name;
int age;
String designation;
double salary;
// This is the constructor of the class Employee
public Employee(String name) {
this.name = name;
}
// Assign the age of the Employee to the variable age.
public void empAge(int empAge) {
age = empAge;
}
/* Assign the designation to the variable designation.*/
public void empDesignation(String empDesig) {
designation = empDesig;
}
/* Assign the salary to the variable salary.*/
public void empSalary(double empSalary) {
salary = empSalary;
}
/* Print the Employee details */
public void printEmployee() {
System.out.println(“Name:”+ name );
System.out.println(“Age:” + age );
System.out.println(“Designation:” + designation );
System.out.println(“Salary:” + salary);
}
}
जैसा कि इस ट्यूटोरियल में पहले उल्लेख किया गया है, प्रसंस्करण मुख्य विधि से शुरू होता है। इसलिए, इस कर्मचारी वर्ग को चलाने के लिए एक मुख्य विधि होनी चाहिए और वस्तुओं का निर्माण किया जाना चाहिए। हम इन कार्यों के लिए एक अलग वर्ग बना रहे होंगे।
निम्नलिखित EmployeeTest वर्ग है, जो कर्मचारी वर्ग के दो उदाहरण बनाता है और प्रत्येक variable के लिए मान निर्दिष्ट करने के लिए प्रत्येक वस्तु के तरीकों को आमंत्रित करता है।
निम्नलिखित कोड को EmployeeTest.java फ़ाइल में सहेजें।
import java.io.*;
public class EmployeeTest {
public static void main(String args[]) {
/* Create two objects using constructor */
Employee empOne = new Employee(“James Smith”);
Employee empTwo = new Employee(“Mary Anne”);
// Invoking methods for each object created
empOne.empAge(26);
empOne.empDesignation(“Senior Software Engineer”);
empOne.empSalary(1000);
empOne.printEmployee();
empTwo.empAge(21);
empTwo.empDesignation(“Software Engineer”);
empTwo.empSalary(500);
empTwo.printEmployee();
}
}
अब दोनों classes को संकलित करें और फिर निम्न प्रकार से परिणाम देखने के लिए EmployeeTest चलाएँ –
Output
C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0
हम उम्मीद करते है कि आपको “जावा Object और क्लासेस Java Object and Classes in Hindi” से सम्बंधित जानकारी हिंदी में समझ में आयी होंगी यदि आपको बताई गई जानकारी अच्छी लगी हो तो अपने दोस्तों में ऐसे शेयर करे जिससे उनकी भी हेल्प हो सके धन्यवाद!