Visibility Modes in C++ Inheritance Notes | Public, Protected & Private Inheritance | Basic Computer Engineering | RGPV BTech First Year

Visibility Modes in C++ Inheritance Notes | Public, Protected & Private Inheritance | Basic Computer Engineering | RGPV BTech First Year


Visibility Modes in C++ Inheritance

Visibility Modes C++ Inheritance का एक अत्यंत महत्वपूर्ण Concept है जो यह निर्धारित करता है कि Base Class के Members Derived Class में किस प्रकार उपलब्ध (Accessible) होंगे। Visibility Mode यह नियंत्रित करता है कि Base Class के Public, Protected तथा Private Members Inheritance के बाद किस Access Level में परिवर्तित होंगे।

C++ में मुख्य रूप से तीन Visibility Modes उपलब्ध हैं — Public Inheritance, Protected Inheritance तथा Private Inheritance। प्रत्येक Mode का उद्देश्य अलग-अलग प्रकार की Accessibility तथा Data Protection प्रदान करना है।

RGPV B.Tech First Year के Basic Computer Engineering Subject में Visibility Modes in Inheritance एक महत्वपूर्ण Topic है। University Examination, Practical तथा Viva में Public, Protected एवं Private Inheritance की Comparison Table, Accessibility Rules तथा Programs से संबंधित प्रश्न नियमित रूप से पूछे जाते हैं।

Base Class



Visibility Mode



Derived Class



Access Control

Introduction to Visibility Modes

Inheritance केवल Base Class की Properties प्राप्त करने की प्रक्रिया नहीं है, बल्कि यह भी निर्धारित करता है कि वे Properties Derived Class में किस प्रकार उपलब्ध रहेंगी। इसी उद्देश्य को पूरा करने के लिए Visibility Modes का उपयोग किया जाता है।

Visibility Mode यह नियंत्रित करता है कि कौन-से Members सीधे Access किए जा सकते हैं, कौन-से केवल Derived Classes के लिए उपलब्ध होंगे तथा कौन-से पूरी तरह Hidden रहेंगे। इससे Data Security तथा Program Structure दोनों बेहतर होते हैं।


What are Visibility Modes?

Visibility Modes वे Rules हैं जो यह निर्धारित करते हैं कि Inheritance के दौरान Base Class के Members Derived Class में किस Access Level के साथ उपलब्ध होंगे।

Visibility Mode का चयन करते समय Programmer यह तय करता है कि Base Class के Public तथा Protected Members को Derived Class में Public, Protected अथवा Private के रूप में रखना है।

class Derived : public Base class Derived : protected Base class Derived : private Base

ऊपर दिए गए तीनों Syntax क्रमशः Public, Protected तथा Private Inheritance को दर्शाते हैं।


Need of Visibility Modes

यदि सभी Base Class Members समान प्रकार से Derived Class में उपलब्ध हों, तो Data Security तथा Program Control प्रभावित हो सकता है। इसलिए Visibility Modes का उपयोग आवश्यक होता है।

  • Data Security बनाए रखने के लिए।
  • Access Control लागू करने के लिए।
  • Object Oriented Design को बेहतर बनाने के लिए।
  • Unwanted Data Access को रोकने के लिए।
  • Encapsulation को प्रभावी बनाने के लिए।
  • Large Software Projects में Controlled Access प्रदान करने के लिए।
  • Professional Object Oriented Programming Standards को लागू करने के लिए।

Advantages of Visibility Modes

Advantage Description
Access Control Members की Accessibility नियंत्रित की जा सकती है।
Data Protection Sensitive Data को सुरक्षित रखा जा सकता है।
Better Encapsulation Object Oriented Programming के Encapsulation सिद्धांत को मजबूत बनाता है।
Flexible Design Program की आवश्यकता अनुसार Access Level निर्धारित किया जा सकता है।
Professional Coding Large Scale Software Development में सुरक्षित एवं Maintainable Code लिखने में सहायता करता है।

