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.
إرسال تعليق