Lập mô hình với Java: Một cuốn sách bài tp về UML, Phần 2
Logic điều kiện trong các sơ đồ tuần tự
Granville Miller, Tác giả, TogetherSoft
Tóm tắt: Ông xem xét vai trò của logic điều kiện trong việc lập sơ đồ tuần tự và
thảo luận về lý do tại sao bạn có thể chọn đưa vào hay loại ra các điều kiện và các
vòng lặp từ một sơ đồ. Granville cũng mô tả hai dạng sơ đồ tuần tự -- sơ đồ chung
(generic) và sơ đồ cá thể (instance) -- và giải thích các ứng dụng tương ứng của
chúng trong chu kỳ phát triển.
Như tôi đã giải thích trong loạt bài chuyên mục nhập môn, việc lập sơ đồ tuần tự
được sử dụng để mô tả hành vi bên trong của một hệ thống theo thời gian. Vì hành
vi hệ thống là kết quả của các đối tượng gửi thông điệp cho nhau, các sơ đồ tuần tự
vẽ ra đường đi của các thông điệp đó khi chúng chuyển từ đối tượng này đến đối
tượng khác. Sau cùng, các sơ đồ tuần tự là các bản đồ tương tác. Trong bài viết
trước, chúng ta đã tạo ra một bản đồ khá đơn giản, mặc dù chúng ta đã mô tkhá
nhiều tương tác. Lần này, chúng ta sđào sâu hơn một chút, bằng việc xem xét hai
dạng sơ đồ tuần tự do UML định nghĩa. Hai dạng đó là đồ chung sơ đồ
thể. Hãy bắt đầu bằng việc xem xét ứng dụng thích hp của từng dạng.
Hai kiểu sơ đồ tuần tự
Các sơ đồ tuần tự được sử dụng để mô tả hai kiểu tương tác khác nhau giữa các
đối tượng. Một kiểu tương tác là phải tương tác (must interaction), trong đó đối
tượng A phải gửi một thông điệp cụ thể đến đối tượng B. Kiểu tương tác kia là
th tương tác (may interaction), trong đó đối tượng A có thể (nhưng không buộc
phải) gửi một thông điệp cụ thể đến đối tượng B. Hai dạng sơ đồ tuần tự mô tả hai
kiểu tương tác khác nhau ấy. Dạng chung mô tả các tương tác phải làm và dạng cá
thể mô tả các tương tác có th làm.
Dạng chung của sơ đồ tuần tự mô tả tương tác của các lớp như là kết quả của một
kích thích tố ban đầu. Dạng chung cung cấp tư liệu cho toàn bộ các tương tác mà
có thbắt nguồn từ kích thích tố ban đầu. Cả điều kiện thành công lẫn điều kiện
thất bại là một phần của kiểu sơ đồ này, cũng như các vòng lặp, các điều kiện, và
các rnhánh.
Một sơ đồ tuần tự chung chỉ chứa tên lớp trong mỗi hộp dọc theo trục ngang, như
thấy trong Hình 1. Ý tưởng ở đây là đối tượng đằng sau tương tác là ẩn danh và
bất kỳ đối tượng nào của lớp đó có thể tham gia vào tương tác. Do đó, tất cả các
tuyến đường phải được mô hình hoá tường minh. Trong một sơ đồ tuần tự chung,
đối tượng A phải gửi một trong các thông điệp trong mô hình cho đối tượng B.
Hình 1. Một sơ đồ tuần tự chung
Dạng thứ hai sơ đồ tuần tự là dạng cá thể. Một sơ đồ tuần tự cá thể mô tả một sự
trao đổi thông điệp đơn lẻ khả dĩ giữa hai cá thể. Một sơ đồ như vậy sẽ chứa một
tên biến và kiểu lớp của nó trong hộp dọc theo trục ngang, như Hình 2. Dạng này
không bao gồm các vòng lặp, các điều kiện, hoặc rẽ nhánh có trong dạng chung.
Trong luồng điều khiển thực tế trong hệ thống, một số xác nhận nhất định thực
hiện trong quá trình tương tác có thể có kết quả sai. Nếu một xác nhận là sai, bất
kỳ thông điệp nào trong sơ đồ tuần tự cá thể đều vô giá trị và kịch bản sẽ không
xảy ra. Sơ đồ tuần tự cá thể mô tả một kịch bản đơn lẻ mà có thxảy ra hoặc
không.
Hình 2. Một sơ đồ tuần tự cá thể
Các sơ đồ tuần tự cá thể là tốt nhất để lập mô hình các kịch bản riêng lẻ trong các
giai đoạn phân tích của vòng đời phát triển phần mềm. Một sơ đồ tuần tự chung có
thể mô hình hoá toàn bộ ca sử dụng bao gồm nhiều kịch bản. Các kiểu hành động
khác -- chẳng hạn như mô hình hóa giao thức được sử dụng giữa các hệ thống con
hoặc khung công tác với các quần thể của chúng -- có thể sử dụng một trong hai
dạng, tùy thuộc vào các thành phần nằmđâu trong vòng đời phát triển phần
mềm. Dạng chung thì gần với mã lệnh thực tế sẽ được sinh ra trong sản phẩm cuối
hơn dạng cá thể.
Đừng bỏ lỡ phần còn lại của loạt bài "Một cuốn sách bài tập về UML"
Phần 1: "Giới thiệu về các sơ đồ tuần tự" (05.2001)
Phần 3: "Logic giao diện người dùng trong vic lập mô hình ca sử dụng"
(06.2001)
Phần 4: "Vai trò của tác nhân" (06.2002)
Chúng ta đã làm việc với dạng chung trong mục trước, và sẽ tiếp tục khám phá
dạng đó ở đây. Lần này, chúng ta sẽ khám phá vai trò của logic điều kiện trong
một sơ đồ tuần tự chung, bằng cách này mở rộng kiến thức của bạn về ký pháp
UML.
Logic điều kiện trong việc lập sơ đồ tuần tự
Các sơ đồ tuần tự chung sử dụng logic điều kiện, có thể hữu ích cho việc mô tả
luồng sự kiện trong suốt quá trình của một tương tác. Bạn sẽ sử dụng các mức độ
chi tiết khác nhau khi lập sơ đồ, tùy thuộc vào bạn đang ở đâu trong vòng đời phát
triển phần mềm. Khi phân tích, bạn có thể đồng ý gác lại các chi tiết khỏi các biểu
thức điều kiện của bạn, nhưng ngược lại khi thiết kế bạn có thể phải đi tiếp đến
mức đưa vào các đoạn mã ssử dụng trong sản phẩm cuối.
Dù bạn đang ở giai đoạn nào trong chu kỳ phát triển, sự tương ứng tự nhiên giữa
các sơ đồ tuần tự và một ngôn ngữ hướng đối tượng như ngôn ngữ Java trở nên rõ
ràng khi nói đến vẽ sơ đồ các biểu thức điều kiện. Ví dụ, hãy xem xét một ứng
dụng ngân hàng cho phép các nhân viên thu ngân nhận tiền gửi vào. Như đã xác
định rõ, ngoài nhiều thứ khác, rằng hệ thống phải ngăn chặn việc để nhân viên thu
ngân ghi có một khoản âm vào một tài khoản, điều mà sẽ dẫn đến khấu trừ từ tài
khoản đó. Do đó hệ thống phải có một cơ chế để kiểm tra rằng bất kỳ khoản nào
đã được gõ nhập là số dương. Liệt kê 1 cho thấy biểu thức điều kiện đảm bảo tiền
gi vào là sdương.
Liệt kê 1. Một phương thức với một biểu thức điều kiện
\** This is a method in a Teller class **\
public void receiveDeposit(Account account, BigDecimal deposit)
throws ImproperDepositException {
// Check to ensure the deposit is positive
(deposit.compareTo(new BigDecimal(0.0)) > 0) {
account.credit(deposit);
}
else {
throw new ImproperDepositException();
}
}
Trong giai đoạn phân tích bạn không phải quá quan tâm đến các chi tiết này, nên
sơ đồ của bạn chỉ cần thể hiện rằng khoản tiền gửi vào là dương. Trong một sơ đồ
tuần tự chung, một điều kiện xuất hiện như là một sự bảo vệ với tên thông điệp ở
phía trên mũi tên gọi nằm ngang (horizontal call arrow). Các điều kiện bảo vệ
được bao bọc trong cặp dấu ngoặc vuông phía bên trái tên thông báo, như Hình 3.
Hình 3. Một điều kiện được thêm vào trong khi phân tích
Mối quan hệ giữa phương thức ở trên và sơ đồ tuần tự trở nên còn rõ ràng hơn
trong Hình 4, đây chúng ta thấy một sơ đồ rõ ràng hơn, sao cho bạn có thể sử
dụng trong giai đoạn thiết kế. Chắc chắn là toàn bphương thức này không được
minh họa: mệnh đề else bị thiếu. Tuy nhiên, ngữ nghĩa của các mũi tên thông điệp
trong sơ đồ bắt buộc rằng thông điệp đó có thể được gửi chỉ khi nào điều kiện này
là có hiệu lực.