Public Inheritance

Public Inheritance C++ में सबसे अधिक उपयोग किया जाने वाला Visibility Mode है। इसमें Base Class के Public Members Derived Class में भी Public रहते हैं तथा Protected Members Protected ही रहते हैं। Base Class के Private Members सीधे Access नहीं किए जा सकते।

Public → Public

Protected → Protected

Private → Not Accessible

Syntax of Public Inheritance

class Derived : public Base { // Members };

Example of Public Inheritance

#include<iostream> using namespace std; class Student { public: void display() { cout << "Student Details"; } }; class Result : public Student { }; int main() { Result r; r.display(); return 0; }

Output

Student Details

ऊपर दिए गए Program में display() Function Base Class का Public Member है, इसलिए Public Inheritance के कारण इसे Derived Class के Object द्वारा सीधे Access किया जा सकता है।


Protected Inheritance

Protected Inheritance में Base Class के Public तथा Protected दोनों Members, Derived Class में Protected बन जाते हैं। इन्हें Derived Class के अंदर उपयोग किया जा सकता है, लेकिन बाहरी Objects द्वारा सीधे Access नहीं किया जा सकता।

Public → Protected

Protected → Protected

Private → Not Accessible

Syntax of Protected Inheritance

class Derived : protected Base { // Members };

Example of Protected Inheritance

#include<iostream> using namespace std; class Student { public: void display() { cout << "Student Details"; } }; class Result : protected Student { public: void show() { display(); } }; int main() { Result r; r.show(); return 0; }

Output

Student Details

इस उदाहरण में display() Function Protected Member बन गया है। इसलिए इसे केवल Result Class के अंदर Access किया गया है, Main Function से सीधे Call नहीं किया जा सकता।


Private Inheritance

Private Inheritance में Base Class के Public तथा Protected Members दोनों, Derived Class में Private बन जाते हैं। इसलिए इन्हें केवल Derived Class के अंदर ही उपयोग किया जा सकता है। Derived Class के Object द्वारा इन्हें सीधे Access नहीं किया जा सकता।

Public → Private

Protected → Private

Private → Not Accessible

Syntax of Private Inheritance

class Derived : private Base { // Members };

Example of Private Inheritance

#include<iostream> using namespace std; class Student { public: void display() { cout << "Student Details"; } }; class Result : private Student { public: void show() { display(); } }; int main() { Result r; r.show(); return 0; }

Output

Student Details

ऊपर दिए गए Program में display() Function Private Member बन गया है। इसलिए इसे केवल Result Class के Member Function show() के अंदर Call किया गया है। Main Function से r.display() लिखना Error देगा।


Accessibility Rules of Visibility Modes

Visibility Mode यह निर्धारित करता है कि Base Class के Public, Protected तथा Private Members Derived Class में किस Access Level के साथ उपलब्ध होंगे।

Base Class Member Public Inheritance Protected Inheritance Private Inheritance
Public Public Protected Private
Protected Protected Protected Private
Private Not Accessible Not Accessible Not Accessible

Scope Resolution with Inheritance

यदि Base Class तथा Derived Class दोनों में समान नाम का Member Function हो, तो आवश्यकता पड़ने पर Scope Resolution Operator (::) का उपयोग करके Base Class के Member को स्पष्ट रूप से Access किया जा सकता है।

class Base { public: void show(); }; class Derived : public Base { public: void show(); };

ऐसी स्थिति में Base Class के Function को Access करने के लिए सामान्यतः Base::show() का उपयोग किया जाता है।


Comparison of Visibility Modes

Feature Public Protected Private
Public Members Remain Public Become Protected Become Private
Protected Members Remain Protected Remain Protected Become Private
Private Members Not Accessible Not Accessible Not Accessible
External Access Allowed for Public Members Not Allowed Not Allowed

Advantages of Visibility Modes

Visibility Modes Object Oriented Programming में Data Security तथा Access Control बनाए रखने में महत्वपूर्ण भूमिका निभाते हैं। इनके द्वारा Programmer यह निर्धारित कर सकता है कि Base Class के कौन-से Members Derived Class अथवा बाहरी Objects द्वारा Access किए जा सकते हैं।

