Encapsulation ใน OOP Concept คืออะไร? การใช้งานและตัวอย่างง่ายๆในภาษา C++
การเขียนโปรแกรมเป็นมากกว่าการทำให้โค้ดทำงานได้—มันเกี่ยวข้องกับการออกแบบโครงสร้างที่มีประสิทธิภาพและง่ายต่อการดูแลรักษา หนึ่งในคอนเซปต์พื้นฐานที่สำคัญที่สุดของการเขียนโปรแกรมแบบ Object-oriented หรือ OOP คือ Encapsulation หรือการห่อหุ้มข้อมูล โดยหมายถึงการซ่อนรายละเอียดการทำงานภายในของวัตถุ (object) เพื่อป้องกันการเข้าถึงข้อมูลอย่างไม่สมควรจากภายนอก
เมื่อพูดถึง Encapsulation, วัตถุในภาษาโปรแกรมมิ่งควรจะเป็นเหมือนกล่องดำที่ผู้ใช้สามารถมองเห็นเพียงแค่ส่วนติดต่อหรือ Interface ที่วางไว้ ข้อมูลภายในวัตถุนั้นจะถูกห่อหุ้มอย่างดีเพื่อความปลอดภัย การทำงานภายในไม่สามารถถูกเข้าถึงโดยตรงจากภายนอก ผู้ใช้จะทำงานร่วมกับวัตถุผ่าน Methods ที่ถูกกำหนดไว้
ในภาษา C++, Encapsulation สามารถทำได้โดยการใช้การประกาศตัวแปรเป็น Private ภายใน class และสร้าง public methods ที่เรียกว่า Getter และ Setter สำหรับการเข้าถึงและตั้งค่าตัวแปรเหล่านั้น
ต่อไปนี้เป็นตัวอย่างของ Encapsulation ใน C++:
#include
using namespace std;
class Employee {
private:
int salary;
public:
// Setter
void setSalary(int s) {
// You might include validation to ensure reasonable salary
salary = s;
}
// Getter
int getSalary() {
return salary;
}
};
int main() {
Employee emp;
emp.setSalary(50000);
cout << "Salary: " << emp.getSalary() << endl;
return 0;
}
1. ระบบการจัดการบัญชีธนาคาร
การใช้ Encapsulation ในระบบธนาคารช่วยให้มั่นใจได้ว่าข้อมูลทางการเงินของลูกค้าจะไม่ถูกเข้าถึงโดยไม่ได้รับอนุญาต ตัวอย่างเช่น ข้อมูลยอดเงินในบัญชีหรือการทำธุรกรรมต่างๆ จะถูก encapsulate โดยมีเพียงแค่ methods ที่เหมาะสมจึงจะสามารถเข้าถึงได้
class BankAccount {
private:
double balance;
public:
void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
double getBalance() {
// Additional security checks can be implemented
return balance;
}
};
2. ระบบการจัดการพนักงาน
บริษัทอาจมีข้อมูลอ่อนไหวของพนักงานเช่น รายได้หรือประวัติการทำงาน ซึ่งควรถูก encapsulate เพื่อความเป็นส่วนตัว โค้ดภายใน class จะคอยจัดการข้อมูลนี้โดยเข้าถึงผ่าน interfaces ที่ปลอดภัย
class Employee {
private:
int employeeID;
int employeeSalary;
public:
// Only Employee can set its ID
void setEmployeeID(int id) {
employeeID = id;
}
// Anyone can get an Employee's ID
int getEmployeeID() {
return employeeID;
}
// Only specific roles or methods can set salary
void setEmployeeSalary(int salary, UserRole requesterRole) {
if (requesterRole.hasSalarySetPermission()) {
employeeSalary = salary;
}
}
// Only specific roles or methods can get salary
int getEmployeeSalary(UserRole requesterRole) {
if (requesterRole.hasSalaryGetPermission()) {
return employeeSalary;
} else {
throw UnauthorizedAccessException();
}
}
};
การใช้ Encapsulation นั้นมีความสำคัญอย่างยิ่งในการออกแบบซอฟต์แวร์ที่มีคุณภาพ เนื่องจากช่วยลดความซับซ้อน ช่วยให้รักษารหัสได้ง่ายขึ้น และยังป้องกันข้อมูลจากการถูกเปลี่ยนแปลงโดยไม่ได้รับอนุญาต
Encapsulation เป็นหนึ่งใน pillar พื้นฐานของ OOP ที่ช่วยห่อหุ้มและทำให้การจัดการข้อมูลง่ายขึ้นและปลอดภัยมากขึ้น ถ้าคุณสนใจที่จะเรียนรู้มากขึ้นในเรื่อง OOP และภาษา C++ หรือต้องการพัฒนาความรู้ด้านการเขียนโปรแกรมของคุณไปอีกระดับ อย่าลืมที่จะเข้าร่วมคลาสเรียนที่ EPT ที่เรามีบทเรียนหลากหลายและโปรแกรมแนะนำเพื่อช่วยให้คุณก้าวไปถึงเป้าหมายในอาชีพโปรแกรมเมอร์ของคุณ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM