Object Oriented Programming (OOP) Concepts in C++ Notes | Class, Object, Encapsulation, Inheritance & Polymorphism | Basic Computer Engineering | RGPV BTech First Year
Object Oriented Programming (OOP) Concepts in C++ Notes | Class, Object, Encapsulation, Inheritance & Polymorphism | Basic Computer Engineering | RGPV BTech First Year
Object Oriented Programming (OOP) Concepts in C++
Object Oriented Programming (OOP) आधुनिक Programming Methodology है जिसमें Program को Objects तथा Classes के रूप में विकसित किया जाता है। OOP का मुख्य उद्देश्य Real World Objects को Software के माध्यम से Represent करना तथा Program को अधिक Secure, Reusable एवं Maintainable बनाना है।
C++ एक शक्तिशाली Object Oriented Programming Language है जो Class, Object, Encapsulation, Inheritance, Polymorphism, Abstraction तथा Message Passing जैसे महत्वपूर्ण Features प्रदान करती है। इन्हीं Concepts की सहायता से बड़े एवं Complex Software Systems विकसित किए जाते हैं।
RGPV B.Tech First Year के Basic Computer Engineering Subject में Object Oriented Programming Concepts अत्यंत महत्वपूर्ण Topic है। University Examination, Practical तथा Viva में Class, Object, Access Specifier, Encapsulation, Inheritance तथा Polymorphism से संबंधित प्रश्न नियमित रूप से पूछे जाते हैं।
↓
Class
↓
Object
↓
Software Solution
Introduction to Object Oriented Programming
प्रारंभिक Programming Languages में अधिकांश Programs Procedure Oriented Programming (POP) Method का उपयोग करके बनाए जाते थे। जैसे-जैसे Software का आकार बढ़ा, Programs को Manage करना कठिन होता गया। इस समस्या के समाधान के लिए Object Oriented Programming विकसित की गई।
OOP में पूरा Program छोटे-छोटे Objects में विभाजित होता है। प्रत्येक Object अपना Data तथा उससे संबंधित Functions को एक साथ रखता है। इससे Data Security बढ़ती है तथा Code Reusability भी संभव होती है।
What is Object Oriented Programming?
Object Oriented Programming (OOP) ऐसी Programming Technique है जिसमें Program को Objects के रूप में Design किया जाता है। प्रत्येक Object किसी वास्तविक वस्तु (Real World Entity) का प्रतिनिधित्व करता है तथा उसमें Data और Functions दोनों शामिल होते हैं।
उदाहरण के लिए Student, Car, Employee तथा Bank Account सभी Objects के उदाहरण हैं जिन्हें Class के माध्यम से Represent किया जा सकता है।
Need of Object Oriented Programming
बड़े Software Systems में Code को व्यवस्थित (Organized) तथा सुरक्षित (Secure) रखने के लिए OOP का उपयोग किया जाता है। OOP Software Development को सरल, Reusable तथा Maintainable बनाता है।
- Large Software Development के लिए।
- Code Reusability बढ़ाने के लिए।
- Data Security प्रदान करने के लिए।
- Real World Objects को Represent करने के लिए।
- Program Maintenance आसान बनाने के लिए।
- Team Based Development को सरल बनाने के लिए।
- Complex Problems को छोटे Objects में विभाजित करने के लिए।
Advantages of Object Oriented Programming
| Advantage | Description |
|---|---|
| Code Reusability | एक बार लिखे गए Code का बार-बार उपयोग किया जा सकता है। |
| Data Security | Encapsulation द्वारा Data सुरक्षित रहता है। |
| Easy Maintenance | Large Programs को Maintain करना आसान हो जाता है। |
| Modularity | Program छोटे-छोटे Objects में विभाजित हो जाता है। |
| Real World Modeling | वास्तविक Objects को Software में Represent किया जा सकता है। |
| Extensibility | नई Functionalities आसानी से जोड़ी जा सकती हैं। |
Characteristics of Object Oriented Programming
Object Oriented Programming की कुछ विशेष विशेषताएँ (Characteristics) होती हैं जो इसे Procedure Oriented Programming से अलग बनाती हैं। इन्हीं विशेषताओं के कारण OOP आधुनिक Software Development में सबसे अधिक उपयोग की जाने वाली Programming Methodology है।
- Program Objects के आधार पर विकसित किया जाता है।
- Data तथा Functions को एक ही Unit (Class) में रखा जाता है।
- Data Hiding एवं Security प्रदान करता है।
- Code Reusability को Support करता है।
- Inheritance द्वारा Existing Classes का पुनः उपयोग किया जा सकता है।
- Polymorphism द्वारा एक Interface के अनेक Forms संभव होते हैं।
- Complex Software को छोटे Modules में विभाजित किया जा सकता है।
Procedure Oriented Programming (POP) vs Object Oriented Programming (OOP)
Procedure Oriented Programming तथा Object Oriented Programming दोनों Software Development की महत्वपूर्ण Techniques हैं, लेकिन दोनों का कार्य करने का तरीका अलग होता है।
| Procedure Oriented Programming | Object Oriented Programming |
|---|---|
| Functions पर आधारित होती है। | Objects पर आधारित होती है। |
| Data कम Secure होता है। | Data अधिक Secure होता है। |
| Code Reusability कम होती है। | Inheritance द्वारा Code Reusability अधिक होती है। |
| Large Projects के लिए कम उपयुक्त। | Large Projects के लिए अधिक उपयुक्त। |
| Example : C Language | Example : C++, Java, C# |
Basic Terminologies of OOP
Object Oriented Programming को समझने से पहले इसकी मूल शब्दावली (Basic Terminologies) को समझना आवश्यक है।
| Term | Meaning |
|---|---|
| Class | Objects बनाने का Blueprint। |
| Object | Class का वास्तविक Instance। |
| Data Member | Object की Properties। |
| Member Function | Object के Operations। |
| Message Passing | Objects के बीच Communication। |
Class
Class एक User Defined Data Type है जो Objects बनाने के लिए Blueprint का कार्य करती है। Class के अंदर Data Members तथा Member Functions दोनों Define किए जाते हैं।
Syntax
ऊपर दिए गए उदाहरण में Student एक Class है जिसमें एक Data Member तथा एक Member Function Declare किए गए हैं।
Object
Object किसी Class का वास्तविक Instance होता है। Class केवल Blueprint प्रदान करती है जबकि Memory Object बनने पर Allocate होती है।
यहाँ s1 तथा s2 दो अलग-अलग Objects हैं। प्रत्येक Object अपनी अलग Memory तथा Data रखता है।
Relationship between Class and Object
↓
Object Creation
↓
Memory Allocation
↓
Program Execution
Class केवल Design प्रदान करती है जबकि Object उस Design का वास्तविक Implementation होता है।
Data Members
Data Members वे Variables होते हैं जो Class के अंदर Declare किए जाते हैं। ये किसी Object की Properties अथवा Characteristics को Represent करते हैं। प्रत्येक Object अपने Data Members की अलग-अलग Copy रखता है।
Example
ऊपर दिए गए उदाहरण में roll, name तथा percentage Class के Data Members हैं।
Member Functions
Member Functions वे Functions होते हैं जो Class के अंदर Declare किए जाते हैं। इनका कार्य Object के Data पर Processing करना होता है। इन्हें Methods भी कहा जाता है।
Example
Member Function Class के Data Members को सीधे Access कर सकता है क्योंकि वह उसी Class का भाग होता है।
Creating Objects
Class बनने के बाद उसके Objects बनाए जाते हैं। Object बनने पर ही Memory Allocate होती है तथा Data Members एवं Member Functions का उपयोग किया जा सकता है।
ऊपर दिए गए उदाहरण में तीन अलग-अलग Objects बनाए गए हैं। प्रत्येक Object स्वतंत्र Memory प्राप्त करता है।
Accessing Class Members
Object के Data Members तथा Member Functions को Access करने के लिए Dot (.) Operator का उपयोग किया जाता है।
Syntax
Example
यहाँ s1.roll द्वारा Data Member तथा s1.display() द्वारा Member Function को Access किया गया है।
Memory Representation of Objects
Class केवल Blueprint होती है। वास्तविक Memory केवल Object बनने पर Allocate होती है। प्रत्येक Object अपने Data Members की अलग-अलग Memory रखता है, जबकि Member Functions सभी Objects द्वारा Share किए जाते हैं।
↓
Object s1
roll
marks
Object s2
roll
marks
Shared Member Functions
Complete Program using Class and Object
Output
इस Program में Student Class का Object बनाया गया है। Object के माध्यम से Data Member को Value Assign की गई तथा Member Function द्वारा उसे Display किया गया।
Access Specifiers in C++
Access Specifiers Class के Members की Accessibility निर्धारित करते हैं। C++ में मुख्यतः तीन प्रकार के Access Specifiers होते हैं - Public, Private तथा Protected। इनके माध्यम से यह नियंत्रित किया जाता है कि Class के Data Members एवं Member Functions को कहाँ से Access किया जा सकता है।
| Access Specifier | Accessibility |
|---|---|
| Public | Class के बाहर तथा अंदर दोनों स्थानों से Access किया जा सकता है। |
| Private | केवल उसी Class के अंदर Access किया जा सकता है। |
| Protected | Class तथा Derived Class के अंदर Access किया जा सकता है। |
Public Access Specifier
Public Members को Program के किसी भी भाग से Object के माध्यम से Access किया जा सकता है। सामान्यतः Member Functions को Public रखा जाता है।
Private Access Specifier
Private Members केवल उसी Class के अंदर Accessible होते हैं। Data Security प्रदान करने के लिए अधिकांश Data Members को Private रखा जाता है।
यदि Private Member को Class के बाहर Access करने का प्रयास किया जाए, तो Compiler Error उत्पन्न होती है।
Protected Access Specifier
Protected Members को उसी Class तथा उससे Derived Classes के अंदर Access किया जा सकता है। Protected Access मुख्यतः Inheritance में उपयोग किया जाता है।
Encapsulation
Encapsulation वह प्रक्रिया है जिसमें Data तथा उससे संबंधित Functions को एक ही Class के अंदर रखा जाता है तथा Data को Direct Access से सुरक्षित रखा जाता है। Encapsulation को Data Hiding भी कहा जाता है।
+
Member Functions
↓
Class
↓
Encapsulation
Encapsulation की सहायता से Program अधिक Secure, Organized तथा Maintainable बनता है।
Advantages of Encapsulation
- Data Security बढ़ती है।
- Unauthorized Access को रोका जा सकता है।
- Program अधिक Organized बनता है।
- Maintenance आसान हो जाती है।
- Code Reusability बढ़ती है।
- Data Hiding संभव होती है।
Abstraction
Abstraction का अर्थ है केवल आवश्यक Information को User के सामने प्रस्तुत करना तथा Internal Implementation Details को छिपाना। इससे Program का उपयोग करना सरल हो जाता है।
उदाहरण के लिए जब हम Car चलाते हैं, तब हमें Engine के Internal Working की जानकारी आवश्यक नहीं होती। हमें केवल Steering, Brake तथा Accelerator का उपयोग करना होता है। यही Concept Programming में Abstraction कहलाता है।
| Encapsulation | Abstraction |
|---|---|
| Data तथा Functions को एक Unit में रखता है। | Implementation को Hide करता है। |
| Data Security प्रदान करता है। | Complexity कम करता है। |
| Class का उपयोग करता है। | Interface पर Focus करता है। |
Inheritance
Inheritance Object Oriented Programming का एक महत्वपूर्ण Feature है जिसके माध्यम से एक नई Class (Derived Class) किसी Existing Class (Base Class) की Properties तथा Member Functions को प्राप्त कर सकती है। इससे Code Reusability बढ़ती है तथा Program को अधिक Efficient तरीके से विकसित किया जा सकता है।
Inheritance का मुख्य उद्देश्य पहले से लिखे गए Code का पुनः उपयोग (Reuse) करना है। यदि किसी नई Class में पहले से उपलब्ध Features की आवश्यकता हो, तो उन्हें दोबारा लिखने के बजाय Existing Class से Inherit किया जाता है।
↓
Inheritance
↓
Derived Class
Advantages of Inheritance
- Code Reusability बढ़ती है।
- Program का Development Time कम होता है।
- Maintenance आसान हो जाती है।
- Hierarchical Relationship बनाई जा सकती है।
- Large Applications को Manage करना आसान होता है।
- Program अधिक Modular बनता है।
Types of Inheritance
C++ में मुख्यतः पाँच प्रकार की Inheritance पाई जाती हैं।
| Type | Description |
|---|---|
| Single Inheritance | एक Base Class तथा एक Derived Class। |
| Multiple Inheritance | एक Derived Class कई Base Classes से Inherit करती है। |
| Multilevel Inheritance | एक Derived Class दूसरी Derived Class की Base बनती है। |
| Hierarchical Inheritance | एक Base Class से कई Derived Classes बनती हैं। |
| Hybrid Inheritance | दो या अधिक प्रकार की Inheritance का Combination। |
Polymorphism
Polymorphism का अर्थ है "One Interface, Many Forms" अर्थात एक ही Function अथवा Interface अलग-अलग परिस्थितियों में अलग-अलग प्रकार से कार्य कर सकता है। Polymorphism OOP का अत्यंत महत्वपूर्ण Feature है।
Polymorphism की सहायता से एक ही Function Name विभिन्न Data Types अथवा Objects के साथ अलग-अलग व्यवहार (Behavior) प्रदर्शित करता है।
Types of Polymorphism
| Type | Description |
|---|---|
| Compile Time Polymorphism | Compiler द्वारा Compile Time पर Resolve किया जाता है। |
| Run Time Polymorphism | Program Execute होने के दौरान Resolve होता है। |
Compile Time Polymorphism
Compile Time Polymorphism को Static Binding भी कहा जाता है। यह मुख्यतः Function Overloading तथा Operator Overloading द्वारा प्राप्त किया जाता है।
Compiler Parameters के आधार पर सही Function का चयन Compile Time पर करता है।
Run Time Polymorphism
Run Time Polymorphism को Dynamic Binding भी कहा जाता है। यह मुख्यतः Function Overriding तथा Virtual Function की सहायता से प्राप्त किया जाता है।
Program Execute होने के समय वास्तविक Object के आधार पर उचित Function Execute किया जाता है।
Function Overloading
Function Overloading C++ का महत्वपूर्ण Feature है जिसमें एक ही Function Name का उपयोग विभिन्न Parameter Lists के साथ किया जा सकता है। Compiler Parameters की संख्या अथवा Data Type के आधार पर उचित Function का चयन करता है।
यह Compile Time Polymorphism का सबसे सामान्य उदाहरण है।
Function Overriding
Function Overriding में Derived Class, Base Class के Function को अपनी आवश्यकता के अनुसार पुनः Define करती है। इसका उपयोग Run Time Polymorphism प्राप्त करने के लिए किया जाता है।
Message Passing
Message Passing वह प्रक्रिया है जिसमें एक Object दूसरे Object के Member Function को Call करके Communication करता है। OOP में Objects आपस में Messages भेजकर कार्य करते हैं।
↓ Message
↓ Object B
↓ Response
Applications of Object Oriented Programming
| Application | Purpose |
|---|---|
| Banking Software | Customer एवं Account Management |
| Hospital Management | Patient Records एवं Billing |
| Library Management | Books एवं Member Records |
| Payroll System | Employee Salary Processing |
| Inventory Management | Product एवं Stock Management |
| Game Development | Characters एवं Objects का Management |
| GUI Applications | Window एवं Event Handling |
| Mobile Applications | Reusable Components बनाना |
Advantages of Object Oriented Programming
- Code Reusability बढ़ती है।
- Data Security प्राप्त होती है।
- Maintenance आसान होती है।
- Software Development तेज़ हो जाता है।
- Real World Modeling संभव होती है।
- Large Projects को आसानी से Manage किया जा सकता है।
- Debugging एवं Testing सरल हो जाती है।
- Reusable Components बनाए जा सकते हैं।
Limitations of Object Oriented Programming
- छोटे Programs के लिए OOP आवश्यक नहीं होती।
- Program Design अपेक्षाकृत जटिल हो सकता है।
- Memory Consumption अधिक हो सकती है।
- Learning Curve प्रारंभ में अधिक होता है।
- Improper Design होने पर Performance प्रभावित हो सकती है।
Summary
| Concept | Description |
|---|---|
| Class | Objects बनाने का Blueprint। |
| Object | Class का Instance। |
| Encapsulation | Data एवं Functions को एक Unit में रखना। |
| Abstraction | Implementation को Hide करना। |
| Inheritance | Existing Class से नई Class बनाना। |
| Polymorphism | One Interface, Many Forms। |
| Message Passing | Objects के बीच Communication। |
Important Viva Questions
- Object Oriented Programming क्या है?
- Class तथा Object में क्या अंतर है?
- Encapsulation क्या है?
- Abstraction क्या है?
- Inheritance क्या है?
- Inheritance के प्रकार लिखिए।
- Polymorphism क्या है?
- Compile Time तथा Run Time Polymorphism में अंतर लिखिए।
- Function Overloading एवं Function Overriding क्या हैं?
- Message Passing क्या है?
University Examination Important Questions
- Object Oriented Programming की परिभाषा लिखिए तथा इसके Features समझाइए।
- Procedure Oriented Programming तथा Object Oriented Programming में अंतर लिखिए।
- Class तथा Object को उदाहरण सहित समझाइए।
- Access Specifiers क्या हैं? Public, Private एवं Protected को समझाइए।
- Encapsulation एवं Abstraction में अंतर लिखिए।
- Inheritance तथा उसके प्रकारों को समझाइए।
- Polymorphism क्या है? Compile Time तथा Run Time Polymorphism को उदाहरण सहित समझाइए।
- Function Overloading एवं Function Overriding में अंतर लिखिए।
- Message Passing क्या है?
- OOP के Advantages एवं Applications लिखिए।
Conclusion
Object Oriented Programming (OOP) आधुनिक Software Development की सबसे लोकप्रिय Programming Methodology है। Class, Object, Encapsulation, Abstraction, Inheritance तथा Polymorphism जैसे Concepts Program को अधिक Secure, Reusable तथा Maintainable बनाते हैं। Banking, Hospital, Inventory, ERP, Mobile Apps, Desktop Software तथा Enterprise Applications में OOP का व्यापक उपयोग किया जाता है। RGPV B.Tech विद्यार्थियों के लिए OOP Concepts Theory, Practical तथा Viva तीनों दृष्टिकोण से अत्यंत महत्वपूर्ण हैं।
Related Articles
Arrays of Objects in C++ Notes | Object Array, Declaration, Initialization & Examples | Basic Computer Engineering | RGPV BTech First Year
Arrays ...
Read More →Object as Function Argument & Returning Object from Function in C++ Notes | Pass Object to Function, Return Object & Examples | Basic Computer Engineering | RGPV BTech First Year
Object ...
Read More →Pointers to Objects in C++ Notes | Object Pointer, Accessing Members using Pointer & Examples | Basic Computer Engineering | RGPV BTech First Year
Pointer...
Read More →Dynamic Memory Allocation in C++ Notes | new & delete Operators, Heap Memory, Dynamic Objects & Examples | Basic Computer Engineering | RGPV BTech First Year
Dynamic...
Read More →this Pointer in C++ Notes | this Keyword, Uses, Advantages & Examples | Basic Computer Engineering | RGPV BTech First Year
this Po...
Read More →