  • Data Security को बेहतर बनाते हैं।
  • Members की Accessibility नियंत्रित करते हैं।
  • Encapsulation को प्रभावी बनाते हैं।
  • Program की Maintainability बढ़ाते हैं।
  • Large Software Projects में Controlled Access प्रदान करते हैं।
  • Object Oriented Design को अधिक सुरक्षित बनाते हैं।
  • Professional Programming Standards को Follow करने में सहायता करते हैं।

Limitations of Visibility Modes

यद्यपि Visibility Modes अत्यंत उपयोगी हैं, लेकिन गलत Mode का चयन Program की Flexibility तथा Accessibility को प्रभावित कर सकता है।

  • गलत Visibility Mode चुनने पर Members आवश्यक स्थान पर उपलब्ध नहीं रहते।
  • Private Inheritance Program की Reusability कम कर सकती है।
  • Protected Members Beginners के लिए समझना कठिन हो सकता है।
  • Access Rules अधिक होने पर Program थोड़ा Complex हो सकता है।
  • गलत Access Level के कारण Compilation Errors आ सकते हैं।
  • Design सही न होने पर Maintenance कठिन हो सकती है।

Applications of Visibility Modes

Application Purpose
Banking Software Sensitive Account Data की सुरक्षा करना।
Hospital Management System Patient Records की सुरक्षित Accessibility निर्धारित करना।
School ERP Student एवं Teacher Information का नियंत्रित उपयोग।
Employee Management Salary तथा Personal Data को सुरक्षित रखना।
Enterprise Applications Business Modules के बीच Controlled Data Sharing।
Library Management System Books एवं Members के Records की सुरक्षित Access Control।

Best Practices

  • जहाँ संभव हो Public Inheritance का उपयोग करें क्योंकि यह वास्तविक IS-A Relationship को दर्शाता है।
  • Private Members का उपयोग Sensitive Data के लिए करें।
  • Protected Members केवल तब उपयोग करें जब Derived Classes को Access देना आवश्यक हो।
  • अनावश्यक रूप से सभी Members को Public न रखें।
  • Class Design को सरल एवं Maintainable बनाए रखें।
  • Meaningful Access Levels का चयन करें।
  • Object Oriented Design Principles का पालन करें।

Real Life Example

मान लीजिए किसी Bank Management System में Account Base Class है। इसमें Account Number Public हो सकता है, Balance Protected रखा जा सकता है ताकि केवल Derived Classes (जैसे SavingsAccount एवं CurrentAccount) इसका उपयोग कर सकें, जबकि ATM PIN Private रखा जाता है ताकि उसे बाहरी Objects अथवा Derived Classes सीधे Access न कर सकें। इस प्रकार Visibility Modes Data की सुरक्षा तथा उचित Accessibility सुनिश्चित करते हैं।


Working of Visibility Modes

Base Class Members



Select Visibility Mode



Public / Protected / Private Conversion



Derived Class Access



Controlled Data Security

Applications of Visibility Modes

Visibility Modes का उपयोग आधुनिक Object Oriented Software Development में Data Security, Controlled Access तथा Encapsulation को लागू करने के लिए किया जाता है। Banking, Hospital, Education, Enterprise तथा Government Applications में इनका व्यापक उपयोग होता है।

Application Purpose
Banking Software Account Balance, PIN एवं Transaction Data को सुरक्षित रखना।
Hospital Management System Patient Medical Records की Controlled Accessibility सुनिश्चित करना।
School & University ERP Student, Teacher तथा Examination Data की सुरक्षा करना।
Employee Management System Salary, Personal Information एवं HR Records को सुरक्षित रखना।
Library Management System Books, Members तथा Issue Records पर नियंत्रित Access प्रदान करना।
E-Commerce Applications Customer तथा Payment Information की सुरक्षा करना।
Enterprise Software Business Modules के बीच सुरक्षित Data Sharing लागू करना।

Advantages of Visibility Modes

