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 से संबंधित प्रश्न नियमित रूप से पूछे जाते हैं।

Real World Object



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 दोनों शामिल होते हैं।

Class ↓ Object ↓ Data + Functions ↓ Real World Application

उदाहरण के लिए 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

class Student { public: int roll; void display(); };

ऊपर दिए गए उदाहरण में Student एक Class है जिसमें एक Data Member तथा एक Member Function Declare किए गए हैं।


Object

Object किसी Class का वास्तविक Instance होता है। Class केवल Blueprint प्रदान करती है जबकि Memory Object बनने पर Allocate होती है।

Student s1; Student s2;

यहाँ s1 तथा s2 दो अलग-अलग Objects हैं। प्रत्येक Object अपनी अलग Memory तथा Data रखता है।


Relationship between Class and Object

Class



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

class Student { public: int roll; char name[30]; float percentage; };

ऊपर दिए गए उदाहरण में roll, name तथा percentage Class के Data Members हैं।


Member Functions

Member Functions वे Functions होते हैं जो Class के अंदर Declare किए जाते हैं। इनका कार्य Object के Data पर Processing करना होता है। इन्हें Methods भी कहा जाता है।

Example

class Student { public: int roll; void display() { cout << roll; } };

Member Function Class के Data Members को सीधे Access कर सकता है क्योंकि वह उसी Class का भाग होता है।


Creating Objects

Class बनने के बाद उसके Objects बनाए जाते हैं। Object बनने पर ही Memory Allocate होती है तथा Data Members एवं Member Functions का उपयोग किया जा सकता है।

Student s1; Student s2; Student s3;

ऊपर दिए गए उदाहरण में तीन अलग-अलग Objects बनाए गए हैं। प्रत्येक Object स्वतंत्र Memory प्राप्त करता है।


Accessing Class Members

Object के Data Members तथा Member Functions को Access करने के लिए Dot (.) Operator का उपयोग किया जाता है।

Syntax

object_name.member; object_name.function();

Example

Student s1; s1.roll = 101; s1.display();

यहाँ 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 किए जाते हैं।

Class



Object s1
roll
marks

Object s2
roll
marks

Shared Member Functions

Complete Program using Class and Object

#include<iostream> using namespace std; class Student { public: int roll; void display() { cout << roll; } }; int main() { Student s1; s1.roll = 101; s1.display(); return 0; }

Output

101

इस 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 रखा जाता है।

class Student { public: int roll; };

Private Access Specifier

Private Members केवल उसी Class के अंदर Accessible होते हैं। Data Security प्रदान करने के लिए अधिकांश Data Members को Private रखा जाता है।

class Student { private: int marks; };

यदि Private Member को Class के बाहर Access करने का प्रयास किया जाए, तो Compiler Error उत्पन्न होती है।


Protected Access Specifier

Protected Members को उसी Class तथा उससे Derived Classes के अंदर Access किया जा सकता है। Protected Access मुख्यतः Inheritance में उपयोग किया जाता है।

class Student { protected: int marks; };

Encapsulation

Encapsulation वह प्रक्रिया है जिसमें Data तथा उससे संबंधित Functions को एक ही Class के अंदर रखा जाता है तथा Data को Direct Access से सुरक्षित रखा जाता है। Encapsulation को Data Hiding भी कहा जाता है।

Data

+

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 किया जाता है।

Base Class



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 द्वारा प्राप्त किया जाता है।

int add(int a,int b); float add(float a,float b);

Compiler Parameters के आधार पर सही Function का चयन Compile Time पर करता है।


Run Time Polymorphism

Run Time Polymorphism को Dynamic Binding भी कहा जाता है। यह मुख्यतः Function Overriding तथा Virtual Function की सहायता से प्राप्त किया जाता है।

class Base { public: virtual void display(); };

Program Execute होने के समय वास्तविक Object के आधार पर उचित Function Execute किया जाता है।


Function Overloading

Function Overloading C++ का महत्वपूर्ण Feature है जिसमें एक ही Function Name का उपयोग विभिन्न Parameter Lists के साथ किया जा सकता है। Compiler Parameters की संख्या अथवा Data Type के आधार पर उचित Function का चयन करता है।

int add(int a,int b); float add(float a,float b); double add(double a,double b);

यह Compile Time Polymorphism का सबसे सामान्य उदाहरण है।


Function Overriding

Function Overriding में Derived Class, Base Class के Function को अपनी आवश्यकता के अनुसार पुनः Define करती है। इसका उपयोग Run Time Polymorphism प्राप्त करने के लिए किया जाता है।

class Base { public: virtual void display(); }; class Derived : public Base { public: void display(); };

Message Passing

Message Passing वह प्रक्रिया है जिसमें एक Object दूसरे Object के Member Function को Call करके Communication करता है। OOP में Objects आपस में Messages भेजकर कार्य करते हैं।

Object A

↓ 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

  1. Object Oriented Programming क्या है?
  2. Class तथा Object में क्या अंतर है?
  3. Encapsulation क्या है?
  4. Abstraction क्या है?
  5. Inheritance क्या है?
  6. Inheritance के प्रकार लिखिए।
  7. Polymorphism क्या है?
  8. Compile Time तथा Run Time Polymorphism में अंतर लिखिए।
  9. Function Overloading एवं Function Overriding क्या हैं?
  10. Message Passing क्या है?

University Examination Important Questions

  1. Object Oriented Programming की परिभाषा लिखिए तथा इसके Features समझाइए।
  2. Procedure Oriented Programming तथा Object Oriented Programming में अंतर लिखिए।
  3. Class तथा Object को उदाहरण सहित समझाइए।
  4. Access Specifiers क्या हैं? Public, Private एवं Protected को समझाइए।
  5. Encapsulation एवं Abstraction में अंतर लिखिए।
  6. Inheritance तथा उसके प्रकारों को समझाइए।
  7. Polymorphism क्या है? Compile Time तथा Run Time Polymorphism को उदाहरण सहित समझाइए।
  8. Function Overloading एवं Function Overriding में अंतर लिखिए।
  9. Message Passing क्या है?
  10. 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 →