Principles of Object Oriented Programming ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के सिद्धांत-
Some important principles used in object oriented programming, which overcome the problems of old programming languages, are as follows -
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में प्रयुक्त किये जाने वाले कुछ महत्वपूर्ण सिद्धांत, जो कि पुरानी प्रोग्रामिंग लैंग्वेजेस की समस्याओ को दूर करते है निम्न है -
1) object ऑब्जेक्ट
2) class क्लास
3) Data Abstraction डेटा एब्सट्रेक्शन
4) Encapsulation इनकैप्सुलेशन
5) inheritance इन्हेरिटाँस
6) Polymorphism पालीमोर्फिस्म
7) Dynamic Binding डायनामिक बाईन्डिंग
8) Message passing मैसेज पासिंग
1. object ऑब्जेक्ट-
An object is the basic unit or entity of an object-oriented system. Object represents the data of a person, place, object, bank account or table for which the program has to be prepared. Programming objects are similar to real-world objects. An object contains data members and member functions. First of all, to solve a problem, it is necessary to understand the objects present in it and the relationships between them.Objects represent the existence of a class design or template and occupy space in memory. Different objects communicate with each other through messages.
ऑब्जेक्ट, एक ऑब्जेक्ट ओरिएंटेड सिस्टम की मूलभूत ईकाई या एंटिटी होती है। ऑब्जेक्ट के द्वारा किसी व्यक्ति, स्थान, वस्तु, बैंक अकाउंट या टेबल के डेटा को दर्शाया जाता है जिसके लिए प्रोग्राम तैयार करना होता है। प्रोग्रामिंग ऑब्जेक्ट, वास्तविक दुनिया के ऑब्जेक्ट के सामान ही होते है। एक ऑब्जेक्ट में डेटा मेम्बेर्स एवं मेम्बर फंक्शन उपस्थित होते है। सर्वप्रथम किसी समस्या को हल करने के लिए उसमे उपस्थित ऑब्जेक्ट एवं उनके मध्य संबंधो को समझना आवश्यक होता है। ऑब्जेक्ट, किसी क्लास डिजाईन या टेम्पलेट के अस्तित्व को प्रदर्शित करते है एवं मेमोरी में स्थान ग्रहण करते है। विभिन्न ऑब्जेक्ट आपस में मैसेज के द्वारा संवाद करते है।
2. class क्लास-
A class is an ADT (Abstract Data Type) and is similar to inbuilt data types. Real-world objects or entities are expressed in programs through classes. All the data members and member functions of the object are represented in the class itself. Class is created with the help of keyword called class. The predefined domain or access specifier of a class is private.
एक क्लास, एक ए.डी.टी (एब्सट्रैक्ट डेटा टाइप) है एवं यह इनबिल्ट डेटा टाइप के सामान ही होता है। क्लास के द्वारा वास्तविक दुनिया के ऑब्जेक्ट या एंटिटी को प्रोग्राम में व्यक्त किया जाता है। ऑब्जेक्ट के सभी डेटा मेम्बेर्स एवं मेम्बर फंक्शन को क्लास के अंतर्गत ही दर्शाया जाता है। क्लास को class नामक कीवर्ड की सहायता से तैयार किया जाता है। क्लास का पूर्व निर्धारित डोमेन या एक्सेस स्पेसीफायर प्राइवेट होता है।
Example उदाहरण -
class Employee{
int empid;
void grosssalary();
public:
void getemp();
void setemp();
}
In other functions/classes अन्य फंक्शन/क्लास में-
Employee e=new Employee();
//This is an object of class Employee यह क्लास एम्प्लोयी का एक ऑब्जेक्ट है
3.Data abstraction डेटा एब्सट्रेक्शन- Data abstraction represents a real-world object with all its important properties while keeping other detailed information hidden in the background. Users can access the class's data using the public interface, but they are not allowed by the programmer to make changes to the class's data members or member functions. Generally in OOP, user data is kept in the private section and accessing methods are kept in the public section. This is also known as data hiding. In daily life, driving a car, calculator and mobile phone etc. are examples of data abstraction.
डेटा एब्सट्रेक्शन के द्वारा वास्तविक दुनिया के ऑब्जेक्ट को उसके सभी महत्वपूर्ण गुणों के साथ दर्शाया जाता है अन्य विस्तृत जानकारी को परदे के पीछे (बैकग्राउंड) में छुपाकर रखा जाता है। यूजर, पब्लिक इंटरफ़ेस का प्रयोग कर क्लास के डेटा को एक्सेस कर सकते है परन्तु प्रोग्रामर द्वारा उन्हें क्लास के डेटा मेम्बर या मेम्बर फंक्शन में परिवर्तन करने की अनुमति नहीं दी जाती है। सामान्यतः ऊप (OOP) में यूजर डेटा को प्राइवेट सेक्शन में एवं एक्सेसिंग मेथड्स को पब्लिक सेक्शन में रखा जाता है। इसे डेटा हाईडिंग के नाम से भी जाना जाता है। दैनिक जीवन में कार चलाना, कैलकुलेटर एवं मोबाइल फ़ोन इत्यादि डेटा एब्सट्रेक्शन के उदाहरण है।
4. encapsulation इनकैप्सुलेशन- This is a fundamental principle of object oriented programming. In this, the data member and member function of an object are displayed together as a single unit (class). Generally, in a class, data members are written in the private section and member functions are written in the public section. Here the user can access the data members externally using the public interface, thereby protecting the data members of the class from unauthorized external access. Access to data members can be controlled by the programmer. Data abstraction and encapsulation complement each other. In data abstraction, the behavior of objects is displayed in different views, whereas in data encapsulation, protection is provided to user data and functions under class design.
यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का एक मूलभूत सिद्धांत है। इसमें किसी ऑब्जेक्ट के डेटा मेम्बर एवं मेम्बर फंक्शन को एक साथ एक एकल ईकाई (क्लास) के रूप में प्रदर्शित किया जाता है। सामान्यतः एक क्लास में डेटा मेम्बेर्स को प्राइवेट सेक्शन में एवं मेम्बर फंक्शन को पब्लिक सेक्शन में लिखा जाता है। यहाँ यूजर पब्लिक इंटरफ़ेस का प्रयोग कर डेटा मेंबर्स को बाह्य रूप से एक्सेस कर सकता है जिससे क्लास के डेटा मेम्बर, अनाधिकृत बाह्य एक्सेस से सुरक्षित रहते है। डेटा मेम्बर की एक्सेस को प्रोग्रामर द्वारा नियंत्रित किया जा सकता है। डेटा एब्सट्रेक्शन एवं इनकैप्सुलेशन एक दुसरे के पूरक होते है। डेटा एब्सट्रेक्शन में ऑब्जेक्ट के व्यव्हार को अलग-अलग दृश्यों में प्रदर्शित किया जाता है जबकि डेटा इनकैप्सुलेशन में क्लास डिजाईन के अंतर्गत यूजर डेटा एवं फंक्शन को सुरक्षा प्रदान की जाती है।
5. Inheritance इनहेरिटेंस- This is an important principle of object oriented programming. With the help of which one class can inherit important data and functions of another class. It promotes re-use of program code, that is, after a program is completely ready, it can be used directly in many programs. Inheritance also expresses real-world objects and the relationships between them. Generally it is of five types -
यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का एक महत्वपूर्ण सिद्धांत है। जिसकी सहायता से एक क्लास द्वारा, दूसरी क्लास के महत्वपूर्ण डेटा एवं फंक्शन को विरासत में प्राप्त किया जा सकता है। यह प्रोग्राम कोड के पुनः प्रयोग को बढ़ावा देता है अर्थात एक प्रोग्राम पूर्ण रूप से तैयार होने के पश्चात् कई प्रोग्राम में सीधे प्रयुक्त किया जा सकता है। इनहेरिटेंस वास्तविक दुनिया के ऑब्जेक्ट एवं उनके मध्य संबंधो को भी व्यक्त करता है। सामान्यतः यह पांच प्रकार का होता है-
a.) Single inheritance सिंगल इनहेरिटेंस
b.) Multiple inheritance मल्टीप्ल इनहेरिटेंस
c.) Multilevel inheritance मल्टीलेवल इनहेरिटेंस
d.) Hierarchical inheritance हाईरारकीकल इनहेरिटेंस
e.) Hybrid inheritance हाइब्रिड इनहेरिटेंस
6. Polymorphism पालीमोर्फिस्म- This is also known as "one interface, multiple methods", that is, multiple methods (family of functions) present in an interface can be applied to different types of data members of the class but the basic meaning of the function changes. is not done. Each method uses the same name or symbol. Polymorphism is of following two types
इसे "वन इंटरफ़ेस, मल्टीप्ल मेथडस" के नाम से भी जाना जाता है अर्थात एक इंटरफ़ेस में उपस्थित कई मेथडस (फंक्शन की फॅमिली) को क्लास के भिन्न-भिन्न प्रकार के डेटा मेम्बर्स पर लागू किया जा सकता है परन्तु फंक्शन के मूलभूत अर्थ में परिवर्तन नहीं किया जाता है। प्रत्येक मेथड द्वारा एक ही नाम या चिन्ह का प्रयोग किया जाता है। पालीमोर्फिस्म निम्न दो प्रकार का होता है
a. Compile Time Polymorphism कम्पाइल टाइम पालीमोर्फिस्म–
(i) Function overloading फंक्शन ओवरलोडिंग
(ii) Operator overloading ऑपरेटर ओवरलोडिंग
b. Run Time Polymorphism रन टाइम पालीमोर्फिस्म –
(i) Virtual Function वर्चुअल फंक्शन
7. dynamic binding डायनामिक बाईन्डिंग-
In this type of binding, the user can bind a procedure call with its response code at runtime. The qualified response code is automatically tied to its procedure call by the CPU when the program is run. This process is also known as late binding. This process can be seen in the inheritance and polymorphism (virtual function) principles of object-oriented programming.
इस प्रकार के बंधन में यूजर, किसी प्रोसीजर कॉल को उसके रेस्पोंस कोड के साथ रनटाइम पर बांध सकता है। जब प्रोग्राम को रन किया जाता है तब सीपीयु द्वारा स्वतः ही योग्य रेस्पोंस कोड को उसकी प्रोसीजर कॉल के साथ बांधा जाता है। इस प्रक्रिया को लेट बाईन्डिंग के नाम से भी जाना जाता है। यह प्रक्रिया ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के इनहेरिटेंस एवं पालीमोर्फिस्म (वर्चुअल फंक्शन) सिद्धांत में देखी जा सकती है।
8. Message passing मैसेज पासिंग - Many objects are present in the object oriented programming model. Just as humans communicate with each other with the help of language, similarly objects communicate with each other with the help of messages. Message passing is the simplest, easiest, and best way to demonstrate communication between real-world objects in a system. A message is a request made by a class object to the compiler to access a particular procedure, after which the compiler observes that request and, if found correct, runs the desired procedure and provides the result.
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग मॉडल में कई ऑब्जेक्ट उपस्थित होते है। जिस प्रकार मनुष्य भाषा की सहयता से एक-दुसरे से संवाद करते है ठीक उसी प्रकार ऑब्जेक्ट मैसेज की सहायता से एक-दुसरे से संवाद करते है। मैसेज पासिंग, वास्तविक दुनिया के ऑब्जेक्टस के मध्य संवाद को सिस्टम में प्रदर्शित करने की सबसे साधारण, आसान एवं श्रेष्ठ युक्ति है। एक मैसेज, क्लास ऑब्जेक्ट के द्वारा किसी विशेष प्रोसीजर को एक्सेस करने के लिए कम्पाइलर से किया गया एक अनुरोध होता है जिसके पश्चात् कम्पाइलर उस अनुरोध का अवलोकन करता है एवं सही पाए जाने पर, चाही गयी प्रोसीजर को रन करके, परिणाम प्रदान करता है।
Syntax प्रारूप-
class_name class_object=new class_name ();
class_object.procedure_call (arguments);
Example उदाहरण-
Student s=new Student ();
s.setstudent ();//message passing