  • Data Security को मजबूत बनाते हैं।
  • Members की Accessibility को नियंत्रित करते हैं।
  • Encapsulation को प्रभावी रूप से लागू करते हैं।
  • Program की Maintainability एवं Readability बढ़ाते हैं।
  • Unauthorized Access को रोकते हैं।
  • Large Scale Software Development के लिए उपयुक्त हैं।
  • Professional Object Oriented Design Principles को Support करते हैं।

Limitations of Visibility Modes

  • गलत Visibility Mode चुनने पर Program Design प्रभावित हो सकता है।
  • Private Inheritance Reusability को सीमित कर सकती है।
  • Protected Members Beginners के लिए भ्रम उत्पन्न कर सकते हैं।
  • Complex Access Rules के कारण Code समझना कठिन हो सकता है।
  • Improper Access Control से Maintenance कठिन हो सकती है।
  • गलत Member Accessibility के कारण Compilation Errors आ सकते हैं।
  • Large Projects में Visibility Planning आवश्यक होती है।

Best Practices

  • जहाँ वास्तविक IS-A Relationship हो वहाँ Public Inheritance का उपयोग करें।
  • Sensitive Data को Private रखें।
  • Protected Members केवल Derived Classes के लिए उपयोग करें।
  • सभी Members को Public घोषित करने से बचें।
  • Class Design को Modular एवं Maintainable रखें।
  • Meaningful Access Levels निर्धारित करें।
  • Object Oriented Programming के Encapsulation Principle का पालन करें।

Real Life Example

मान लीजिए किसी Online Banking System में Account नाम की Base Class है। इसमें Account Number Public रखा जाता है ताकि आवश्यकता अनुसार प्रदर्शित किया जा सके। Balance Protected रखा जाता है ताकि केवल SavingsAccount तथा CurrentAccount जैसी Derived Classes ही इसे Modify कर सकें। वहीं ATM PIN तथा Password को Private रखा जाता है ताकि उन्हें न तो बाहरी Objects और न ही Derived Classes सीधे Access कर सकें। इस प्रकार Visibility Modes System की Security तथा Controlled Access सुनिश्चित करते हैं।


Working of Visibility Modes

Create Base Class



Declare Public / Protected / Private Members



Select Visibility Mode



Members Converted According to Rules



Derived Class Access



Secure & Controlled Program Execution

Summary

Visibility Modes C++ Inheritance का एक अत्यंत महत्वपूर्ण Concept है जो यह निर्धारित करता है कि Base Class के Members Derived Class में किस Access Level के साथ उपलब्ध होंगे। C++ में तीन प्रमुख Visibility Modes होते हैं—Public Inheritance, Protected Inheritance तथा Private Inheritance। Public Inheritance में Public Members Public रहते हैं, Protected Members Protected रहते हैं तथा Private Members सीधे Accessible नहीं होते। Protected Inheritance में Public एवं Protected Members दोनों Protected बन जाते हैं, जबकि Private Inheritance में Public एवं Protected Members Private बन जाते हैं। Visibility Modes Data Security, Encapsulation तथा Controlled Access को प्रभावी रूप से लागू करने में महत्वपूर्ण भूमिका निभाते हैं।

Visibility Mode Public Members Protected Members Private Members
Public Inheritance Remain Public Remain Protected Not Accessible
Protected Inheritance Become Protected Remain Protected Not Accessible
Private Inheritance Become Private Become Private Not Accessible
Main Purpose Data Security, Controlled Accessibility एवं Encapsulation सुनिश्चित करना।

Important Viva Questions

