Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban 111 CHƯƠNG V MÔ HÌNH ĐỘNG THÁI CÁC BIỂU ĐỒ TƯƠNG TÁC VÀ HÀNH ĐỘNG TRONG HỆ THỐNG Chương này trình bày về mô hình mô tả hành vi của hệ thống [.]
Phân tích, thiết kế hướng đối tượng với UM L Đồn Văn Ban CHƯƠNG V MƠ HÌNH ĐỘNG THÁI: CÁC BIỂU ĐỒ TƯƠNG TÁC VÀ HÀNH ĐỘNG TRONG HỆ THỐNG Chương trình bày mơ hình mơ tả hành vi hệ thống: Mô tả hành vi đối tượng: Biểu đồ trạng thái, trình tự, cộng tác biểu đồ hành động Các kiện, trạng thái thao tác đối tượng hệ thống, Sự trao đổi, tương tác đối tượng, Xây dựng biểu đồ trạng thái biểu đồ trình tự mơ tả hoạt động hệ thống phần mềm 5.1 Mơ hình hố hành vi hệ thống Tất hệ thống có cấu trúc tĩnh hành vi động cần mô hình hố UML cung cấp biểu đồ để thể hai phương diện đó: Cấu trúc tĩnh mô tả bởi: biểu đồ lớp, đối tượng mối quan hệ chúng Hành vi động mô tả bởi: biểu đồ trạng thái, trình tự, cộng tác biểu đồ hành động Các đối tượng trao đổi với cách gửi thông điệp để thực nhiệm vụ hệ thống Sự trao đổi hay gọi tương tác hệ thống thể biểu đồ: (i) Biểu đồ trạng thái (StateDiagram): mô tả trạng thái, hành vi đối tượng Biểu đồ trạng thái bao gồm thông tin trạng thái khác đối tượng, thể đối tượng chuyển từ trạng thái sang trạng thái khác nào, hành vi ứng xử đối tượng có kiện xảy để làm thay đổi trạng thái (ii) Biểu đồ trình tự (Sequence Diagram): mô tả trao đổi, tương tác đối tượng với theo trình tự thời gian Biểu đồ trình tự bao gồm phần tử biểu diễn cho đối tượng, thông điệp gửi nhận trình tự theo thời gian để thực ca sử dụng hệ thống (iii) Biểu đồ cộng tác (Collaboration Diagram): mô tả tương tác đối tượng với theo ngữ cảnh không gian cơng việc - 111 - Phân tích, thiết kế hướng đối tượng với UM L (iv) Đoàn Văn Ban Biểu đồ hành động (Activity Diagram): mô tả cách đối tượng tương tác với nhấn mạnh công việc, xác định hành động thứ tự thực hành động Xây dựng biểu đồ tương tác thực việc gán trách nhiệm cho đối tượng Từ biểu đồ tương tác, người thiết kế phát thêm lớp, thao tác cần thực mối lớp, v.v Do vậy, biểu đồ tương tác trở thành tảng cho bước cịn lại q trình phát triển phần mềm Nhận xét: Không phải tất hệ thống cần bốn biểu đồ để mô tả hành vi ứng xử đối tượng ca sử dụng Số biểu đồ tương tác cần xây dựng hồn tồn phụ thuộc vào mức độ khó, phức tạp toán ứng dụng Một số người sử dụng biểu đồ trình tự, biểu đồ trạng thái pha phân tích để mơ tả hoạt động hệ thống, sau xây dựng biểu đồ cộng tác, biểu đồ hành động để phục vụ cho việc thiết kế chi tiết thành phần hệ thống ([4], [6], [7]) Đối với hệ thống tương đối đơn giản cần biểu đồ trình tự biểu đồ trạng thái đủ 5.1.1 Các kiện hành động hệ thống Trong trình tương tác với hệ thống, tác nhân gây kiện cho làm hệ thống hoạt động yêu cầu hệ thống phải thực số thao tác để đáp ứng yêu cầu tác nhân Các kiện phát sinh tác nhân có liên quan chặt chẽ với hoạt động mà hệ thống cần thực Điều suy phải xác định hoạt động hệ thống thông qua kiện mà tác nhân gây Vậy, kiện hành động kích hoạt hệ thống để hoạt động, tác động lên hệ thống để hoạt động cách Nói cách khác, kiện xảy kết gây số hoạt động sau hệ thống Ví dụ: sau nhập vào hết mặt hàng mà khách chọn mua, người bán hàng nhấn phím “Kết thúc”(EndSale), hệ thống chuyển sang thực chức toán với khách mua hàng Việc người bán hàng nhấn phím “Kết thúc” kiện làm cho hệ thống chuyển sang trạng thái khác Các kiện độc lập có liên hệ với Ví dụ: Nhập thơng tin mặt hàng Thanh toán hai kiện phụ thuộc, kiện sau phải xảy sau kiện thứ nhất, kiện Trả tiền mặt trả séc độc lập với Những kiện độc lập kiện đồng thời Bởi kiện khơng phụ thuộc vào nên xảy thời điểm Ví dụ Hiển thị số tiền dư trả lại cho khách Cập nhật mặt hàng hệ thống HBH hai kiện độc lập với xảy đồng thời Các kiện chia thành hai loại: kiện bên kiện bên Sự kiện bên kiện xảy bên hệ thống, đối tượng kích hoạt đối tượng khác - 112 - Phân tích, thiết kế hướng đối tượng với UM L Đồn Văn Ban Sự kiện kiện tạo bên phạm vi hệ thống Sự kiện vào hệ thống kiện tác động vào hệ thống tác nhân tạo Hoạt động hệ thống thao tác mà hệ thống phải thực để trả lời, đáp ứng cho kiện vào Một số hoạt động hệ thống tạo kiện cho tác nhân để thông báo kiện hệ thống xảy ra, nhắc tác nhân phải hành động để có thơng tin mong muốn Điều hiển nhiên là: Các kiện vào kích hoạt hệ thống hoạt động hệ thống hoạt động để trả lời cho kiện vào mà tác nhân tạo Các kiện hoạt động hệ thống thường sử dụng để mô tả hình thức kịch cho ca sử dụng Ví dụ, khảo sát kịch ca sử dụng “Gọi điện thoại”, có hai tác nhân người gọi người nghe Dãy kiện ca sử dụng mô tả sau: Các kiện vào Người gọi nhấc tai nghe Người gọi quay số (ví dụ 5652 288) Người nghe nhấc ống tai nghe trả lời Người nghe đặt tai nghe xuống 11 Người gọi đặt tai nghe xuống Các kiện Tiếng bíp bíp báo hiệu máy điện thoại sẵn sàng để bắt đầu trao đổi đàm thoại Tín hiệu điện thoại nối với người nghe Điện thoại người gọi rung chuông (nếu không bận đàm thoại) Chuông ngừng kêu Đường dây điện thoại kết nối để hai người đàm thoại với 10 Đường dây bị ngắt Các kiện vào người gọi tạo ra, kiện lại tác động đến người nghe Hệ thống điện thoại hoạt động để trả lời cho kiện vào đồng thời phát sinh kiện Dãy kiện hoạt động Hệ thống điện thoại mô tả cách trực quan sau: - 113 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban : HTĐiệnThoại Người gọi Nhấc tai nghe Người nghe Âm hiệu mời gọi Quay số ĐT để gọi Âm hiệu sẵn sàng Rung chuông Người nghe trả lời Chuông ngừng kêu Đường dây thông Đường dây thông Đặt tai nghe xuống Đường dây bị ngắt Đường dây bị ngắt Đặt tai nghe xuống Hình 5-1 Biểu đồ vết kiện thực ca sử dụng “Gọi điện thoại” 5.1.2 Sự trao đổi thông điệp đối tượng Trong biểu đồ tương tác, đối tượng trao đổi với thông điệp Các đối tượng thường gửi, nhận theo: Các giao thức trao đổi tin (Communication Protocol), Hay lời gọi hàm, đối tượng gọi hàm đối tượng khác để xử lý yêu cầu Có thể thực hịên việc trao đổi thơng tin mạng, máy tính phần lớn thực thời gian thực (Real-Time) Các thơng điệp có ba kiểu trao đổi chính: msg() Kiểu đơn giản: ký hiệu Biểu diễn cho dòng điều khiển để chuyển thông điệp msg() từ đối tượng sang đối tượng khác mà không cần biết chi tiết trao đổi thông tin msg() Kiểu đồng bộ: ký hiệu Biểu diễn cho dòng điều khiển đồng hố, nghĩa có nhiều thơng điệp gửi đến (nhận được) thơng điệp trước (có mức độ ưu tiên cao) phải xử lý xong sau kết thúc cơng việc thơng điệp xử lý msg() Kiểu dị bộ: ký hiệu - 114 - Phân tích, thiết kế hướng đối tượng với UM L Đồn Văn Ban Biểu diễn cho dịng điều khiển thơng điệp khơng cần đồng bộ, nghĩa có nhiều thơng điệp gửi đến (hay nhận được) thơng điệp xử lý mà khơng cần biết thơng điệp khác kết thúc hay chưa thứ tự thực khơng quan trọng 5.2 Biểu đồ trình tự Theo yêu cầu giai đoạn phân tích, cần định nghĩa hệ thống hộp đen, hành vi hệ thống thể (What?) cần thực khơng cần thể thực (How?) Vì vậy, nhiệm vụ giai đoạn xác định mô tả hoạt động hệ thống theo yêu cầu tác nhân Nghĩa phải tìm kiện, thao tác (sự tương tác) đối tượng ca sử dụng Biểu đồ trình tự giúp thể kết 5.2.1 Các thành phần biểu đồ trình tự Biểu đồ trình tự mơ tả trao đổi thơng điệp đối tượng trình tự theo thời gian, thông điệp gửi nhận đối tượng hoạt động hệ thống Biểu đồ trình tự thể theo hai trục: (i) Trục dọc xuống thời gian xảy kiện, hay truyền thông điệp, biểu diễn đường gạch - gạch thẳng đứng đỉnh đến đáy biểu đồ (ii) Trục ngang từ trái qua phải dãy đối tượng tham gia vào tham gia vào việc trao đổi thông điệp với theo chiều ngang, có tác nhân Đối tượng biểu diễn hình chữ nhật có tên đối tượng cụ thể và/hoặc tên lớp gạch (hoặc tên lớp gạch biểu diễn cho đối tượng lớp đó) Biểu đồ trình tự đọc từ xuống dưới, từ trái sang phải Thứ tự đối tượng biểu đồ phải xếp cho đơn giản để dễ quan sát Thời gian thực thông điệp đối tượng, hay gọi hoạt động đối tượng biểu diễn hình chữ nhật hẹp dọc theo trục thẳng đứng đối tượng Ví dụ, :MyComputer gửi thông điệp print(aFile) tới :Printer mô tả hình 5-2 :MyComputer :Printer Print(aFile) Hình 5-2 Các thành phần biểu đồ trình tự - 115 - Phân tích, thiết kế hướng đối tượng với UM L Đồn Văn Ban Mỗi thơng điệp có tên gọi thể ý nghĩa thông tin cần gửi tham số liệu liên quan Thông thường lời gọi hàm Khi định nghĩa lớp sau thơng điệp nhận trở thành phương thức Một đối tượng gửi thơng điệp tới Những thơng điệp gọi phản thân, đối tượng gọi thao tác để thực Chú ý tác nhân ngồi kích hoạt đối tượng biểu đồ trình tự hoạt động, khơng phải phần tử biểu đồ loại Mặt khác, Notes sử dụng để thích cho đối tượng biểu đồ trình tự Scripts sử dụng để thích cho thông điệp Chúng đặt bên trái hoạt động đối tượng , ngang với mức thông điệp cần thích Scripts sử dụng để mơ tả điều kiện logic điều kiện lặp, ví dụ lệnh IF hay WHILE, v.v trình trao đổi thông điệp Scripts không hỗ trợ để tạo mã chương trình, giúp cho người phát triển hệ thống biết điều kiện cần phải tuân theo :DoiTuong A While B begin :DoiTuongB msg() :DoiTuongB :DoiTuong A msg() If(DK) then else end loop msg() Hình 5-3 Scripts biểu đồ trình tự Chúng ta xét tiếp ca sử dụng “Gọi điện thoại”, có hai tác nhân Caller (người gọi) Callee (người nghe) Hệ thống nhận kiện vào ký hiệu lời gọi hàm: liftReceiver() (nhấc tai nghe), dialsPhoneNumber() (quay số), answerPhone() (trả lời điện thoại) hangUp() (đặt tai nghe xuống, nhấc tay lên) Biểu đồ trình tự mơ tả cho hoạt động xác định sau: : System Caller liftReceiver() Callee dialsPhoneNumber() answerPhone() hangUp() hangUp() Hình 5-4 Biểu đồ trình tự mơ tả hoạt động “Gọi điện thoại” - 116 - Phân tích, thiết kế hướng đối tượng với UM L Đồn Văn Ban 5.2.2 Xây dựng biểu đồ trình tự Các bước xây dựng biểu đồ trình tự Xác định tác nhân, đối tượng tham gia vào ca sử dụng vẽ chúng theo hàng ngang theo ký hiệu, Xác định thông điệp (lời gọi hàm) mà tác nhân cần trao đổi với đối tượng đó, đối tượng tương tác với theo trình tự thời gian vẽ hoạt động từ xuống theo thứ tự thực thực tế Cần xác định xác loại thơng điệp trao đổi đối tượng đơn giản, đồng hay dị 5.2.3 Các biểu đồ trình tự mơ hình hành động hệ HBH Chúng ta tiếp tục xây dựng số biểu đồ trình tự mơ tả hành vi hệ thống bán hàng HBH Hành vi hệ thống thể biểu đồ trình tự thơng qua tương tác đối tượng với Sự tương tác thể lời gọi hàm khai báo công khai (public) lớp Biểu đồ mô tả hoạt động người bán hàng hệ thống Như kịch phân tích trên, sau chọn đủ hàng, người mua đưa giỏ (hoặc xe) hàng đến quầy để trả tiền Người bán hàng phải nhập vào thông tin số lượng mặt hàng Những thông tin mặt thường xác định thông qua mã sản phẩm upc (thuộc lớp UPC) Vậy đối tượng :NguoiBan phải gửi đến cho :HeThong (một hệ thống bán hàng) thông điệp enterItems()(upc, n), để nhập vào mã sản phẩm upc n đơn vị Khi nhập xong tất mặt hàng khách muốn mua phải báo cho hệ thống biết nhập xong cách nhấn nút Kết thúc, nghĩa gửi cho hệ thống thông điệp endSale() Hệ thống thông báo cho khách mua hàng biết tổng số tiền phải trả Nếu khách hàng trả tiền mặt :NguoiBan gửi tiếp đến cho :HeThong thơng điệp makePayment(soTien) Các hoạt động mô tả biểu đồ trình tự hình 5-5 :NguoiBan :HeThong enterItems(upc, n) endSale()() makePayment(soTien) Hình 5-5 Biểu đồ trình tự mơ tả tương tác người bán hệ thống - 117 - Phân tích, thiết kế hướng đối tượng với UM L Đồn Văn Ban Biểu đồ trình tự mơ tả ca sử dụng “Thanh toán tiền mặt” Khi đối tượng :HeThong nhận yêu cầu toán khách hàng thơng qua người bán, nghĩa nhận thơng điệp makePayment(soTien) phải gửi cho đối tượng phiên bán hàng: PhienBanHang yêu cầu tương tự Đối tượng phiên bán hàng lại yêu cầu đối tượng tạo đối tượng lần toán: ThanhToan để toán theo soTien mà khách đưa Đối tượng lần tốn gửi lại thơng điệp balance() cho hệ thống :HeThong biết số tiền dư (soTien khách đưa trừ số tiền mua hàng) phải trả lại cho khách để hiển thị (displayBalance()) lên hình, để người bán thơng báo lại cho khách hàng khách trả tiền mặt Biểu đồ trình tự mơ tả dãy hành động trao đổi đối tượng nêu thiết lập sau: : PhienBanHang : HeThong : ThanhToan NguoiBan makePayment(soTien) makePayment(soTien) makePayment(soTien) balance() displayBalance() balance() Hình 5-6 Biểu đồ trình tự mơ tả ca sử dụng “Thanh tốn (tiền mặt)” Biểu đồ trình tự mơ tả ca sử dụng “Thanh tốn thẻ tín dụng” Khi tốn tiền hàng, khách hàng trả thẻ tín dụng Thẻ tín dụng xác định thông qua soHieuThe (số hiệu thẻ) hanSD (hạn sử dụng) Điều thể việc gửi thông điệp makeCreditPayment(soHieuThe, hanSD) cho hệ thống Thông thường hệ thống phải gửi yêu cầu kiểm duyệt thẻ requestApproval(yeuCau)) tới phận kiểm duyệt thẻ tín dụng tác nhân hệ thống Hệ thống dựa vào kết trả lời phận kiểm duyệt để toán với khách hàng cách trừ số tiền mua hàng thẻ tín dụng hợp pháp, nghĩa thực handleCreditReply() (xử lý thẻ kiểm duyệt), dựa vào kết phận kiểm duyệt Biểu đồ trình tự mơ tả tương tác người bán hàng, hệ thống phận kiểm duyệt thẻ KiemDuyet thiết lập sau: - 118 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban : HeThong NguoiBan makeCreditPayment(soHieuThe, hanSD) KiemDuyet requestApproval(yeuCau) handleCreditReply() displayApproval() Hình 5-7 Biểu đồ trình tự mô tả trao đổi người bán, hệ thống phận kiểm duyệt Tương tự trên, tạo biểu đồ trình tự cho ca sử dụng khác hệ thống 5.2.4 Ghi nhận hoạt động lớp đối tượng Ở chương xây dựng lớp tập trung chủ yếu vào việc phát thuộc tính chúng Khi xây dựng biểu đồ trạng thái biểu đồ trình tự hiểu tương tác đối tượng hệ thống Chúng ta xác định hành vi ứng xử đối tượng, nghĩa xác định hàm thành phần lớp Nghiên cứu biểu đồ trình tự nhận thấy: Khi có thơng điệp mgs() gửi đến cho đối tượng lớp đối tượng phải có hàm thành phần msg() Dựa vào nguyên lý nêu vào biểu đồ trình tự hình 5-5, 5-6, 5-7, lớp HeThong có hàm thành phần sau: HeThong enterItems() endSale() makePayment() balance() makeCreditPayment() handleCreditReply() Hình 5-8 Các thao tác hệ thống ghi nhận vào lớp có tên HeThong - 119 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban Khi xây dựng thêm biểu đồ trình tự cho ca sử dụng “Thanh tốn séc” hàm như: makeCheckPayment(), handleCheckReply(), v.v bổ sung thêm vào lớp HBH Lưu ý: Để đơn gian, giai đoạn bỏ qua đối số hàm thành phần lớp Các hàm thành phần có phạm vi truy cập giống thuộc tính lớp đối tượng Do vậy, người thiết kế khai báo chúng công khai (public), bảo vệ (protected), sở hữu riêng (private) hay mặc định nêu phần định nghĩa thuộc tính (chương 4) Tương tự, bổ sung hàm thành phần vào lớp khác HBH 5.2.5 Các hợp đồng hoạt động hệ thống Như thấy trên, biểu đồ trình tự cho biết tên nhiệm vụ mà đối tượng cần phải thực nhận thông điệp, chưa mô tả cách thực cơng việc Để hiểu rõ hành vi đối tượng để hỗ trợ cho thiết kế cài đặt lớp sau này, cần xây dựng hợp đồng (Contract) hay đặc tả cho hoạt động (thao tác, hàm) xác định Hợp đồng cho hoạt động hệ thống mô tả thay đổi trạng thái mà bắt đầu thoả tiền điều kiện (pre-conditions) sau đó, kết thúc thoả mãn hậu điều kiện (postconditions) Những hợp đồng lưu tệp khác gán vào biểu đồ tương ứng Pre-conditions: điều kiện mà trạng thái hệ thống giả thiết thoả mãn trước thực thao tác, hàm Post-conditions: điều kiện mà trạng thái hệ thống phải thoả mãn sau thực xong thao tác, hàm Một cách hình thức, hợp đồng cho hoạt động Op() viết theo ba Hoare: {Pre-conditions} Op() {Post-conditions} Thể rằng: hoạt động Op() trạng thái thoả mãn Pre-conditions sau kết thúc thực hệ thống trạng thái thoả mãn Post-conditions Pre-condition Post-condition mệnh đề boolean (mệnh đề điều kiện logic) Ví dụ: xét thao tác enterItems()(upc: UPC, soHang: Int) lớp HBH Pre-conditions: Hệ mã chuẩn sản phẩm toàn cầu UPC biết trước hệ thống Post-conditions: bao gồm điều kiện sau: + Nếu mặt hàng nhập vào phải tạo đối tượng phienBanHang lớp PhienBanHang kết hợp vào hệ thống HBH, + Tạo đối tượng dongBanHang lớp DongBanHang cho mặt hàng vừa nhập vào gán dongBanHang.soLuong = soHang (đối số hàm), + dongBanHang liên kết với MoTaMatHang dựa vào mã upc - 120 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban Ngoài Pre-conditions Post-coditions, chúng bổ sung thêm mơ tả tóm tắt trách nhiệm, kiểu, lớp nào, tham chiếu tới chức nào, thích, ngoại lệ kết quả, v.v Chúng ta xây dựng hợp đồng sau: Từ biểu đồ trình tự, xác định thao tác, hàm, hoạt động lớp hệ thống, Với thao tác xây dựng hợp đồng, Mơ tả tóm tắt trách nhiệm mà hệ thống phải thực thực thi thao tác Trong Post-condition phải nêu trạng thái đối tượng sau kết thúc thao tác Để mô tả Post-conditions, vào: + Việc tạo lập, huỷ bỏ đối tượng + Những thay đổi thuộc tính + Thiết lập hay huỷ bỏ mối liên kết Đặc tả thao tác (hàm thành phần) lớp HBH Hợp đồng để nhập thông tin mặt hàng Hợp đồng Tên gọi: Trách nhiệm: Kiểu / Lớp: Tham chiếu tới: Chú ý: Ngoại lệ: Kết (Output): Pre-conditions: Post-conditions: enterItems()(upc: UPC, soLuong: Int) Nhập thông tin mặt hàng mà khách chọn mua đưa chúng vào phiên bán hàng Hiển thị thông tin mô tả giá bán mặt hàng System (Hệ thống) R1.1, R1.3, R1.9 ca sử dụng Bán hàng Sử dụng phương pháp truy nhập nhanh vào CSDL Nếu upc khơng hợp lệ có lỗi UPC biết trước + Nếu mặt hàng nhập vào phải tạo đối tượng phienBanHang lớp PhienBanHang kết hợp vào hệ thống HBH, + Tạo đối tượng dongBanHang lớp DongBanHang cho mặt hàng vừa nhập vào gán dongBanHang.soLuong = soHang (đối số hàm), + dongBanHang liên kết với MoTaMatHang dựa vào mã upc - 121 - Phân tích, thiết kế hướng đối tượng với UM L Đồn Văn Ban Hợp đồng việc kết thúc nhập hàng Hợp đồng Tên gọi: Trách nhiệm: Kiểu / Lớp: Tham chiếu tới: Chú ý: Ngoại lệ: Kết (Output): Pre-conditions: Post-conditions: endSale()() Ghi nhận mặt hàng nhập Hiển thị tổng số tiền bán hàng System (Hệ thống) R1.2, ca sử dụng Bán hàng Nếu phiên bán hàng khơng thực có lỗi UPC biết trước PhienBanHang.ketThuc nhận giá trị true Lưu ý: Lớp PhienBanHang từ hình 4-14 bổ sung thêm thuộc tính ketThuc phân tích ca sử dụng “Thanh tốn” Thuộc tính có kiểu logic nhận giá trị true kết thúc việc nhập liệu bắt đầu thực thu tiền khách hàng Hợp đồng thực thu tiền mặt Hợp đồng Tên gọi: Trách nhiệm: Kiểu / Lớp: Tham chiếu tới: Chú ý: Ngoại lệ: Kết (Output): Pre-conditions: Post-conditions: makePayment(soTien: DVT), DVT lớp loại tiền Ghi nhận thơng tin liên quan đến việc tốn, tính số tiền dư cần trả lại cho khách System (Hệ thống) R2.1, ca sử dụng Bán hàng Nếu phiên bán hàng khơng kết thúc có lỗi Nếu soTien nhỏ tongSoTien có lỗi + Một đối tượng thanhToan tạo lập, + số tiền dư soTien - ThanhToan.tongSoTien + thanhToan liên kết với phienBanHang tạo lập hợp đồng để thực việc cập nhật mặt hàng bán, tổng số tiền, v.v Tương tự, xây dựng hợp đồng cho thao tác lại lớp Lưu ý: Đối với ca sử dụng có nhiều đối tượng tham gia biểu đồ trình tự phức tạp, khơng thích hợp Muốn hiểu rõ hoạt động đối tượng tốt nên phân tách ca sử dụng phức hợp thành ca sử dụng tương đối đơn giản, dễ hiểu mô tả biểu đồ trình tự cách đơn giản - 122 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban 5.3 Biểu đồ trạng thái Bước nghiên cứu sau biểu đồ trình tự biểu đồ trạng thái (State Diagram, State Machine Diagram, State Chart Diagram ) Biểu đồ trạng thái mô tả thông tin trạng thái khác đối tượng, thể đối tượng chuyển từ trạng thái sang trạng thái khác nào, hoạt động đối tượng trạng thái Biểu đồ trạng thái thể chu kỳ hoạt động đối tượng, hệ thống hệ thống, từ chúng tạo kết thúc Biểu đồ trạng thái mô tả: Các trạng thái mà đối tượng có, Các kiện: thơng điệp nhận được, lỗi xuất hiện, điều kiện trở thành (true), khoảng thời gian qua, v.v tác động lên trang thái để làm biến đổi Biểu đồ giải pháp tốt để mơ hình hố hành vi động lớp đối tượng Trong dự án, không thiết phải tạo biểu đồ trạng thái cho tất lớp Tuy nhiên, lớp có nhiều hành vi động, có nhiều trạng thái hoạt động khác biểu đồ trạng thái hữu ích, giúp hiểu rõ hệ thống 5.3.1 Trạng thái biến đổi trạng thái Mọi đối tượng hệ thống có chu kỳ sống thời điểm có trạng thái Ví dụ, người bán hàng hệ thống HBH bán hàng, phiên bán hàng toán, v.v Trạng thái điều kiện để đối tượng tồn tại, kết hoạt động trước đối tượng Trạng thái đối tượng thường mô tả hình chữ nhật góc trịn xác định bởi: Tên gọi trạng thái, thường bắt đầu động từ, Biến trạng thái mô tả giá trị thời trạng thái, Hoạt động hành vi mà đối tượng thực vào trạng thái Hoạt động trạng thái mơ tả hình thức sau: event_name argument_list ‘/’ action_exp Trong đó, event_name: Tên kiện, kiện chuẩn: exit (thoát ra), entry (vào), (thực hiện) argument_list: danh sách kiện, action_exp: hoạt động cần thực bao gồm lời gọi hàm, thao tác biến trạng thái, v.v Ví dụ: trạng thái Login mơ tả UML: - 123 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban Login LoginTime = CurrentTime entry / type “login” exit / login(UserName, Password) / get UserName / get Password help / display help Hình 5-9 Trạng thái Login Khi hệ thống trạng thái Login biến LoginTime (thời gian khởi nhập) gán CurrentTime (thời gian thời) máy tính Sự kiện vào trạng thái gõ từ “login” để thoát khỏi trạng thái phải thực lời gọi hàm login(UserName, Password) Các hoạt động đối tượng trạng thái là: Nhận vào UserName (tên người sử dụng), Password (mật khẩu), hiển thị trợ giúp display help Lưu ý: Khi khơng cần mơ tả chi tiết cần tên gọi để xác định trạng thái biểu đồ Có hai trạng thái đặc biệt trạng thái bắt đầu ký hiệu là: trạng thái kết thúc, ký hiệu Biểu đồ trạng thái thường có trạng thái bắt đầu cịn trạng thái kết thúc có không tuỳ vào chu kỳ hoạt động đối tượng Trong biểu đồ, đường mũi tên biến đổi từ trạng thái sang trạng thái khác có kiện xảy làm thay đổi trạng thái Trạng thái đối tượng bị thay đổi có xảy ra, nghĩa có hay nhiều kiện xuất Sự biến đổi trạng thái hay chuyển trạng thể mối quan hệ trạng thái với Sự chuyển trạng thể biểu đồ mũi tên có nhãn kiện, thao tác (hàm có đối số), điều kiện cầm canh (guard) Sự chuyển trạng đệ qui, nghĩa điều kiện định, đối tượng quay lại trạng thái cũ 5.3.2 Xác định trạng thái kiện Để xác định trạng thái kiện cần trả lời cho câu hỏi sau: Một đối tượng trạng thái nào? Liệt kê tất trạng thái có thể có hệ thống đối tượng Những kiện xuất hiện? Bởi kiện làm biến đổi trạng thái, vậy, từ kiện xác định trạng thái đối tượng Những trạng thái xuất hiện? Từ trạng thái, đối tượng chuyển sang trạng thái số kiện xác định xuất - 124 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban Ở trạng thái, hoạt động đối tượng gì? Sự tương tác đối tượng gì? Sự tương tác đối tượng thường gắn chặt với trạng thái đối tượng Những kiện, hay chuyển đổi trạng thái xảy ra? Một số kiện, hay trạng thái chuyển đổi sang trạng thái khác được, ví dụ khách mua hàng trả thẻ tín dụng khơng hợp pháp phiên bán khơng thực Cái làm cho đối tượng tạo ra? Đối tượng thường tạo một, hay số kiện Cái làm cho đối tượng bị huỷ bỏ? Đối tượng thường loại bỏ khơng cịn cần thiết 5.3.3 Xây dựng biểu đồ trạng thái Biểu đồ trạng thái sử dụng để cách đối tượng phản ứng lại kiện cách biến đổi trạng thái theo kiện Ví dụ, mô tả hoạt động hệ thống thang máy Thường thang máy bắt đầu hoạt động từ tầng (OnFirstFloor) Khi OnFirstFloor có người tầng (floorNum) nhấn nút yêu cầu thang máy (goUp(floorNum)) chuyển sang trạng thái chuyển lên (MovingUp) Khi chuyển đến tầng u cầu (arrived) chuyển sang trạng thái dừng, nghỉ (Idle) để mở cửa cho người vào /ra khỏi thang máy Đang trạng thái nghỉ Idle, có tầng u cầu lại chuyển MovingUp, có người tầng u cầu thang máy chuyển xuống (MovingDown), cịn hết (time-out) sang trạng thái chuyển tầng (MovingtoFirstFloor) tầng Biểu đồ trạng thái mô tả hoạt động thang máy vẽ hình 5-10 goUp(floorNum) Moving Up On First Floor / moving to floor arrived arrived goUp (floorNum) Moving to First Floor Moving Up / moving to floor time-out goDown(floor) arrived Idle Hình 5-10 Biểu đồ trạng thái lớp ThangMay Chúng ta xây dựng biểu đồ trạng thái cho lớp HoaDon - 125 - Phân tích, thiết kế hướng đối tượng với UM L Một hoá đơn tạo lập Đồn Văn Ban Thanh tốn Đã tốn Chưa tốn Hình 5-11 Biểu đồ trạng thái lớp HoaDon Khi hoá đơn (đối tượng lớp HoaDon) tạo lập trạng thái chưa tốn, sau có kiện khách hàng toán, nghĩa khách trả tiền cho mặt hành chọn mua chuyển sang trạng thái toán Như đề cập trên, ca sử dụng quan trọng, thể nhiệm vụ mà hệ thống phải thực Vì vậy, thường chúng phải xây dựng biểu đồ trạng thái để mô tả cho lớp ca sử dụng quan trọng hệ thống Biểu đồ trạng thái hệ HBH xây dựng sau: Khách đưa hàng đến quầy trả tiền Chờ để mua hàng Kết thúc bán hàng Nhập vào TT mặt hàng Nhập mặt hàng khách chọn Nhập tiếp Xử lý kết Kết thúc nhập Thanh toán tiền mặt Chờ tốn Trả thẻ tín dụng Kiểm duyệt thẻ/séc Trả séc Hình 5-12 Biểu đồ trạng thái lớp HBH Trạng thái đối tượng có trạng thái phức hợp, nghĩa chứa trạng thái lồng bên Một số trạng thái, ví dụ trạng thái Kiểm duyệt thẻ biểu đồ tiếp tục làm mịn pha sau Chúng ta xét tiếp Telephone ca sử dụng “Gọi điện thoại” mô tả biểu đồ vết kiện Telephone có hai trạng thái chính: Idle (rỗi) Active (hoạt động) Trạng thái Active lại phân tách tiếp thành PlayingDialTone (âm hiệu ĐT mời gọi), Dialing (quay số), Connecting (kết nối hai đầu dây) Talking (đàm thoại) Biểu đồ trạng thái cho hoạt động mô tả sau - 126 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban Active on hook Active Talking PlayingDialTone Idle digit off hook digit Dialing connected completed Connecting Hình 5-13 Biểu đồ trạng thái Telephone Máy điện thoại trạng thái Idle, người gọi nhấc tai nghe lên (off hook) chuyển sang trạng thái hoạt động (Active) sẵn sàng phục vụ đàm thoại hai điểm mạng điện thoại Trạng thái Active lại mô tả dạng biểu đồ trạng thái Bắt đầu trạng thái Có âm hiệu điện thoại mời gọi (PlayingDialTone), người gọi quay số (digit) chuyển sang trạng thái Quay số (Dialing) Khi quay xong (completed), chuyển tiếp sang trạng thái Kết nối (Connecting) đường dây kết nối (connected) hai người nói chuyện với (Talking) Trạng thái Talking lại mơ tả chi tiết biểu đồ trạng thái cần thiết Lưu ý: Biểu đồ trạng thái cần xây dựng cho đối tượng có nhiều hoạt động quan trọng hệ thống, Dựa vào ca sử dụng để xây dựng biểu đồ trạng thái, Dựa vào thuộc tính liên quan để định nghĩa trạng thái Tóm lại, biểu đồ trạng thái cần thiết giúp người phân tích, thiết kế người lập trình hiểu, nắm bắt hành vi ứng xử đối tượng tham gia vào ca sử dụng Họ không cài đặt đối tượng mà cịn cần phải làm cho chúng thực cơng việc mà hệ thống yêu cầu Tuy nhiên biểu đồ trạng thái không sử dụng để sinh mã tự động khâu lập trình sau Biểu thức trạng thái phân tích hướng đối tượng tương tự sơ đồ khối phân tích có cấu trúc, mơ tả bước cần thực (thuật tốn) hệ thống 5.4 Biểu đồ hoạt động Biểu đồ hoạt động (Activity Diagram) UML gần giống với lưu đồ (Flow Chart) mà quen sử dụng phân tích thiết kế có cấu trúc Nó bước thực hiện, hành động, nút định điều kiện rẽ nhánh để điều khiển - 127 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban luồng thực hệ thống Biểu đồ hành động mô tả hành động kết hành động và: Nhấn mạnh công việc thực cài đặt thao tác đối tượng, Tương tự biểu đồ trạng thái, khác chủ yếu chỗ tập trung mơ tả hoạt động (công việc thao tác cần thực thi) kết thu từ việc thay đổi trạng thái đối tượng Trạng thái biểu đồ hành động trạng thái hoạt động, chuyển sang trạng thái sau, hành động trạng thái trước hoàn thành Trạng thái chuyển trạng Trạng thái chuyển đổi trạng thái ký hiệu cách sử dụng hoàn toàn giống biểu đồ trạng thái nêu Nút định rẽ nhánh Một đối tượng hoạt động từ trạng thái rẽ nhánh sang trạng thái khác tuỳ thuộc vào điều kiện, kiện xảy để định Điều kiện rẽ nhánh thường biểu thức Boolean Trong UML, nút định rẽ nhánh biểu diễn hình thoi có đường rẽ nhánh với điều kiện kèm để lựa chọn hình 5-14 [d >= 5] [d < 5] Hình 5-14 Nút rẽ nhánh biểu đồ hành động Thanh tương tranh hay đồng Trong hoạt động hệ thống, có nhiều luồng hành động bắt đầu thực hay kết thúc đồng thời Trong UML, đồng vẽ đoạn thẳng đậm sử dụng để kết hợp nhiều luồng hành động đồng thời để chia nhánh cho luồng có khả thực song song Ví dụ: vẽ biểu đồ hành động mô tả hoạt động “Đun nước pha tách chè Nipton” Chúng ta thấy số hoạt động thực song hành “Đun nước”, “Tìm gói chè Nipton”, “Tìm tách”, v.v Biểu đồ hành động cho hoạt động mơ tả hình 5-15 - 128 - Phân tích, thiết kế hướng đối tượng với UM L Đổ nước vào ấm đun nước Tìm gói chè Nipton Đồn Văn Ban Tìm tách Đun nước sơi Bỏ gói chè vào tách Đổ nước sơi vào tách có chè Pha thêm sữa Hình 5-15 Biểu đồ hành động “Đun nước pha chè” Tuyến công việc Tuyến công việc (đường bơi) sử dụng để phân hoạch hoạt động (trạng thái) theo nhóm đối tượng hay theo tuyến hoạt động đối tượng Giống thi bơi, bể bơi vận động viên bơi lội bơi theo tuyến xác định Trong hệ thống phần mềm vậy, đối tượng hoạt động theo tuyến xác định, có khác tuyến có chuyển đổi thơng tin với Ví dụ: xét hoạt động xảy khách mua hàng chọn phương thức toán Credit Người bán hàng nhận thẻ từ khách hàng, chuyển thẻ cho phận kiểm duyệt Nếu thẻ hợp lệ trừ vào thẻ số tiền mua hàng khách phải trả giao lại thẻ cho khách Các hoạt động mô tả biểu đồ hành động hình 5-16 Biểu đồ hành động sử dụng để thể hành động thực đối tượng cách thực cơng việc nghiệp vụ thơng qua dịng cơng việc, theo tổ chức đối tượng - 129 - Phân tích, thiết kế hướng đối tượng với UM L Khách hàng Trả Credit Người bán hàng Đoàn Văn Ban CreaditAuthorizationService Nhận Credit HBH Kiểm duyệt [Hợp lệ] Trừ vào Credit Trả Credit [Khơng hợp lệ] Hình 5-16 Các tuyến công việc biểu đồ hành động 5.5 Sử dụng Rational Rose để tạo lập biểu đồ trình tự Tạo lập ba biểu đồ trình tự hình 5-5, 5.6, 5.7 Thực số khai báo đặc tả chi tiết: + Gán tệp vào biểu đồ trình tự + Bổ sung thơng điệp vào biểu đồ trình tự + Sắp xếp lại thơng điệp + Đánh số lại thông điệp + Ánh xạ đối tượng vào lớp + Gán trách nhiệm cho đối tượng 5.6 Sử dụng Rational Rose để tạo lập biểu đồ trạng thái Rational Rose hỗ trợ để tạo lập nhanh biểu đồ trạng thái Tương tự biểu đồ khác, Rose 2000 biểu đồ trạng thái tạo lập hai cách: Nhấn chuột trái mục Browser thực đơn chọn State Machine Diagram Nhấn chuột trái biểu tượng Logical View Use Case View danh sách trình duyệt, nhấn chuột phải để chọn New > StateChart Diagram Tất biểu đồ tạo lập mở (Open), in (print), xoá (delete), đổi tên (Rename), hay bổ sung thêm thành phần biểu đồ (New>) cách chọn biểu đồ tương ứng Logical View, Use Case View (nhấn chuột trái), nhấn chuột phải để chọn chức - 130 - ... thái, đối tượng chuyển sang trạng thái số kiện xác định xuất - 124 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban Ở trạng thái, hoạt động đối tượng gì? Sự tương tác đối tượng. .. sử dụng để thể hành động thực đối tượng cách thực công việc nghiệp vụ thông qua dịng cơng việc, theo tổ chức đối tượng - 129 - Phân tích, thiết kế hướng đối tượng với UM L Khách hàng Trả Credit... “Gọi điện thoại” - 116 - Phân tích, thiết kế hướng đối tượng với UM L Đoàn Văn Ban 5 .2. 2 Xây dựng biểu đồ trình tự Các bước xây dựng biểu đồ trình tự Xác định tác nhân, đối tượng tham gia vào ca