Ví dụ trên đưa ra cho ta hai phương án: nên hay không nên sử dụng từ khóa const. Câu trả lời là bạn hãy nên luôn quy định việc sao chép hàm tạo là truyền theo tham chiếu hằng, bởi lẽ các đối tượng khác nhau, không có quyền chỉnh sửa dữ liệu thành viên của nhau, nó chỉ có thể truyền thông điệp cho nhau mà thôi, việc chỉnh sửa dữ liệu thành viên là do bản thân của đối tượng đó. Điều này là sự thể hiện tính đóng gói trong lập trình hướng đối tượng. Tính đóng gói của lập trình hướng đối tượng còn thể hiện ở các mức độ cho phép truy cập đối với dữ liệu và hàm thành viên – tương ứng với từ khoá private, protected và public mà ta đã thảo luận ở trên.
Định nghĩa: tính đóng gói là tính chất không cho phép người dùng hay đối tượng khác thay đổi dữ liệu thành viên của đối tượng nội tại. Chỉ có các hàm thành viên của đối tượng đó mới có quyền thay đổi trạng thái nội tại của nó mà thôi. Các đối tượng khác muốn thay đổi thuộc tính thành viên của đối tượng nội tại, thì chúng cần truyền thông điệp cho đối tượng, và việc quyết định thay đổi hay không vẫn do đối tượng nội tại quyết định.
Tôi có thể lấy ví dụ thực tế để bạn có thể hiểu rõ hơn vấn đề về tính đóng gói: nếu một bệnh nhân cần phải thay nội tạng để có thể sống, thì việc thay thế nội tạng đó cần phải có sự đồng ý của bệnh nhân. Không ai có thể tự động thực hiện điều này (chỉ khi bệnh nhân đã rơi vào tình trạng hôn mê, thì người nhà bệnh nhân mới quyết định thay họ). Nội tạng là các thuộc tính cố hữu của bệnh nhân. Các phương thức thay thế nội tạng của đối tượng bác sĩ không phải là phương thức thành viên của đối tượng bệnh nhân (bệnh nhân không thể tự thay thế nội tạng cho mình và bác sĩ không có quyền thay thế nội tạng cho bệnh nhân nếu không có sự đồng ý của họ). Do đó, họ muốn thực hiện thì cần có phương thức đồng ý của bệnh nhân (phương thức thành viên của đối tượng bệnh nhân). Phương thức đồng ý của bệnh nhân này cũng không thể nào áp dụng cho bệnh nhân kia (bệnh nhân A không thể quyết định thay thế nội tạng cho bệnh nhân B). Như vậy, dữ liệu thành viên của đối tượng nào, thì chỉ có đối tượng đó mới có quyền thay đổi.
Trong một vài giáo trình, tính chất này còn được gọi là tính đóng gói và ẩn dấu thông tin (encapsulation and information hiding).
Compile and Execute Java Online - Try and experience the best cloud computing where you can edit, compile, ... Compile Preview | Execute | Share Code.
Saturday, September 11, 2010
Subscribe to:
Post Comments (Atom)
Popular Posts
-
Announcing hspec - BDD for Haskell I've long been interested in Behavior Driven Design and it's something that is strangely missing ...
-
This tutorial will be written in Java since I'm familiar with it and it's a decent enough language, has many tools and libraries, a ...
-
More vague notes about rogulikes; this time about monster difficulty or Power Curve . In I Rule, You Rule, We All Rule Old-School Hyrule th...
-
Let's say you're a developer on a C# app and just got a batch of new requirements. Let's also say that it has a fairly simple re...
-
Bước 1 . Sử dụng ảnh rocket.psd để import vào trong dự án Flash của bạn. Xây dựng 2 layer để chứa tên lửa và phần nhiên liệu bị đốt cháy. Bư...
-
Về cơ bản, screensaver là một tập tin có khả năng tự thực thi (executable). Do đó, nó có thể phát triển bằng hầu hết các ngôn ngữ lập trình....
-
Đầu năm đầu tháng khai xuân một bài. Chúc mọi người một năm mới đầy sức khoẻ, may mắn, hạnh phúc. Mình về tết cũng rảnh đôi chút, sửa lại ch...
-
[FD's BlOg] - Adnet là một hệ thống quảng cáo trực tuyến trên nền tảng mạng Internet mà công cụ chính là các Website & Blog. Adnet ...
-
Là công cụ dùng để soạn thảo nội dung văn bản trong Flash. Hình 43 – Công cụ Text - Text ...
-
I'd like to make a post about something that I think is one of the least utilized aspects of C#: custom collection initializers. Impleme...
No comments:
Post a Comment