  1. Visibility Modes क्या हैं?
  2. Public Inheritance क्या है?
  3. Protected Inheritance क्या है?
  4. Private Inheritance क्या है?
  5. Visibility Modes की आवश्यकता क्यों होती है?
  6. Public, Protected तथा Private Members में क्या अंतर है?
  7. Public Inheritance में Base Class के Members किस प्रकार उपलब्ध होते हैं?
  8. Protected Inheritance में Public Member का Access Level क्या बनता है?
  9. Private Inheritance का मुख्य उद्देश्य क्या है?
  10. Visibility Modes Encapsulation को कैसे Support करते हैं?

University Examination Important Questions

  1. Visibility Modes क्या हैं? उदाहरण सहित समझाइए।
  2. Public, Protected तथा Private Inheritance में अंतर स्पष्ट कीजिए।
  3. Visibility Conversion Table को उदाहरण सहित समझाइए।
  4. Public Inheritance का Program लिखिए।
  5. Protected Inheritance का Program लिखिए।
  6. Private Inheritance का Program लिखिए।
  7. Visibility Modes की आवश्यकता एवं Advantages लिखिए।
  8. Visibility Modes के Applications लिखिए।
  9. Visibility Modes तथा Access Specifiers में अंतर स्पष्ट कीजिए।
  10. Object Oriented Programming में Visibility Modes की भूमिका समझाइए।

Exam Tips

  • हमेशा याद रखें कि Visibility Mode केवल Inheritance के समय Members की Accessibility निर्धारित करता है।
  • Public Inheritance सबसे अधिक उपयोग किया जाने वाला Visibility Mode है।
  • Public, Protected एवं Private Inheritance की Visibility Conversion Table परीक्षा के लिए अत्यंत महत्वपूर्ण है।
  • Base Class के Private Members किसी भी Visibility Mode में सीधे Derived Class द्वारा Access नहीं किए जा सकते।
  • Comparison Table बनाकर तीनों Visibility Modes का अंतर याद करें।
  • Programs में Public, Protected तथा Private Inheritance के Syntax का अभ्यास अवश्य करें।
  • RGPV Practical एवं Viva में Visibility Modes तथा Accessibility Rules पर आधारित प्रश्न नियमित रूप से पूछे जाते हैं।

Conclusion

Visibility Modes C++ Inheritance का एक आधारभूत तथा अत्यंत महत्वपूर्ण Concept है जो Base Class के Members की Accessibility को नियंत्रित करता है। Public, Protected तथा Private Inheritance के माध्यम से Programmer Program की आवश्यकता अनुसार Data Security एवं Access Control लागू कर सकता है। इनका सही उपयोग Software को अधिक Secure, Modular तथा Maintainable बनाता है। Banking Systems, Hospital Management, School ERP, Enterprise Applications तथा अन्य Professional Software Projects में Visibility Modes का व्यापक उपयोग किया जाता है। RGPV B.Tech First Year के विद्यार्थियों के लिए यह Topic Theory, Practical तथा Viva तीनों दृष्टिकोण से अत्यंत महत्वपूर्ण है।

Related Articles

Standard Template Library (STL) in C++ Notes | Containers, Iterators & Algorithms | Basic Computer Engineering | RGPV BTech First Year

Standar...

Read More →

Exception Handling in C++ Notes | try, throw, catch & Exception Handling Mechanism | Basic Computer Engineering | RGPV BTech First Year

Excepti...

Read More →

Templates in C++ Notes | Function Templates, Class Templates & Generic Programming | Basic Computer Engineering | RGPV BTech First Year

Templat...

Read More →

Virtual Functions in C++ Notes | Virtual Function, Pure Virtual Function & Dynamic Binding | Basic Computer Engineering | RGPV BTech First Year

Virtual...

Read More →

Function Overriding in C++ Notes | Method Overriding, Runtime Polymorphism & Examples | Basic Computer Engineering | RGPV BTech First Year

Functio...

Read More →