Thứ Sáu, 27 tháng 1, 2012

Encapsulation là gì?



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