Thiết
kế chương trình hướng đối tượng
Center
of Excellence, SaigonTech
Bài đọc
thêm
Encapsulation
là gì?
Hãy
trở lại vấn đề ở Bài 1: Khoản trả lương
(payment) cho một nhân viên bao gồm số giờ làm việc
(number of hours worked) và lương một giờ (hourly pay rate).
Dựa vào thông tin này, ta có thể tính được lương chính
thức (gross pay) của nhân viên đó. Trong Java, ta có thể
viết
package payment;
public class Payment {
int hoursWorked;
double hourlyPayRate;
public Payment(int hoursWorked, double hourlyPayRate) {
this.hoursWorked = hoursWorked;
this.hourlyPayRate = hourlyPayRate;
}
public double computeGrossPay() {
return this.hoursWorked * this.hourlyPayRate;
}
}
Tuy
nhiên, với cách viết trên, ta chưa áp dụng triệt để
nguyên tắc hợp thể (encapsulation) trong lập trình hướng
đối tượng (OOP). OOP khuyên ta nên hạn chế việc truy
xuất trực tiếp các thuộc tính (fields) và phương thức
(methods) từ bên ngoài lớp (class) bằng cách khai báo thêm
từ khóa private
(riêng tư) cho chúng. Vì vậy ta nên viết
package payment;
public class Payment {
private int hoursWorked;
private double hourlyPayRate;
public Payment(int hoursWorked, double hourlyPayRate) {
this.hoursWorked = hoursWorked;
this.hourlyPayRate = hourlyPayRate;
}
public double computeGrossPay() {
return this.hoursWorked * this.hourlyPayRate;
}
}
Encapsulation
khiến lập trình viên nhìn chương trình dưới góc độ
tổng quát hơn, tức góc độ đối tượng (object), thay vì
lúc nào cũng phải chăm chăm vào chi tiết của các thành
phần cấu thành đối tượng đó. Lối nhìn này giúp cải
thiện khả năng bảo trì software.
Bản thân chúng ta hàng ngày vẫn thường áp dụng nguyên tắc encapsulation. Trong nhà thì có thể ăn mặc thoải mái, có thể có những cử chỉ thân mật với người thân, song khi ra đường, ta ăn mặc kỹ lưỡng hơn, che dấu nhiều bộ phận riêng tư (private) của cơ thể, và tránh tiếp xúc thân mật với người lạ. Có như thế, ta mới bảo trì lâu dài đời sống lành mạnh cho bản thân, cho gia đình và cho toàn xã hội.
Không có nhận xét nào:
Đăng nhận xét