programmingc++encapsulationaccess control
Encapsulation and Access Control in C++
By Swann
- Published on
Sharing
Introduction
Encapsulation, a fundamental object-oriented programming (OOP) principle, encapsulates data (variables) and methods (functions) into a single unit known as a 'class' in C++ programming. It enhances data integrity and security by restricting unauthorized access and modification to the data.
Understanding Encapsulation
Key Points
- Data Hiding: Encapsulation conceals the internal states of objects.
- Data Protection: It protects data from unauthorized access and modification.
Example
class Circle {
private: // Private member
double radius;
public: // Public member
void setRadius(double r) {
radius = r;
}
double getArea() {
return 3.14 * radius * radius;
}
};
Access Control in C++
Access Specifiers
- Public: Members are accessible from outside the class.
- Private: Members cannot be accessed (or viewed) from outside the class.
- Protected: Members cannot be accessed from outside the class, but can be accessed in inherited classes.
Example
class Box {
private:
int length;
public:
void setLength(int l) {
length = l;
}
int getLength() {
return length;
}
};
Benefits of Encapsulation and Access Control
- Enhanced Security: Protect data from unauthorized access and modification.
- Improved Maintainability: Encapsulation fosters a modular approach, enhancing maintainability.
- Controlled Access: Developers have controlled access to the data, ensuring data integrity.
Practical Implementation
#include<iostream>
using namespace std;
class Employee {
private:
int salary;
public:
void setSalary(int s) {
if(s > 0) // Data validation
salary = s;
else
cout << "Invalid salary" << endl;
}
int getSalary() {
return salary;
}
};
int main() {
Employee e1;
e1.setSalary(5000); // Using setter to assign value
cout << "Salary: " << e1.getSalary() << endl; // Using getter to retrieve value
return 0;
}
Conclusion
Encapsulation and access control stand as crucial principles in C++ programming, safeguarding data from unauthorized access and fostering data integrity. By ensuring data is accessed and modified through controlled interfaces (methods), developers can secure, validate, and manage data efficiently within the OOP paradigm.