Nội dung cụ thể gồm: - Tổng quan các bước của pha phân tích hướng đối tượng - Bước xây dựng mô hình use case và kịch bản - Bước xây dựng mô hình lớp - Bước xây dựng mô hình động dựa trên
Trang 1CHƯƠNG 3 PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG
Chương này trình bày các bước phân tích hướng đối tượng, các khái niệm và quy tắc liên quan đến quá trình phân tích hệ thống Nội dung cụ thể gồm:
- Tổng quan các bước của pha phân tích hướng đối tượng
- Bước xây dựng mô hình use case và kịch bản
- Bước xây dựng mô hình lớp
- Bước xây dựng mô hình động dựa trên biểu đồ trạng thái
3.1 TỔNG QUAN VỀ PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG
3.1.1 Vai trò của pha phân tích
Trong các bước của vòng đời phát triển phần mềm nói chung, pha phân tích (hay đặc tả) có các nhiệm vụ sau:
- Thiết lập một cách nhìn tổng quan rõ ràng về hệ thống và các mục đích chính của hệ thống cần xây dựng
- Liệt kê các nhiệm vụ mà hệ thống cần thực hiện
- Phát triển một bộ từ vựng để mô tả bài toán cũng như những vấn đề liên quan trong miền quan tâm của bài toán
- Đưa ra hướng giải quyết bài toán
Như vậy, pha phân tích chỉ dừng lại ở mức xác định các đặc trưng mà hệ thống cần phải xây dựng là gì, chỉ ra các khái niệm liên quan và tìm ra hướng giải quyết bài toán chứ chưa quan tâm đến cách thức thực hiện xây dựng hệ thống như thế nào Như cách nói trong ngôn ngữ tiếng Anh, pha phân tích nhằm trả lời cho câu hỏi “what”, còn câu hỏi “how” sẽ được trả lời trong pha thiết kế
Trang 23.1.2 Các bước phân tích hướng đối tượng
Phân tích hướng đối tượng được chia làm ba bước tương ứng với ba dạng mô hình UML là:
• Mô hình use case: bước này nhằm xây dựng mô hình chức năng của sản
phẩm phần mềm Các chức năng này được nhìn từ quan điểm của những người sử dụng hệ thống Kết quả của bước này là một biểu đồ use case được phân cấp cùng các scenario tương ứng của từng use case, trong đó biểu diễn đầy đủ các chức năng của hệ thống và được khách hàng chấp nhận
• Mô hình lớp: biểu diễn các lớp, các thuộc tính và mối quan hệ giữa các lớp
Từ tập các use case và scenario, nhóm phát triển hệ thống sẽ phải chỉ ra các lớp, xác định các thuộc tính, các phương thức và các mối quan hệ giữa các lớp
• Mô hình động: biểu diễn các hoạt động liên quan đến một lớp hay lớp con
Các hoạt động này được biểu diễn dưới dạng tương tự như sơ đồ máy trạng thái hữu hạn và được gọi là biểu đồ trạng thái Ngoài biểu đồ trạng thái, trong mô hình động còn có các biểu đồ khác là: biểu đồ tương tác (gồm cả biểu đồ tuần tự, biểu đồ cộng tác) và biểu đồ động Tuy nhiên, trong pha phân tích, người phát triển hệ thống chỉ quan tâm đến biểu đồ trạng thái cho mỗi lớp đã xác định được trong mô hình lớp
3.1.3 Ví dụ
Để minh họa cho các bước phân tích cũng như trong pha thiết kế ở Chương 4,
chúng ta hãy xét một hệ quản lý thư viện đơn giản Giới hạn của hệ thống này
được thể hiện qua các yêu cầu sau:
- Tài liệu trong thư viện bao gồm: sách, báo, tạp chí được mô tả chung gồm các thuộc tính: tên tài liệu, tác giả, nhà xuất bản, năm xuất bản, số lượng hiện có
- Đối với các bạn đọc: thực hiện các thao tác tìm tài liệu, mượn, trả tài liệu
và xem xét các thông tin về tài liệu mà mình đang mượn Việc tìm kiếm tài liệu được thực hiện trực tiếp qua mạng Tuy nhiên, giao dịch mượn và trả sách phải thực hiện trực tiếp tại thư viện
Trang 3- Quá trình mượn và trả tài liệu thông qua một thẻ mượn ghi đầy đủ nội
dung liên quan đến bạn đọc và tài liệu được mượn; thời gian bắt đầu mượn và thời hạn phải trả
- Đối với người quản lý thư viện (thủ thư): được phép cập nhật các thông tin liên quan đến tài liệu và bạn đọc
Bài toán này sẽ được sử dụng làm ví dụ trong quá trình thực hiện các bước phân tích và thiết kế hệ thống (Chương 3, 4) Tài liệu phân tích thiết kế hệ thống sẽ được trình bày đầy đủ trong phần Phụ lục
3.2 MÔ HÌNH USE CASE VÀ KỊCH BẢN
3.2.1 Vai trò của mô hình use case
Khi bắt đầu xây dựng một sản phẩm phần mềm, nhóm phát triển phải xác định các chức năng mà hệ thống cần phải thực hiện là gì Biểu đồ use case được sử dụng để xác định các chức năng cũng như các tác nhân (người sử dụng hay hệ thống khác) liên quan đến hệ thống đó
Có thể coi một use case là tập hợp của một loạt các kịch bản (scenario) liên quan đến việc sử dụng hệ thống theo một cách thức nào đó Mỗi kịch bản (scenario) mô tả một chuỗi các sự kiện mà một người hay một hệ thống khác kích hoạt vào hệ thống đang phát triển theo tuần tự thời gian Những thực thể tạo nên
các chuỗi sự kiện như thế được gọi là các tác nhân (Actor) Một hệ thống sẽ bao
gồm nhiều use case, liên kết với nhau bởi các mối quan hệ nào đó Biểu đồ use case được phân rã thành các mức tương ứng với các chức năng ở các cấp độ khác nhau, nhìn từ quan điểm người sử dụng hệ thống Sự cần thiết phải xây dựng biểu
đồ use case thể hiện qua một số điểm sau:
- Use case là một công cụ tốt để người dùng tiếp cận và mô tả các chức năng của hệ thống theo quan điểm của mình Biểu đồ use case được biểu diễn trực quan, do đó khách hàng và những người dùng tiềm năng của hệ thống
có thể dễ dàng mô tả được những ý định thực sự của mình
- Biểu đồ use case sẽ làm cho khách hàng và người dùng tiềm năng tham gia cùng nhóm phát triển trong bước khởi đầu của quá trình phân tích thiết kế
hệ thống Điều này sẽ giúp cho nhóm phát triển và khách hàng có được sự thống nhất chung về các chức năng thực sự cần thiết của hệ thống
Trang 4- Biểu đồ use case là cơ sở cho những bước tiếp theo của quá trình phân tích thiết kế hệ thống phần mềm Dựa trên biểu đồ use case và các scenario, người phát triển hệ thống sẽ chỉ ra các lớp cần thiết cũng như các thuộc tính của các lớp đó
Các mục tiêu chính cần đạt được của các use case là:
- Cần chỉ ra và mô tả được các yêu cầu mang tính chức năng của hệ thống, đây là kết quả rút ra từ sự thỏa thuận giữa khách hàng (và/hoặc người sử dụng cuối) và nhóm phát triển phần mềm
- Đưa ra một mô tả rõ ràng và nhất quán về việc hệ thống cần phải làm gì, làm sao để mô hình có thể được sử dụng nhất quán trong suốt toàn bộ quá trình phát triển và tạo thành nền tảng cho việc thiết kế các chức năng sau này
- Tạo nên một nền tảng cho các bước kiểm thử hệ thống, đảm bảo hệ thống thỏa mãn đúng những yêu cầu do người sử dụng đưa ra Trong thực tế thường là để trả lời câu hỏi: Liệu hệ thống cuối cùng có thực hiện những chức năng mà khởi đầu khách hàng đã đề nghị hay không?
- Cung cấp khả năng theo dõi quá trình chuyển các yêu cầu về mặt chức năng thành các lớp cụ thể cũng như các phương thức cụ thể trong hệ thống
- Đơn giản hóa việc thay đổi và mở rộng hệ thống qua việc thay đổi và mở rộng mô hình Use Case Khi hệ thống cần thay đổi (thêm bớt các chức năng nào đó), người phát triển hệ thống chỉ cần bổ sung trong biểu đồ use case cho phù hợp, sau đó chỉ theo dõi riêng những use case đã bị thay đổi cùng những ảnh hưởng của chúng trong thiết kế hệ thống và xây dựng hệ thống Những công việc cụ thể cần thiết để tạo nên một mô hình Use Case bao gồm:
1 Xác định các tác nhân và các Use Case
2 Xác định các mối quan hệ và phân rã biểu đồ use case
3 Biểu diễn các use case thông qua các kịch bản
4 Kiểm tra và hiệu chỉnh mô hình
Nội dung cụ thể thực hiện trong mỗi bước này sẽ được trình bày cụ thể trong phần sau của tài liệu
Trang 53.2.2 Xây dựng biểu đồ use case
Phần này sẽ trình bày quá trình xây dựng biểu đồ use case theo UML và áp dụng trong bộ công cụ Rational Rose
Bước 1: Tìm các tác nhân và các use case
Để tìm các tác nhân, người phát triển hệ thống cần trả lời các câu hỏi sau:
- Ai (hay hệ thống nào) sẽ là người sử dụng những chức năng chính của hệ thống? (trả lời câu hỏi này ta sẽ tìm được các tác nhân chính)
- Ai cần sự hỗ trợ của hệ thống để thực hiện những công việc hàng ngày của họ?
- Ai sẽ cần bảo trì, quản trị và đảm bảo cho hệ thống hoạt động (tác nhân phụ)?
- Hệ thống sẽ phải xử lý và làm việc với những trang thiết bị phần cứng nào?
- Hệ thống cần phải tương tác với các hệ thống nào khác? Cần phân biệt hệ thống mà chúng cần phải xây dựng với các hệ thống sẽ tương tác với nó Nghĩa là, cần xác định rõ biên giới giữa hệ thống yêu cầu xây dựng với hệ thống khác có thể bao gồm các hệ thống máy tính cũng như các ứng dụng khác trong chính chiếc máy tính mà hệ thống này sẽ hoạt động trong tương lai
- Ai hay cái gì quan tâm đến kết quả mà hệ thống sẽ sản sinh ra?
Xem xét bài toán quản lý thư viện, các chức năng chính của hệ thống quản lý thư viện được thực hiện bởi thủ thư và bạn đọc của thư viện đó Như vậy, chúng ta có
hai tác nhân là thủ thư và bạn đọc, trong đó bạn đọc không phân biệt là sinh viên
hay giáo viên
Từ các tác nhân đã tìm được ở trên, người phát triển hệ thống sẽ tìm ra các use case qua việc xem xét các câu hỏi sau trên mỗi tác nhân:
- Tác nhân đó cần chức năng nào từ hệ thống Hành động chính của tác nhân này là gì?
- Tác nhân cần phải xem, cập nhật hay lưu trữ thông tin gì trong hệ thống?
- Tác nhân có cần thông báo cho hệ thống những sự kiện nào đó hay không? Những sự kiện như thế đại diện cho những chức năng nào?
- Hệ thống có cần thông báo cho tác nhân khi có thay đổi trong hệ thống hay không?
- Hệ thống cần có những chức năng gì để đơn giản hóa các công việc của tác nhân?
Trang 6Trong bài toán quản lý thư viện mà chúng ta đang xét, tác nhân bạn đọc, anh ta cần các chức năng liên quan đến tìm kiếm tài liệu, xem thông tin cá nhân, đăng ký mượn và trả sách Còn tác nhân thủ thư sẽ thực hiện cập nhật các thông tin liên quan đến bạn đọc và các thông tin về tài liệu, thực hiện các giao dịch mượn và trả
sách Dựa vào đó, ta đã xác định được một số use case như: tìm kiếm tài liệu, cập nhật, cập nhật bạn đọc, cập nhật tài liệu, quán lý mượn sách, quản lý trả sách, xem thông tin cá nhân
Ngoài ra, use case còn được xác định thông qua các câu hỏi khác như sau:
- Ngoài các tác nhân, các chức năng của hệ thống cò có thể được sinh ra bởi
sự kiện nào khác (như sự kiện thời gian, tác động của chức năng khác, …)
- Hệ thống cần những thông tin đầu vào đầu ra nào?
Trong bài toán quản lý thư viện, để cập nhật được thông tin, thủ thư phải thông qua việc đăng nhập hệ thống Hay nói cách khác, sự kiện đăng nhập hệ thống sẽ là
điều kiện cho use case cập nhật Vậy ta sẽ cần thêm use case cập nhật
Bước 2: Xác định mối quan hệ và phân rã biểu đồ use case
Trong sơ đồ use case, các dạng quan hệ sẽ được sư dụng trong các trường hợp tương ứng như sau:
- Quan hệ <<include>>: sử dụng để chỉ ra rằng một use case được sử dụng
bởi một use case khác
- Quan hệ mở rộng <<extend>>: sử dụng để chỉ ra rằng một use case được
mở rộng từ một use case khác bằng cách thêm vào một chức năng cụ thể
- Quan hệ generalization: biểu thị use case này là tổng quát còn use case kia
là cụ thể hóa của use case đó
- Quan hệ kết hợp: thường dùng để biểu diễn mối liên hệ giữa actor và các
use case (một actor kích hoạt một use case)
Dựa trên các mối quan hệ trên, biểu đồ use case được biểu diễn lại thành dạng phân cấp gọi là phân rã biểu đồ use case Nguyên tắc phân rã biểu đồ use case như sau:
- Xác định sơ đồ use case mức tổng quát: từ tập tác nhân và use case đã
được xác định ở bước trước, người phát triển cần tìm ra các chức năng chính của hệ thống Các chức năng này phải có tính tổng quát, dễ dàng nhìn thấy được trên quan điểm của các tác nhân Các dạng quan hệ thường dùng
Trang 7trong sơ đồ use case mức tổng quát là quan hệ kết hợp, quan hệ tổng quát
hóa và quan hệ include
Ví dụ trong bài toán quản lý thư viện, xét trên quan điểm của các tác nhân
bạn đọc, thủ thư, nếu tạm thời chưa xét đến các chức năng mượn và trả
sách thì các chức năng tổng quát của hệ thống là: đăng nhập, cập nhật và
tìm kiếm Trong các use case này, use case cập nhật “include” chức năng
của use case tìm kiếm (Hình 3.1)
Ban doc
Timkiem
<<include>>
Hình 3.1: Biểu đồ use case mức tổng quát trong bài toán quản lý thư viện
- Phân rã các use case mức cao: người phát triển tiến hành phân rã các use
case tổng quát thành các use case cụ thể hơn sử dụng quan hệ “extend” Các
use case con (mức thấp) được lựa chọn bằng cách thêm vào use case cha
một chức năng cụ thể nào đó và thường được mở rộng dựa trên cơ sở sự
chuyển tiếp và phân rã các chức năng của hệ thống
Ví dụ, trong bài toán quản lý thư viện, use case cập nhật có thể được phân
rã thành cập nhật bạn đọc và cập nhật tài liệu (Hình 3.2)
Trang 8Hình 3.2: Phân rã use case cập nhật
- Tiếp tục phân rã sơ đồ use case cho đến khi gặp use case ở nút lá Các
use case ở nút lá thường gắn với một chức năng cụ thể trong đó hệ thống thực sự tương tác với các tác nhân (gửi kết quả đến các tác nhân hoặc yêu cầu tác nhân nhập thông tin …) Trong các sơ đồ use case mức 2, nếu còn
có use case nào chưa phải là nút lá thì cần tiếp tục được phân rã
Trong ví dụ về bài toán quản lý thư viện, các use case cập nhật bạn đọc và cập nhật tài liệu đều có thể tiếp tục phân rã thành các use case con là thêm bạn đọc, thay đổi thông tin bạn đọc và xóa bạn đọc hay thêm tài liệu, thay đổi thông tin tài liệu và xóa tài liệu Các use case này đã là nút lá vì nó biểu
diễn một chức năng cụ thể của hệ thống trong đó có tương tác giữa tác nhân
thủ thư và hệ thống (Hình 3.3 và Hình 3.4)
Trang 9Hình 3.3: Phân rã use case Cập nhật bạn đọc
Hình 3.4: Phân rã use case cập nhật tài liệu
- Hoàn thiện biểu đồ use case: người phát triển tiến hành xem xét lại xem tất
cả các use case đã được biểu diễn trong biểu đồ use case (ở tất cả các mức) hay chưa Nếu còn có use case chưa có trong biểu đồ nào, người phát triển phải xem xét xem chức năng mà use case đó đại diện đã được thực hiện bởi các use case khác chưa để bổ sung thêm hoặc loại bỏ use case đó ra khỏi biểu đồ
Trang 10Bước 3: Biểu diễn các use case bởi kịch bản (scenario)
Sau khi hoàn thành phân rã biểu đồ use case, công việc tiếp theo của người phát triển hệ thống là biểu diễn các scenario tương ứng với các use case đó Các scenario được biểu diễn theo mẫu chung như trong Bảng 3.1
Ý nghĩa
của use case
hoạt
use case thất bại
hợp use case hoàn thành
Trang 11Bảng 3.2 biểu diễn scenario cho use case Thêm sách trong bài toán quản lý thư
Người quản lý thư viện
Tiền điều kiện Thủ thư đã đăng nhập vào hệ thống
Đảm bảo tối thiểu Hệ thống loại bỏ các thông tin đã thêm và quay lui lại
bước trước
Đảm bảo thành công Thông tin về sách mới được bổ sung vào CSDL
Chuỗi sự kiện chính:
1 Hệ thống hiển thị form thêm sách và yêu cầu thủ thư đưa vào thông tin sách
2 Thủ thư nhập thông tin về sách mới và nhấn Submit
3 Hệ thống kiểm tra thông tin sách và xác nhận thông tin sách hợp lệ
4 Hệ thống nhập thông tin sách mới vào CSDL
5 Hệ thống thông báo đã nhập thành công
6 Thủ thư thoát khỏi chức năng thêm sách
Ngoại lệ:
3.a Hệ thống thông báo sách đã có trong CSDL
3.a.1 Hệ thống hỏi thủ thư có thêm số lượng sách hay không
3.a.2 Thủ thư thêm số lượng sách
3.a.3 Hệ thống thêm số lượng cho sách đã có
3.a.4 Hệ thống thông báo nhập thành công
3.b Hệ thống thông báo thông tin sách không hợp lệ
3.b.1 Hệ thống yêu cầu thủ thư nhập lại thông tin
3.b.2 Thủ thư nhập lại thông tin sách
Bảng 3.2: Scenario cho use case Thêm sách
Trang 12Bước 4: Hiệu chỉnh mô hình
Bước này thực hiện kiểm tra lại toàn bộ biểu đồ use case, bổ sung hoặc thay đổi các thông tin nếu cần thiết Trong bước này, toàn bộ biểu đồ use case cùng các scenario và các tài liệu khác liên quan sẽ được chuyển cho khách hàng xem xét Nếu khách hàng có điều gì chưa nhất trí, nhóm phát triển sẽ phải sửa đổi lại biểu
đồ use case cho phù hợp Bước này chỉ kết thúc khi khách hàng và nhóm phát triển
hệ thống có được sự thống nhất
3.2.3 Xây dựng biểu đồ use case trong Rational Rose
Biểu đồ use case được xây dựng trong Use Case View của Rational Rose (Hình 3.5) Các công cụ thông thường sử dụng trong biểu đồ use case gồm use case, actor, các quan hệ association và dependency đều xuất hiện trong ToolBox tương ứng của biểu đồ use case
Các bước xây dựng biểu đồ use case trong Rational Rose là:
1 Biểu diễn các tác nhân
2 Biểu diễn và đặc tả các use case mức tổng quát
3 Biểu diễn các mối quan hệ
4 Phân rã biểu đồ use case và đặc tả các use case mức thấp
Trang 13Package Use case Actor Association Dependency Generation
Hình 3.5: Giao diện của biểu đồ use case
Bước 1: Biểu diễn các tác nhân Để thêm vào biểu đồ một tác nhân, ta thực hiện
các bước sau:
• B1 Chọn công cụ actor trên hộp công cụ
• B2 Đưa con trỏ vào vùng màn hình diagram và đặt vào vị trí thích hợp
• B3 Mở cửa số đặc tả actor và viết tên của tác nhân
Bước 2: Biểu diễn các use case mức cao
• B1 Chọn công cụ use case trên hộp công cụ
• B2 Đưa con trỏ vào màn hình diagram và đặt use case cần tạo vào vị trí thích hợp
• B3 Mở cửa số đặc tả use case, đặt tên cho use case và mô tả các thông tin khác
Cửa sổ Specification của một use case được biểu diễn như trong Hình 3.6 Trong cửa sổ này có các thanh Tab:
- Tab General đưa ra các thông tin chung về use case như tên, kiểu…
Trang 14- Tab Diagram cho biết các biểu đồ đi kèm của use case đó (khi mở rộng một use case thì biểu đồ mức dưới sẽ xuất hiện ở đây)
- Tab Relations liệt kê các mối quan hệ của use case đó với các use case và actor khác
- Tab Files là các file kèm theo use case (có thể là các scenario hoặc các dạng file khác)
Hình 3.6: Cửa sổ đặc tả một use case
Bước 3: Biểu diễn và đặc tả các quan hệ
• B1 Chọn kiểu quan hệ tương ứng trong hộp công cụ: (quan hệ association, dependency)
• B2 Đặt con trỏ vào đối tượng khởi đầu quan hệ (actor hoặc use case) và kéo đến đối tượng cuối
• B3 Mở cửa số đặc tả quan hệ để chọn kiểu quan hệ và đặt tên quan hệ cùng một số thông tin khác
Tương tự với các use case, quan hệ giữa các use case cũng có một cửa sổ đặc tả tương ứng Một trong những điểm quan trọng nhất trong đặc tả một quan hệ giữa các use case là chỉ ra stereotype của quan hệ đó Hình 3.7 là cửa sổ đặc tả quan hệ kiểu phụ thuộc (Dependency) Hình 3.8.a và 3.8.b là hai Tab khác nhau của cửa sổ đặc tả quan hệ dạng kết hợp (association)
Trang 15Hình 3.7: Cửa sổ đặc tả một quan hệ dạng Dependency
Hình 3.8.a: Đặc tả quan hệ association –
Tab General
Hình 3.8.b: Đặc tả quan hệ association –
Tab Role A General
Bước 4: Phân rã biểu đồ use case
Trang 16Một trong những nhiệm vụ của bước xây dựng biểu đồ use case là phải phân rã biểu đồ use case Để thực hiện công việc này, chúng ta làm theo hai bước sau:
• B1 Nhấn chuột phải vào use case tương ứng cần phần rã trong Browser Window và chọn chức năng xây dựng Use Case Diagram mới (Hình 3.9)
• B2 Vẽ biểu đồ use case mức thấp tương tự như biểu đồ use case mức cao Khi tạo xong biểu đồ use case mức thấp, biểu đồ này sẽ xuất hiện phía dưới use case tương ứng trong Browser Window (Hình 3.10)
Hình 3.9: Phân rã use case
Trang 17Hình 3.10: Một sơ đồ use case mức 2
Rational Rose cũng cho phép gắn kèm các file vào trong biểu đồ use case Chúng
ta có thể lợi dụng chức năng này để gắn các file biểu diễn scenario vào trong use case tương ứng (Hình 3.11)
Trang 18Hình 3.11: Gắn file vào một use case
3.3 MÔ HÌNH LỚP
3.3.1 Vấn đề xác định lớp
Khái niệm cơ bản nhất trong phương pháp hướng đối tượng là khái niệm đối
tượng Một đối tượng được hiểu là một thực thể có thực hoặc là một thực thể khái niệm Mỗi đối tượng được mô tả bởi các trạng thái và hành vi cho biết đối tượng
đó sẽ hành động như thế nào khi nhận được thông điệp từ các đối tượng khác
Hoạt động của hệ thống được thể hiện qua trạng thái của các đối tượng và sự tương tác giữa các đối tương đó
Một nhóm đối tượng có chung thuộc tính và phương thức tạo thành một lớp
Vấn đề xác định lớp trở thành một trong những nhiệm vụ cơ bản của phân tích, thiết kế hệ thống hướng đối tượng
Trang 19Mối tương tác giữa các đối tượng trong hệ thống sẽ được biểu diễn thông qua mối quan hệ giữa các lớp Các lớp (bao gồm cả các thuộc tính và phương thức) cùng với các mối quan hệ sẽ tạo thành biểu đồ lớp
Biểu đồ lớp là một biểu đồ dạng mô hình tĩnh Một biểu đồ lớp miêu tả hướng nhìn tĩnh của một hệ thống bằng các khái niệm lớp và mối quan hệ giữa chúng với nhau
Một trong các mục đích của biểu đồ lớp là tạo nền tảng cho các biểu đồ khác, thể hiện các khía cạnh khác của hệ thống (ví dụ như trạng thái của đối tượng hay cộng tác động giữa các đối tượng, được chỉ ra trong các biểu đồ động) Một lớp trong một biểu đồ lớp có thể được thực thi trực tiếp trong một ngôn ngữ hướng đối tượng có hỗ trợ trực tiếp khái niệm lớp Một biểu đồ lớp chỉ chỉ ra các lớp, nhưng bên cạnh đó còn có một biến tấu hơi khác đi một chút chỉ ra các đối tượng thật sự
là các thực thể của các lớp này (biểu đồ đối tượng)
Xác định lớp là một trong những bước khó nhất trong phát triển phần mềm hướng đối tượng Không có một quy tắc chung nào cho viêc xác định lớp trong mọi hệ thống Kết quả của bước xác định lớp phụ thuộc nhiều vào kinh nghiệm của các nhóm phát triển phần mềm khác nhau Các phương pháp xác định lớp được đưa ra chỉ mang tính định hướng cho nhóm phát triển chứ không giúp nhóm phát triển tìm ra cụ thể lớp nào là cần thiết hay không cần thiết, đúng hay sai
Có nhiều phương pháp xác định lớp khác nhau Ba phương pháp xác định lớp sau đây được xem là phổ biến và nhiều nhóm phát triển đã áp dụng:
- Phương pháp trích danh từ: theo phương pháp này, đầu tiên người phát
triển hệ thống cần định nghĩa sản phẩm phần mềm bằng một câu, sau đó kết hợp các ràng buộc để phát triển thành một đoạn Dựa trên đoạn văn mô tả này, người phát triển sẽ lấy ra các danh từ, chia thành các nhóm và đề cử ra các lớp cũng như thuộc tính và phương thức của các lớp đó
- Phương pháp dùng thẻ ghi CRC (class responsibility collaboration): dựa
trên một số lớp đã phương pháp này sử dụng một thẻ ghi cho mỗi lớp trong
đó biểu diễn các thông tin liên quan đến trách nhiệm (responsibility) của lớp đó và các lớp phối hợp với nó (collaboration) Từ thẻ ghi này, người phát triển sẽ tìm ra các lớp khác cần thiết và quan trọng hơn là xác định đầy
đủ các thuộc tính, phương thức của từng lớp và mối quan hệ giữa các lớp
Trang 20- Phương pháp xác định lớp từ use case và scenario: người phát triển
nghiên cứu cẩn thận các use case và scenario (cả chuẩn và ngoại lệ) để tìm
ra các thành phần đóng vai trò nào đó trong các use case Các thành phần này sẽ được tập hợp lại và đề cử ra các lớp Các danh từ xuất hiện trong scenario biểu diễn thông tin cho một thành phần như vậy có thể trở thành các thuộc tính còn các động từ xuất hiện trong mối quan hệ giữa các thành phần đó có thể trở thành các phương thức tương ứng trong lớp đó
Phương pháp xác định lớp từ use case và scenario sẽ được trình bày cụ thể trong các phần tiếp theo của tài liệu
3.3.2Xây dựng biểu đồ lớp trong pha phân tích
Biểu đồ lớp là một trong những biểu đồ quan trọng nhất, có tính quyết định trong tiến trình phát triển phần mềm hướng đối tượng Trong pha phân tích, biểu đồ lớp chưa được xây dựng hoàn chỉnh mà chỉ có các nhiệm vụ chính là:
- Xác định các lớp
- Xác định các thuộc tính và một số phương thức cơ bản (chưa chi tiết các phương thức)
- Bước đầu chỉ ra một số mối quan hệ trong sơ đồ lớp
Bước 1: Xác định các lớp từ các use case và scenario
Bước này được thực hiện theo nguyên tắc chung như sau:
- Nghiên cứu kỹ tất cả các use case và scenario để tìm ra các danh từ có vai trò nào đó trong các scenario (khởi đầu một tương tác, bắt đầu hay nhận một hành động trong scenario, …) Các danh từ này sẽ trở thành các lớp ứng cử viên
- Loại bỏ các lớp ứng cử viên không thích hợp Các danh từ không thích hợp thuộc vào một trong các trường hợp sau:
Lớp dư thừa: do có hai hay nhiều danh từ cùng chỉ một thực thể nên ta chỉ cần giữ lại một từ duy nhất và loại bỏ các từ khác
Danh từ không thích hợp: đó là các danh từ không liên quan đến phạm vi của bài toán
Trang 21 Danh từ mô tả những lớp không rõ ràng: đó là các danh từ hoặc không biểu diễn một thực thể cụ thể hoặc các khái niệm không rõ nghĩa
Các danh từ chỉ là một vai trò (role) trong mối quan hệ với một lớp khác
Các danh từ biểu diễn các công cụ xây dựng phần mềm hoặc các thuật ngữ trong lập trình hay thuật toán (ví dụ stack, list, array, …) Xem xét bài toán quản lý thư viện, từ các use case và scenario, ta có thể liệt kê các
danh từ như sau: bạn đọc, tên bạn đọc, địa chỉ bạn đọc, thủ thư, username, password, thẻ mượn, sách, ngày mượn sách, ngày trả sách, số lượng sách … Dựa vào tập danh từ này, bước đầu ta có thể xác định một số lớp như: bạn đọc, thủ thư, thẻ mượn, sách
Bước 2: Xác định các thuộc tính và một số phương thức cơ bản
Dựa trên tập các lớp đã được xác định, người phát triển hệ thống tiếp tục nghiên cứu kỹ các use case và scenario và trả lời các câu hỏi sau:
- Với mỗi lớp, những danh từ nào mô tả thông tin của lớp đó Trả lời câu hỏi này sẽ giúp ta tìm ra các thuộc tính
- Những thông tin nào của lớp thực sự liên quan đến lĩnh vực quan tâm của
hệ thống Trả lời câu hỏi này giúp ta loại các thuộc tính không cần thiết
- Những thông tin nào là thông tin riêng của lớp (các thuộc tính private), những thông tin nào có thể chia sẻ trong mối quan hệ với lớp khác (các thuộc tính protected hoặc public)
Tiếp theo, người phát triển hệ thống xem xét các động từ đi kèm với các danh từ biểu diễn lớp trong scenario và xem xét xem các động từ ấy có trở thành các phương thức được hay không Tuy nhiên, trong pha phân tích, chúng ta chỉ có thể xác định một số phương thức dễ nhận thấy và cũng chưa cần xác định chi tiết giá trị trả về cũng như các tham số Các thông tin này sẽ được cụ thể hóa trong pha thiết kế
Biểu đồ lớp bước đầu của hệ quản lý thư viện được biểu diễn như trong Hình 3.12 Các lớp Bạn đọc và Thủ thư được kế thừa từ một lớp chung tên là Người Tại một thời điểm, một bạn đọc có tương ứng một Thẻ mượn Một thẻ mượn có thể cho mượn cùng một lúc một hoặc nhiều cuốn sách
Trang 22Thuthu maThuthu : String password : String vaitro : String getVaitro() setVaitro()
getTensach() getMaSach()
Themuon maThemuon : string maBandoc : String ngayMuon : Date ngayTra_dukien : Date dsMasach
ngaytra_Thucte : Date tinhtrangHienthoi : String getThemuon()
getBandoc()
Nguoi ten : String diachi : String ngaysinh : Date getTen() setTen() getDiachi() setDiachi() getNgaysinh() setNgaysinh()
Hình 3.12: Sơ đồ lớp phân tích của hệ thống quản lý thư viện
3.3.3Biểu diễn biểu đồ lớp trong Rational Rose
Biểu đồ lớp được xây dựng trong Logical View Các công cụ sử dụng để xây dựng biểu đồ này được thể hiện như trong Hình 3.13 Mỗi lớp trong Rational Rose cũng được chia thành 3 phần: tên lớp, các thuộc tính và các phương thức
Các bước biểu diễn biểu đồ lớp trong Rational Rose gồm:
Trang 23Hình 3.13: Giao diện xây dựng biểu đồ lớp
Bước 1: Biểu diễn các lớp
biểu đồ lớp, ta thực hiện các bước sau:
a vào vị trí thích hợp
ứ hai trong 3 vùng của biểu diễn lớp và thêm vào tên
• ng thứ 3 thêm vào các tên các phương thức cho lớp
Private Implementation Protected Public
Package Dependency Generation Realize
Đề biểu diễn từng lớp trong
• B1 Chọn công cụ class trong hộp công cụ
• B2 Đưa vào màn hình Class Diagram và đư
• B3 Đặt tên cho lớp
• B4 Click vào vùng th
các thuộc tính
B5 Click vào cù
ớc 2: Biểu diễn các thuộc tính và phương thức
• B1 Nhấn chuột vào từng thuộc tính và phương t
• B2 Chọn phạm vi truy nhập của thuộc tính (và phương thức
3.20)
B3 Đặ
Trang 24• B4 Đặc tả giá trị trả về và các tham số cho phương thức
Hìn 3h 13 đã chỉ ra các phạm vi của một thuộc tính Phạm vi mặc định của thuộc tính là private Tương tự, các phạm vi của phương thức được biểu diễn như trong Hình 3.14 Phạm vi mặc định của một phương thức là public
Hình 3.14: Các phạm vi khác nhau của phương thức
Bước 3: Đặc tả chi tiết một lớp
ễn như trong Hình 3.15 với rất nhiều Tab khác
Private Implementation Protected Public
Cửa sổ đặc tả một lớp được biểu di
nhau Tab General cung cấp các thông tin chung về lớp (tên, kiểu …) Các Tab Operations và Attributes cho biết các phương thức và thuộc tính tương ứng của lớp Tab Relations biểu diễn các mối quan hệ của lớp đó với các lớp khác Tab Components biểu diễn các thành phần (nếu có) của lớp Tab Files cho biết các file đính kèm với lớp đó
Trang 26Hình 3.16: Cửa sổ đặc tả một mối quan hệ giữa các lớp
3.4 MÔ HÌNH ĐỘNG DỰA TRÊN BIẺU ĐỒ TRẠNG THÁI
3.4.1 Khái quát về mô hình động
Mô hình động mô tả khía cạnh động trong phần mềm hướng đối tượng Các tương
tác và hành vi động trong mô hình UML được chia thành ba dạng:
- Tương tác giữa các đối tượng trong thời gian chạy Tương tác này được biểu diễn thông qua mô hình tuần tự và/hoặc mô hình cộng tác
- Các hành động tổng quát biểu diễn các tiến trình kinh doanh hoặc tương tác với người dùng Tương tác này được biểu diễn qua biểu đồ động
- Các chuyển đổi trạng thái theo thời gian, được biểu diễn qua biểu đồ trạng thái
Ta sẽ lần lượt xem xét từng dạng mô hình này
Biểu đồ tuần tự
Trang 27Mục đích: biểu diễn tương tác giữa những người dùng và những đối tượng bên
trong hệ thống Biểu đồ này cho biết các thông điệp được truyền tuần tự như thế nào theo thời gian Thứ tự các sự kiện trong biểu đồ tuần tự hoàn toàn tương tự như trong scenario mô tả use case tương ứng
Biểu diễn: Biểu đồ tuần tự được biểu diễn bởi các đối tượng và message truyền đi
giữa các đối tượng đó
Biểu đồ cộng tác
Mục đích: tương tự như biểu đồ tuần tự, biểu đồ cộng tác biểu diễn tương tác giữa
những người dùng và các đối tượng bên trong hệ thống và giữa những đối tượng này với nhau Biểu đồ cộng tác nhấn mạnh vào mối quan hệ về mặt không gian giữa các đối tượng
Biểu diễn: Các message trong biểu đồ cộng tác được đánh số theo thứ tự thời gian
nhưng khác với biểu đồ tuần tự, biểu đồ cộng tác nhấn mạnh mối quan hệ về mặt không gian giữa các đối tượng trong hệ thống
Biểu đồ hoạt động
Mục đích: Biểu đồ động được sử dụng để biểu diễn các hoạt động như các luồng
công việc hoặc các tiến trình khác nhau trong hệ thống được xây dựng Biểu đồ động sẽ được biểu diễn thông qua các hoạt động và các chuyển tiếp xảy ra khi chuyển tiếp các hoạt động khi có các điều kiện phù hợp hoặc khi các hoạt động trước được hoàn thành
Biểu diễn: Biểu đồ động được biểu diễn thông qua các hoạt động, các đồng bộ hay
rẽ nhánh và các chuyển tiếp giữa các hoạt động đó Chi tiết sẽ được trình bày trong pha thiết kế hướng đối tượng
Biểu đồ trạng thái:
Mục đích: Biểu đồ trạng thái được sử dụng để biểu diễn các trạng thái và sự
chuyển tiếp giữa các trạng thái của các đối tượng trong một lớp xác định Thông thường, mỗi lớp sẽ có một biểu đồ trạng thái (trừ lớp trừu tượng là lớp không có đối tượng)
Biểu diễn: Tương tự như biểu đồ động, biểu đồ trạng thái cũng được biểu diễn
dưới dạng máy trạng thái hữu hạn với các trạng thái và sự chuyển tiếp giữa các trạng thái đó Tuy nhiên, trong biểu đồ trạng thái không có các quá trình đồng bộ
và rẽ nhánh như trong biểu đồ động
Trang 28Mô hình động trong pha phân tích
Trong pha phân tích, người phát triển chỉ tập trung vào xây dựng biểu đồ trạng thái cho các lớp tìm được trong bước trước Các biểu đồ tương tác và biểu đồ động chủ yếu được xây dựng trong pha thiết kế, trong đó làm rõ mối quan hệ giữa các đối tượng cũng như các hoạt động của hệ thống để xây dựng biểu đồ lớp chi tiết
Dựa trên các lớp đã tìm ra trong mô hình lớp, biểu đồ trạng thái sẽ được xây
dựng cho mỗi lớp Biểu đồ này sẽ cho biết các trạng thái có thể có của các đối tượng lớp đó và các điều kiện chuyển đổi giữa các trạng thái Dựa trên các biểu đồ tương tác, người phân tích hệ thống sẽ xem xét lại sơ đồ lớp để bổ sung các thuộc tính cho các lớp cũng như bước đầu xác định được các mối quan hệ giữa các lớp
Có hai dạng biểu đồ trạng thái:
- Biểu đồ trạng thái cho một use case: mô tả các trạng thái và chuyển tiếp trạng thái của một đối tượng thuộc một lớp nào đó trong hoạt động của một use case cụ thể
- Biểu đồ trạng thái hệ thống mô tả tất cả các trạng thái của một đối tượng trong toàn bộ hoạt động của cả hệ thống
Biểu đồ trạng thái cho mỗi use case dễ xác định hơn vì chúng ta có thẻ dựa trên biểu đồ use case và các scenario đã có để xác định trạng thái Còn biểu đồ trạng thái hệ thống chỉ có được khi ta xem xét tất cả các use case
Tuy nhiên, biểu đồ trạng thái hệ thống sẽ hỗ trợ tốt hơn cho người phân tích trong việc bổ sung các thuộc tính còn thiếu cho biểu đồ lớp và các phương thức của bản thân lớp đó
Hình 3.17 biểu diễn một biểu đồ trạng thái của lớp thẻ mượn trong bài toán
quản lý thư viện Ở đây chỉ xét riêng các trạng thái của lớp này trong chức năng quản lý mượn sách Trong biểu đồ này ta có các trạng thái chưa có sách , chờ đợi
và đã có sách
Trang 29Hình 3.17: Biểu đồ trạng thái lớp Thẻ mượn
3.4.3 Xây dựng biểu đồ trạng thái
Biểu đồ trạng thái cho mỗi lớp được xây dựng theo các bước sau:
• Bước 1: Nhận biết các trạng thái và sự kiện
• Bước 2: Xây dựng biểu đồ
• Bước 3: Hiệu chỉnh biểu đồ
Bước 1: Nhận biết các trạng thái và sự kiện
Quá trình phát hiện sự kiện và trạng thái của một đối tượng được thực hiện bằng việc trả lời các câu hỏi sau:
• Một đối tượng có thể có những trạng thái nào?: Hãy liệt kê ra tất cả những trạng thái mà một đối tượng có thể có trong vòng đời của nó
• Những sự kiện nào có thể xảy ra?: Vì sự kiện gây ra việc thay đổi trạng thái nên nhận ra các sự kiện là một bước quan trọng để nhận diện trạng thái
• Trạng thái mới sẽ là gì?: Sau khi nhận biết sự kiện, người thiết kế cần xem xét sau khi sự kiện này xảy ra thì trạng thái mới sinh ra sẽ là gì
• Có những thủ tục ảnh hưởng đến trạng thái của một đối tượng?
Trang 30• Những sự kiện và sự chuyển tiếp nào là không thể xảy ra?
• Cái gì khiến cho một đối tượng được tạo ra?: Đối tượng thường được tạo ra
do một sự kiện nào đó Câu hỏi này giúp xác định chuyển tiếp đầu tiên trong biểu đồ trạng thái
• Cái gì khiến cho một đối tượng bị hủy?: Đối tượng sẽ bị hủy đi khi chúng không còn vai trò gì nữa Trả lời câu hỏi này sẽ giúp tìm ra các chuyển tiếp cuối cùng trong biểu đồ
Bước 2: Xây dựng biểu đồ
Sau khi đã trả lời câu hỏi trong bước 1, người phát triển sẽ phải sắp xếp các trạng thái và sự kiện tìm được vào trong một biểu đồ Xuất phát từ trạng thái khởi đầu, người thiết kế sẽ xác định các trạng thái tiếp theo và biểu diễn các chuyển tiếp giữa các trạng thái đó Gắn với mỗi chuyển tiếp là một sự kiện Các sự kiện sẽ được biểu diễn theo cấu trúc chung như sau:
Sự kiện [điều kiện] hoạt động
Trong đó: tên sự kiện được đặt lên đầu, tiếp theo đó là điều kiện (đặt trong 2 dấu ngoặc vuông) của sự kiện đó và cuối cùng là hành động đáp ứng của sự kiện Mỗi biểu đồ trạng thái có thể có một hoặc nhiều trạng thái kết thúc Dựa trên quá trình chuyển tiếp trạng thái, người phát triển sẽ phải xác định chuyển tiếp nào
có thể dẫn tới trạng thái kết thúc trong vòng đời đối tượng
Bước 3: Hiệu chỉnh biểu đồ trạng thái
Người phát triển tiến hành xem xét lại toàn bộ các biểu đồ trạng thái cho từng lớp
và sửa đổi lại biểu đồ trạng thái nếu cần thiết Các biểu đồ trạng thái sẽ được sử dụng để xác định đầy đủ các thuộc tính cho biểu đồ lớp Vì vậy, bước hiệu chỉnh biểu đồ trạng thái có thể tiếp tục cho đến pha thiết kế
3.4.3 Biểu diễn biểu đồ trạng thái trong Rational Rose
Biểu đồ trạng thái được xây dựng cho mỗi lớp Các bước thực hiện thêm biểu đồ trạng thái như sau:
• Bước 1 Trong Browser Window, từ một lớp tương ứng, ta nhấn chuột phải
và chọn New – Statechart Diagram Ví dụ trong Hình 3.18 ta lựa chọn xây dựng biểu đồ trạng thái cho lớp Borrow-Card
Trang 31Hình 3.18: Lựa chọn xây dựng biểu đồ trạng thái cho mỗi lớp
• Bước 2 Trong cửa sổ xây dựng biểu đồ trạng thái, chọn công cụ state để
thêm các trạng thái vào biểu đồ
• Bước 3 Đặc tả trạng thái sử dụng của số đặc tả Hình 3.19 và 3.20 là các
cửa sổ đặc tả trạng thái và chuyển tiếp trạng thái Các thông tin đặc tả này hoàn toàn thống nhất với chuẩn UML đã trình bày trong chương 2 của tài liệu này
• Bước 4 Biểu diễn các quan hệ (chuyển tiếp) trong biểu đồ trạng thái
Trang 32Hình 3.19: Đặc tả trạng thái
Trang 33Hình 3.20: Đặc tả chuyển tiếp trạng thái
• Bước xây dựng mô hình động trong pha phân tích tập trung vào xây dựng biểu đồ trạng thái mô tả các trạng thái và chuyển tiếp trạng thái của các đối
Trang 34tượng của các lớp Dựa trên biểu đồ trạng thái, người phân tích sẽ có thể hiệu chỉnh lại được biểu đồ lớp, bổ sung các thuộc tính còn thiếu
• Tài liệu cũng đã đưa ra những hướng dẫn và gợi ý thực hiện cho mỗi bước nhỏ trong pha phân tích
CÂU HỎI – BÀI TẬP
A CÂU HỎI
1 Biểu đồ use case là gì? Vai trò của biểu đồ use case trong xác định yêu cầu khách hàng?
2 Phân biệt các quan hệ <<include>> và <<extend>> trong biểu đồ use case
3 Khái niệm kế thừa trong lập trình hướng đối tượng có tương đương với quan hệ khái quát hoá (generalization) giữa các lớp trong UML không Tại sao
4 Mối quan hệ kết hợp 2 chiều là gì? Biểu diễn quan hệ này như thế nào?
5 Phân biệt mối quan hệ cộng hợp và quan hệ gộp
6 Khi nào có thể sử dụng mối quan hệ thực thi (realization) trong biểu đồ lớp
Trang 35Search for Available Seat
Fullfill Ticket Purchase
1
TicketAgent
Deliver Ticket
Các nhãn nào sau đây phù hợp với các quan hệ tương ứng với các đường 1, 2, 3?
A includes, includes, includes
B includes, extends, extends
C extends, includes, extends
D extends, extends, includes
E includes, includes, extends
2 Xem xét biểu đồ lớp phân tích trong hệ thống thông tin nhân sự Trong hệ thống này , xét 2 lớp:
- Lớp Employee (Nhân viên) chứa thông tin về mã nhân viên, tên, địa chỉ
và ngày sinh nhân viên
- Lớp Address (Địa chỉ) chứa thông tin về số nhà, phố, thành phố
Hãy xác định mối quan hệ giữa lớp Employee và lớp Address
3 Trong hệ thống thông tin khách hàng, lớp Bill (Hoá đơn) sinh ra hoá đơn thanh toán cho mỗi khách hàng sử dụng giá trị trả về của hàm tính tổng số tiền calculateAmt() trong lớp Purchase Xác định mối quan hệ giữa lớp Bill
và lớp Purchase
4 Cho một biểu đồ trạng thái (hình vẽ) Đưa ra 3 chuỗi sự kiện (bắt đầu từ trạng thái khởi đầu) làm cho biểu đồ trạng thái bị dẫn tới tình trạng bế tắc Giải thích
Trang 365 Chuyển tiếp nào trong biểu đồ trạng thái sau là không hợp lệ
A Put on hold
B Release
C Sell
D Cancel
6 Ký hiệu hiển hiện (visibility) nào sau đây chỉ ra một thuộc tính hay phương
thức là hiện hữu với các lớp trong cũng một gói
A +
B –
Available Put on hold On Hold Sell Sold
Release Cancel
Trang 37C #
D ~
7 Mối quan hệ nào biểu diễn mối quan hệ giữa hai lớp mà sự thay đổi trong phương thức và thuộc tính của lớp này ảnh hưởng đến các thuộc tính và phương thức của lớp kia
A Quan hệ phụ thuộc
B Quan hệ nhân bản (multiplicity)
C Quan hệ thực thi
D Quan hệ kết hợp
Trang 38CHƯƠNG 4 PHA THIẾT KẾ HƯỚNG ĐỐI TƯỢNG
Chương này trình bày các bước và quá trình thực hiện các bước thiết kế hướng đối tượng Nội dung cụ thể gồm:
- Tổng quan về thiết kế hướng đối tượng
- Bước xây dựng các biểu đồ tương tác
- Bước xây dựng biểu đồ lớp chi tiết
- Bước xây dựng biểu đồ thành phần và biểu đồ triển khai
4.1 TỔNG QUAN VỀ THIẾT KẾ HƯỚNG ĐỐI TƯỢNG
4.1.1 Vai trò của pha thiết kế
Trong tiến trình phát triển phần mềm nói chung, bước thiết kế hướng đối tượng có vai trò như sau:
- Trả lời câu hỏi “how” thay vì câu hỏi “what” như trong pha phân tích Mục tiêu của pha thiết kế là phải xác định hệ thống sẽ được xây dựng như thế nào dựa trên kết quả của pha phân tích
- Đưa ra các phần tử hỗ trợ giúp cấu thành nên một hệ thống hoạt động thực
sự
- Định nghĩa một chiến lược cài đặt cho hệ thống
Các đặc trưng của pha thiết kế hướng đối tượng bao gồm:
- Mô hình hóa chi tiết hệ thống dựa trên các lớp, các đối tượng trong miền ứng dụng của hệ thống đó
- Thiết kế dựa trên chiến lượng trừu tượng hoá phân cấp dữ liệu (hierachical data abstraction) trong đó các thành phần sẽ được thiết kế từ các lớp, đối tượng, các module và các tiến trình
- Các phương thức thường được thiết kế trong mối quan hệ với các đối tượng xác định hoặc một lớp các đối tượng đó
Trang 394.1.2 Các bước thiết kế hướng đối tượng
Dựa trên các kết quả của pha phân tích, pha thiết kế hướng đối tượng được chia thành các bước như sau:
• Xây dựng các biểu đồ tương tác, bao gồm biểu đồ tuần tự và biểu đồ cộng tác
• Xây dựng biểu đồ lớp chi tiết: thực hiện hoàn chỉnh sơ đồ lớp, xác định và biểu diễn đầy đủ các phương thức cho từng lớp, xác định mối quan hệ giữa các lớp
• Thiết kế chi tiết: xây dựng các biểu đồ động cho các phương thức phức tạp trong các lớp và xây dựng bảng thiết kế chi tiết cũng như kế hoạch cài đặt và tích hợp
• Xây dựng biểu đồ thành phần và biểu đồ triển khai hệ thống
• Phát sinh mã, chuẩn bị cho cài đặt hệ thống
Các bước này sẽ được trình bày trong các phần sau của tài liệu này
3.2 CÁC BIỂU ĐỒ TƯƠNG TÁC
Như đã trình bày trong phần 3.4, các biểu đồ tương tác biểu diễn các tương tác giữa các tác nhân bên ngoài và các đối tượng bên trong hệ thống cũng như tương tác giữa các đối tượng bên trong hệ thống đó Biểu đồ tương tác có hai dạng là:
- Biểu đồ tuần tự (sequence diagram) nhấn mạnh thứ tự thực hiện các tương
tác
- Biểu đồ cộng tác (collaboration diagram) nhận mạnh đến mối quan hệ và
sự bố trí giữa các đối tượng trong tương tác đó
Tùy vào yêu cầu của hệ thống cụ thể, người phát triển hệ thống có thể lựa chọn một trong hai biểu đồ hoặc sử dụng cả hai biểu đồ Trong phần này, tài liệu sẽ tập trung trình bày các phần tử mô hình UML sử dụng trong các biểu đồ tương tác và cách thức xây dựng các biểu đồ tương tác đó
4.2.2 Xây dựng biểu đồ tuần tự
Thông thường, các biểu đồ tuần tự được gắn với các use case Các message trong biểu đồ tuần tự sẽ biểu diễn lại thứ tự các sự kiện trong scenario của use case đó (cả chuẩn và ngoại lệ)
Hình 4.1 biểu diễn một ví dụ về biểu đồ tuần tự đơn giản mô tả chức năng thêm sách được xây dựng nên từ scenario đã trình bày trong chương trước Trong
Trang 40chức năng thêm sách, các đối tượng tham gia gồm: Thủ thư, Form Thêm sách, đối tượng điều khiển Thêm sách và đối tượng Sách Thứ tự thực hiện message trong
biểu đồ là theo chiều từ trên xuống dưới Nhìn vào một biểu đồ tuần tự như vậy ta
có thể thấy được ngay thứ tự thực hiện các hành động của một đối tượng trong chức năng (use case) đang xem xét Biểu đồ tuần tự này mô tả lại kịch bản (scenario) của use case Thêm sách nhưng dựa trên các đối tượng của các lớp đã xác định trong pha phân tích Với mỗi chức năng, thông thường chúng ta sẽ thêm một lớp giao diện (lớp Form) và một lớp điểu khiển cho chức năng đó
: Thu thu : FormThemSach : DK_ThemSach : Sach
Yeu cau Them sach Yeu cau nhap thong tin
Nhap thong tin sach moi
Tao doi tuong sach moi
Kiem tra thong tin sach
Nhap sach vao CSDL
Nhap thanh cong Nhap thanh cong
Thong bao nhap thanh cong
Hình 4.1: Biểu đồ tuần tự cho use case Thêm sách
Một số chú ý khi vẽ biểu đồ tuần tự:
• Sự kiện được biểu diễn kèm theo các message nằm ngang
• Đối tượng luôn gắn với các đường life line dọc theo biểu đồ Điểm kết thúc của đường life line này đánh dấu thời điểm huỷ đối tượng hoặc khi tương tác đã kết thúc