PDA

View Full Version : OOP 3 : Hidden Implementation



danceswithwolves
28-09-2002, 10:07
OOP 3 : Hidden Implementation

[Để đổi không khí và Anh ngữ hoá thuật ngữ, tớ thay LTV bằng programmer nhé. Nghe pro hơn và cũng oai hơn nhiều. Một số thuật ngữ khác xin được phép giữ nguyên, để hỗ trợ cho các bạn trong "công cuộc kháng chiến trường kỳ" với English IT books.]

Trong thế giới OOP, người ta phân programmers làm 2 nhánh : class creators và client programmers. Vậy class creators là gì ? Đó là mấy cha chuyên lo thiết kế các classes. Còn client programmers chính là mấy người xài những classes do class creators thiết kế. Mục tiêu của client programmers là thu thập những classes hữu dụng để phát triển nhanh ứng dụng cho đề án của họ. Mục tiêu của class creators là thiết kế những classes cung cấp những chức năng cần thiết (trong khi giữ kín những thành phần khác). Những thành phần "ẩn" này là những thành phần tinh tế bên trong mỗi object, sẽ dễ bị sai lạc do những bất cẩn của client programmer nếu như được hiển thị. Vì thế, làm ẩn đi những thành phần thực thi sẽ giảm thiểu program bugs.

Nếu mọi thành phần của một class được để lộ "trần trùi trụi", client programmer sẽ có thể nghịch tới bến với class đó -> vô phương để áp đặt các quy tắc (bảo vệ) lên class -> cần thiết phải có các nguyên tắc điều khiển truy xuất (access control) cho class.

Nguyên tắc access control là "cách ly" client programmer khỏi các thành phần "tế nhị" của class. Nè, đừng nghĩ access control sẽ hạn chế sự linh hoạt của client programmer. Chính nó mang lại những nhiều tiện ích cho client programmer bởi nó làm giản đơn việc điều khiển class thông qua một giao diện (lớp bọc) giữa class và client programmer. Những thành phần nào private của class, client programmer sẽ không thể truy xuất đến được. Thử nghĩ về cái TV nhà bạn xem, giao diện của TV là các nút bấm volume +/-, channel +/- v.v... bạn chỉ (cần) thấy mấy cái nút đó là đủ sử dụng TV rồi, đâu cần phải biết các bóng đèn, mạch điện bên trong (hidden/private code/implementation - những thành phần "tế nhị"). Nếu TV nhà bạn không có vỏ (không có access control) thì mấy đứa nhỏ táy máy chọc tay/chân/cây vô nghịch mấy cái mạch thì không những dễ tiêu TV mà cả tụi nhóc cũng thế. -> bảo đảm những nguyên tắc (an toàn) điều khiển class.

* C++/Java/C# cung cấp các từ khóa cho access control (gọi là access modifiers) như public, protected, private. Ngoài ra còn có friend, internal, protected internal.

Với access control, nhà thiết kế thư viện có thể thay đổi mã thực thi (thường là sửa lỗi hay cải tiến) trong class mà không làm ảnh hưởng đến công việc của client programmer (vì giao diện class không đổi). Ví dụ nhé : ngoài chiếc Honda Custom 50cc maxspeed 60 kmph, hãng HONDA còn thiết kế loại Honda Custom 70cc maxspeed 90 kmph với vẻ ngoài và cách thức điều khiển xe như nhau. Bạn với các kỹ năng điều khiển xe không thay đổi, có thể chuyển từ HC50 sang HC70 dễ dàng. Điều này giống như sự thay đổi hidden implementation (độ phân khối) mà vẫn không ảnh hưởng client programmer (người sử dụng xe) do giao diện điều khiển là không đổi. -> class creators dễ cải tiến chương trình mà không (mấy) ảnh hưởng đến client programmers.

vikhoa@ ơi, chế độ "xem trước" không hoạt động]