Trong phương pháp lập trình hướng đối tượng, khi xây dựng mô hình các đối tượng, chúng ta cần phải xem xét đến những khả năng tương tác có thể có giữa chúng trong không gian bài toán đang xem xét. Sự tương tác này được thực hiện thông qua việc gửi yêu cầu, nhận và đáp ứng yêu cầu giữa chúng. Sự yêu cầu và đáp ứng yêu cầu như thế được thực hiện bởi cơ chế truyền thông điệp (message).

Sự tương tác giữa đối tượng Benjamin và Sean
Trong hệ thống, các đối tượng sẽ tương tác với nhau theo một kịch bản có sẵn. Ví dụ khách hàng Benjamin gửi một thông điệp đến cho người bán hàng là Sean với yêu cầu “Tôi muốn đặt mua một bộ salon bằng da có 5 chỗ ngồi vào thứ 4 tuần tới”. Tiếp đến, Sean sẽ xem xét có thể đáp ứng được cho Benjamin không (chẳng hạn như gọi về cửa hàng, kiểm tra hàng và lịch trình) rồi sẽ thông báo kết quả đặt hàng lại cho anh ta là “Ok, còn mặt mảng này” hoặc “not ok: xin lỗi, mặt hàng này đã hết”.

Sự tương tác giữa các đối tượng bằng message
Với tình huống trong thế giới thực như trên, ta có cấu trúc lớp nhân viên (Customer) và lớp người bán hàng (SalesPerson) như sau:




Với lớp Customer, tạo ra đối tượng khách hàng có tên là “Benjamin” như sau:

Với lớp SalesPerson, tạo ra đối tượng và 02 đối tượng bán hàng là Sean và Sara như sau:


Như vậy: Thông điệp là một lời gọi phương thức từ một đối tượng gửi thông điệp (message sending object) tới đối tượng nhận thông điệp (message receiving object). Đối tượng gửi thông điệp được gọi là sender, còn đối tượng nhận thông điệp gọi là receiver. Ở ví dụ trên, Ben là sender còn Sean là receiver.

Một thông điệp thì bao gồm 3 thành phần:
- Định danh của đối tượng tiếp nhận thông điệp (receiver)
- Tên phương thức (của đối tượng receiver)
- Và các đối số (arguments) được truyền vào để cung cấp thêm thông tin cần thiết để thực hiện phương thức trên.



Một thông điệp là hợp lệ nếu đối tượng receiver có một phương thức tương ứng với tên phương thức và các đối số phù hợp (nếu có) của thông điệp. Như vậy, đối tượng sender sẽ thực thi một phương thức nào đó, chẳng hạn purchase() {} mà trong đó có lời gọi một phương thức của đối tượng receiver để truyền thông điệp như takeOrder(){}



Trong lập trình hướng đối tượng, đối tượng Benjamin và Sean được tuân theo nguyên tắc che dấu thông tin (information hiding) vì Sean làm như thế nào để đáp ứng được yêu cầu của Benjamin là điều mà Benjamin không thể biết hoặc bị che khuất đi.
Mô hình client – server: Trong quá trình trao đổi thông tin đối tượng luôn có dạng mô hình này. Đối tượng Sender là phía client còn receiver là phía server.

Quá trình liên lạc giữa các đối tượng theo mô hình client – server
Thông điệp mang lại 02 lợi ích quan trọng, đó là: Các hành vi của một đối tượng được thể hiện thông qua phương thức của nó, và do  đó (ngoài truy cập biến trực tiếp) nó hỗ trợ tất cả các tương tác có thể có giữa các đối tượng. Và đối tượng không cần phải ở trong cùng một quá trình hoặc thậm chí trên cùng một máy để gửi và nhận thông điệp qua lại với nhau.


Post a Comment

Mới hơn Cũ hơn