Chương 7 Các kiểu dữ liệu trừu tượng
7.3. Lợi ích của lập trình hướng đối tượng
Tại Hình 7.4, các nhãn quyền truy nhập public và private quy định rằng các thành viên dữ liệu (hour, minute, second) chỉ được phép truy nhập từ bên trong
lớp Time (hàm main nằm ngồi phạm vi này), cịn các hàm setTime và print
có thể được gọi từ bất cứ đâu trong chương trình. Trong khi đó, tại Hình 7.2 các thành viên dữ liệu đó có thể được truy nhập từ bất cứ đâu (chẳng hạn hàm main) do có quyền truy nhập mặc định là public.
Điều đó có nghĩa là dữ liệu của struct Time có thể bị đọc và sửa đổi tùy ý tại bất cứ đoạn chương trình nào, trong khi đó, từ bên ngồi class Time, dữ liệu chỉ có thể được đọc bằng cách gọi hàm print và được ghi bằng cách gọi hàm
thành viên setTime – nơi giá trị mới được kiểm tra tính hợp lệ (gọi hàm isValid) trước khi cập nhật.
Kết quả của các khác biệt trên là:
Để làm việc với dữ liệu kiểu dữ liệu Time trong Hình 7.2, các đoạn chương trình bên ngồi phải biết chi tiết cấu tạo của Time. Còn đối với kiểu Time trong Hình 7.4, các đoạn mã khác khỉ cần biết cách sử dụng các hàm print và setTime là đủ - đây chính là giao diện (interface) của Time.
Các đoạn chương trình bên ngồi cấu trúc Time ở Hình 7.2 có tồn quyền thao túng dữ liệu của các đối tượng Time, cịn cấu trúc Time ở Hình 7.4 có thể tự đảm bảo được tính hợp lệ dữ liệu của mình bằng việc cho phép truy nhập có kiểm sốt qua các hàm thành viên của chính nó.
Sự khác biệt này khơng có nhiều ý nghĩa đối với một chương trình nhỏ chỉ do một người viết, tuy nhiên, nó mang lại ích lợi quan trọng trong q trình phát triển các phần mềm lớn hơn với nhiều mô đun và với sự tham gia của nhiều lập trình viên, trong đó có việc tăng tính mơ đun và giảm lỗi lập trình.
Tóm lại, mỗi lớp đối tượng là khuôn mẫu hay mơ hình cho việc tạo các đối tượng thuộc một kiểu nhất định. Lớp đối tượng định nghĩa hai loại thành viên và mỗi đối tượng thuộc lớp đó đều có:
• Các thành viên dữ liệu mơ tả các thuộc tính của đối tượng. Ví dụ là hour, minute, và second của cấu trúc Time.
Lập trình hướng đối tượng cho phép đơn giản hóa việc lập trình. Các mơ đun chương trình có thể kết nối với nhau mà chỉ cần biết giao diện của nhau. Các chi tiết cài đặt được che dấu bên trong các mô-đun và bên ngồi khơng cần biết đến. Lập trình hướng đối tượng cịn giúp tăng tính tái sử dụng và khả năng tích hợp các mơ đun phần mềm, thể hiện ở hai điểm: các thành viên của một lớp có thể là đối tượng thuộc lớp khác, và các lớp mới được tạo từ lớp cũ bằng quan hệ thừa kế (chủ đề này nằm ngồi phạm vi khóa học này).