Giáo trình Phân tích thiết kế hướng đối tượng (Phần 1)
Phát triển phần mềm ngày càng trở nên phức tạp. Thay đổi giao diện từ các xâu ký tự sang
giao diện đồ họa xu thế sự kiện; kiến trúc hệ thống đa tầng khách/chủ; cơ sở dữ liệu (CSDL) phân
tán; Internet làm tăng độ phức tạp của hệ thống phần mềm. Thách thức trong hai mươi năm tới
của xây dựng hệ thống phần mềm không phải là tốc độ thực hiện chương trình, kinh phí hay sức
mạnh của nó mà vấn đề sẽ là độ phức tạp (Sun Microsystem). Kẻ thù của chúng ta là độ phức tạp,
ta phải loại bỏ chúng (Jan Bean). Vậy, loại bỏ độ phức tạp bằng cách nào? Các phương pháp tiếp
cận hướng cấu trúc, tiệm cận hướng logic, tiếp cận hướng hướng đối tượng và tiếp cận hướng tác
tử để có thể giải quyết vấn đề này nhưng ở mức độ khác nhau.
Tổng quát thì việc xây dựng phần mềm phải quan tâm đến tổ chức, các quan hệ và cấu trúc để
hình thành được các hành vi phức tạp của hệ thống. Mọi việc khảo sát hệ thống phải được thực
hiện với mức độ trừu tượng khác nhau, từ các chi tiết đến tổ chức tổng thể. Do vậy, xây dựng
phần mềm là thực hiện dãy tương tác chia nhỏ và hợp nhất. Chia nhỏ để hiểu rõ vấn đề và hợp
nhất để xây dựng hệ thống. Tiến trình chia nhỏ (tách) đã có truyền thống và tuân thủ các tiêu chí
chức năng. Các chức năng của hệ thống được nhận diện, sau đó chúng được tách thành các chức
năng con. Tiến trình này được thực hiện lặp đi lặp lại cho đến khi có được các thành phần đơn
giản đến mức chúng được biểu diễn trực tiếp bằng các hàm hay thủ tục của ngôn ngữ lập trình
(hình 1.1). Cách tiếp cận này được gọi là tiếp cận hướng chức năng (hay còn gọi là thủ tục, truyền
thống). Người phát triển phần mềm sẽ tập trung vào các nhiệm vụ điều khiển và tách thuật toán
lớn thành các thuật toán nhỏ. Khối chính để hình thành phần mềm ở đây là các hàm hay thủ tục.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình Phân tích thiết kế hướng đối tượng (Phần 1)
huột trên cột Type và nhập kiểu đối 6. Nhấn cột Default và nhập giá trị mặc định nếu muốn. 5.8.1.17 - Ánh xạ thao tác thành thông điệp Trong biểu đồ tương tác, mỗi thông điệp sẽ được ánh xạ vào một thao at1c bên trong lớp. Trình tự ánh xạ các thông điệp thành thao tác theo thứ tự sau: 1. Đảm bảo rằng đối tượng nhận thông điệp đã được ánh xạ đến lớp 2. Nhấn phím phải trên thông điệp trong biểu đồ tương tác 3. Danh sách các thao tác xuất hiện 4. Chọn thao tác trong danh sách cho thông điệp. Loại bỏ ánh xạ thao tác thông điệp như sau; 1. Nhấn đúp trên thông điệp trong biểu đồ tương tác 2. Trong cửa sổ Name: xóa tên thao tác và nhập tên thông điệp mới. Tạo lập thao tác mới cho thông điệp như sau; 1. Đảm bảo rằng đối tượng nhận thông điệp đã được ánh xạ đến lớp 2. Nhấn phím phải trên thông điệp trong biểu đồ tương tác 3. Chọn 4. Nhập tên và các chi tiết khác của thao tác mới 5. Nhấn phím OK 6. Nhấn phím phải trên thông điệp 7. Chọn thao tác mới trong danh sách. 5.8.1.18 - Tính nhiều của lớp Để đặt tính nhiều (multiplicity) cho các lớp ta làm như sau: 1. Nhấn phím phải trên một đầu cuối của quan hệ 2. Chọn thực đơn Multiplicity 3. Chọn multiplicity mong muốn 4. Lặp lại các bước 1-3 cho đầu cuối còn lại của quan hệ. Cách khác là: 1. Mở cửa sổ đặc tả quan hệ (Nhấn phím phải trên quan hệ, chọn Specification) 2. Chọn bảng Role Detail cho đầu cuối của quan hệ Phát triển phần mềm bằng UML trang | 123 3. Thay đổi multiplicity thông qua trường cardinality 4. Lặp lại từ 1-3 cho đầu kia của quan hệ. 5.8.1.19 - Đặt tên và hướng quan hệ Đặt tên quan hệ theo các bước như sau: 1. Chọn quan hệ, mở cữa sổ đặt tả quan hệ 2. Chọn bảng General 3. Nhập tên quan hệ vào cửa sổ name Đặt hướng tên quan hệ như sau: 1. Mở cửa sổ đặc tả của quan hệ mong muốn 2. Chọn bảng Detail 3. Chọn hướng tên quan hệ bằng cửa sổ hướng tên quan hệ. 5.8.1.20 - Gán stereotype cho quan hệ Đặt stereotype cho quan hệ theo các bước sau đây: 1. Mở cửa sổ đặc tả cho quan hệ 2. Chọn bảng General 3. Nhập stereotype cho quan hệ 5.8.1.21 - Gán nhiệm vụ cho quan hệ Đặc tên nhiệm vụ theo thứ tự như sau: 1. Nhấn phím phải trên đầu cuối của quan hệ kết hợp 2. Chọn thực đơn Role Name 3. Nhập tên nhiệm vụ 5.8.1.22 - Phạm vi của quan hệ Trong quan hệ kết hợp, Rose sẽ tạo các thuộc tính khi phát sinh mã tình. Sử dụng cử sổ Export Control trong Rose để phát sinh phạm vi thuộc tính. Phạm vi có thể là Public, Private, Protected hay Pakage (Inplementation). Trong quan hệ hai chiều có thê đặt phạm vi cho hai thuộc tính, mỗi chúng ở một đầu quan hệ. Trong quan hệ một chiều thì chỉ cần đặt mộ đầu cho quan hệ. Phạm vi được đặc bằng chọn bảng Role A General hay Role B General trong cửa sổ đặc tả cửa quan hệ. Đặt phạm vi quan hệ như sau: 1. Nhấn phím phải trên tên nhiệm vụ 2. Chọn Export Control thích ứng Phát triển phần mềm bằng UML trang | 124 5.8.1.23 - Đặt quan hệ tĩnh Để đặt quan hệ kết hợp là tĩnh ta làm như sau: 1. Nhấn phím phải trên tên nhiệm vụ 2. Chọn thực đơn Static. 5.8.1.24 - Đặt quan hệ friend Đặt quan hệ là friend như sau: 1. Nhấn phím phải trên quan hệ 2. Chọn thực đơn Friend 5.8.1.25 - Đặt Containment Đặt tính này cho biết cách lưu trữ thuộc tính trong lớp như thế nào. Đặt tính chất chứa như sau: 1. Nhấn phím phải chuột trên quan hệ 2. Chọn Contaiment 3. Chọn By Reference, By Value hay Unspecified. 5.8.1.26 - Đặt thành phần liên kết Trình tự đặt phần tử liên kết cho quan hệ: 1. Mở cửa sổ đặc tính quan hệ 2. Chọn bảng Detail 3. Đặt phần tử liên kết nhờ trường Link Element. 5.8.1.27 - Đặt giới hạn phạm vi quan hệ Trình tự đặc giới hạn phạm vi cho quan hệ như sau: 1. Nhấn phím phải trên đầu cuối của quan hệ kết hợp 2. Chọn thực đơn Key/Qualifier 3. Nhập tên và kiểu qualifier 5.8.2 - Thí dụ: Hệ thống bán hàng (tiếp theo) Sau khi khách hàng và người phát triển phần mềm thống nhất cho rằng biểu đồ tương tác phù hợp với yêu cầu tác nghiệp, người thiết kế quyết định nhóm các lớp thành nhóm theo stereotype. Vậy các gói sau này sẽ được tạo lập: Entities, Boundaries và Control. Sau đó chuyển các lớp vào nhóm tương ứng. Tiếp theo các biểu đồ lớp sẽ được lập trong mỗi gói: biểu đồ lớp Main hiển thị các gói, biểu đồ lớp Enter New Order chỉ ra lớp cho UC này. Phát triển phần mềm bằng UML trang | 125 5.8.2.1 - Đặt cấu hình Rose 1. Chọn thực đơn Topols>Options 2. Chọn bảng Diagram 3. Đảm bảo các hộp đánh dấu sau được chọn: Show Stereotype, Show all Attributes, Show all Operations. 4. Đảm bảo các hộp đán dấu sau không được chọn: Suppress Attributes, Suppress Operations. 5.8.2.2 - Tạo lập gói 1. Nhấn phím phải trên Logical View trong Browse 2. Chọn thực đơn New>Pakage 3. Đặt tên Entities 4. ặp lại để tạo các gói Boundaries và Control. 5.8.2.3 - Tạo lập biểu đồ lớp Main 1. Nhấn đúp trên Main class diagram ngay dưới Logical View để mở nó 2. Di gói Entities từ browser vào biểu đồ 3. Di các gói Boundaries và Control vào biểu đồ. Hình 5.39 là biểu đồ lớp Main kết quả. Boundaries Entities Control Hình 5.39 Các gói Phát triển phần mềm bằng UML trang | 126 OrderOption OrderMgr TransactionMgr Create() SaveOrder() SaveOrder() Commit() OrderDtail Order Open() Create() SubmitInfor() SetInfor() Save() GetInfor() Hình 5.40 Biểu đồ lớp của Uc Entry New Order 5.8.2.4 - Tạo lập biểu đồ lớp cho mọi lớp trong UC Enter New Order 1. Nhấn phím phải trên Logical View trong Browse 2. Chọn thực đơn New>Class Diagram 3. Đặt tên mới cho biểu đồ lớp: Add New Order 4. Nhấn đúp trên biểu đồ lớp Add New Order để mở nó 5. Di các lớp OrderOptions, OrderDetail, OrderMgr, Order và TransactionMgr từ browser vào biểu đồ. Biểu đồ kết quả trên hình 5.40. 5.8.2.5 - Bổ sung Stereotype vào lớp 1. Nhấn phím phải trên lớp OrderOptions trong biểu đồ 2. Chọn Open Specification 3. Nhập Boundaries vào vùng stereotype 4. Nhấn phím OK 5. Nhấn phím phải trên lớp OrderDetail trong biểu đồ 6. Chọn Open Specification 7. Chọn Boundaries từ hộp danh sách 8. Nhấn OK 9. Lặp lại để gán các lớp OrderMgr, TransactionMgr cho stereotype Control và lớp Order cho stereotype Entity. Kết quả được thể hiện trên hình 5.41. Phát triển phần mềm bằng UML trang | 127 > > > OrderOptions OrderMgr TransactionMgr Create() SaveOrder() SaveOrder() Commit() > > OrderDetail Order Open() Create() SubmitInfor() SetInfor() Save() GetInfor() Hình 5.41 Stereotype của lớp Hình 5.42 Các gói trong browser 5.8.2.6 - Nhóm các lớp vào gói 1. Di lớp OrderOptions và OrderDetail trong browser vào gói Boundaries. 2. Di các lớp OrderMgr, TransactionMgr vào gói Control 3. Di lớp Order vào gói Entities. 5.8.2.7 - Bổ sung lớp vào các gói 1. Nhấn phím phải vào gói Boundaries trong browser Phát triển phần mềm bằng UML trang | 128 2. Chọn thực đơn New>Class Diagram 3. Đặt tên biểu đồ mới: Main 4. Nhấn đúp trên Main để mở nó 5. Di các lớp OrderOptions và OrderDetail từ browser vào biểu đồ 6. Đóng biểu đồ. Biểu đồ kết quả trên hình 5.43. 7. Nhấn phím phải trên gói Entities trong browser 8. Chọn thực đơn New>Class Diagram 9. Đặt tên biểu đồ mới: Main > > OrderOptions OrderDetail Create() Open() SubmitInfor() Save() Hình 5.43 Lớp trong gói Boundaries 10. Nhấn đúp trên Main để mở nó 11. Di lớp Order từ browser vào biểu đồ 12. Đóng biểu đồ. Biểu đồ kết quả trên hình 5.44. 13. Nhấn phím phải trên gói Control trong browser 14. Chọn thực đơn New>Class Diagram 15. Đặt tên biểu đồ mới: Main 16. Nhấn đúp trên Main để mở nó 17. Di các lớp OrderMgr và TransactionMgr từ browser vào biểu đồ 18. Đóng biểu đồ. Biểu đồ kết quả trên hình 5.45. > > > Order OrderMgr TransactionMgr Create() SaveOrder() SaveOrder() SetInfor() Commit() GetInfor() Hình 5.44 Lớp trong gói Entity Hình 5.45 Lớp trong gói Control Ta đã có biểu đồ lớp cho UC Enter New Order. Bây giờ cần bổ sung tham số, kiểu dữ liệu và kiểu giá trị cho lại vào lớp. Ta phải đi trở lại luồng sự kiện để tìm ra ac1c thuộc tính. Các thuộc tính Order Number và Customer Name sẽ được bổ sung vào lớp Order trong biểu đồ lớp. Vì có nhiều chi tiết trong một đơn hàng (order items) và mỗi đơn hàng lại có thông tin và hành vi riêng, do vậy các mục đơn hàng sẽ được mô hình hóa thành lớp, thay cho thuộc tính của Order. Biểu đồ trình tự sẽ được cập nhật như trên hình 5.46. Phát triển phần mềm bằng UML trang | 129 Order Options Form Order Detail Form Order Manager : Order #1234 : Order Cabinet : Large Cabinet : Transaction Manager : : OrderOptions : OrderDetail OrderMgr Order OrderItem OrderItem TransactionMgr : Salesperson 1: Create() 2: Open( ) 3: SubmitInfor() 4: Save() 5: SaveOrder() 6: Create() ự 7: SetInfor() 8: Create() trình t 9: SetInfor() đồ u ể 10: Create() 11: SetInfor() 12: SaveOrder() 13: GetInfor() Hình 5.46 Bi 14: GetInfor() trang | 130 15: GetInfor() 16: Commit() ng UML ằ m b ề n m ầ n ph ể Phát tri 5.8.2.8 - Bổ sung thuộc tính và thao tác Khách hàng bây giờ có nhu cầu thay đổi yêu cầu như: hệ thống có khả năng yêu cầu thay đổi đặt hàng và thời gian cung cấp hàng; bổ sung thêm nguồn hàng; thay đổi cút ít về thủ tục nhập hàng vào kho. Tài liệu về các yêu cầu mới hay thay đổi phải được cập nhật. Nhận thấy rằng yêu cầu mới về ngày tháng ảnh hưởng đến UC đang thiết kế Enter New Order. Do vậy chúng được quan tâm ở đây bằng cách bổ sung hai thuộc tính mới cho lớp Order. 5.8.2.9 - Đặt cấu hình Rose 1. Chọn thực đơn Tools>Options 2. Chọn bảng Diagram 3. Đảm bảo các hộp đánh dấu sau được chọn: Show Visibility, Show Stereotype, Show Operation Signatures, Show all Attributes và Show all Operarions 4. Đảm bảo các hộp đánh dấu sau không được chọn: Suppress Attributes, Suppress Operations 5. Chọn bảng Notation 6. Đảm bảo hộp đánh dấu sau không được chọn: Visibility as Icons. 5.8.2.10 - Bổ sung lớp mới 1. Tìm biểu đồ lớp Add New Order trong browser 2. Nhấp đúp để mở biểu đồ 3. Chọn phím công cụ Class trên thanh công cụ 4. Nhấn bất kỳ đâu trong biểu đồ để vẽ lớp mới 5. Nhập tên OrderItem cho lớp mới 6. Gán Entity cho stereotype của lớp OrderItem 7. Di lớp OrderItem từ browser vào gói Entities 5.8.2.11 - Bổ sung thuộc tính 1. Nhấn phím phải trên lớp Order 2. Chọn New Attribute 3. Nhập thuộc tính mới: OrderNumber: Integer 4. Nhấn phím Enter 5. Nhập tiếp thuộc tính mới: CustomerName: String 6. Lặp để nhập các thuộc tính sau: OrderDate: Date, OrderFillDate: Date 7. Nhấn phím phải trên lớp OrderItem 8. Chọn New Attribute Phát triển phần mềm bằng UML trang | 131 9. Nhập thuộc tính mới: ItemID: Integer 10. Nhấn phím Enter 11. Nhập tiếp thuộc tính mới: ItemDescription: String 5.8.2.12 - Bổ sung thao tác vào lớp OrderItem 1. Nhấn phím phải trên lớp OrderItem 2. Chọn New Operation 3. Nhập thao tác mới: Create 4. Nhấn phím Enter 5. Nhập thao tác mới: SetInfo 6. Nhấn phím Enter 7. Nhập thao tác mới: GetInfo 5.8.2.13 - Bổ sung chi tiết thao tác trong biểu đồ lớp 1. Nhấn phím chuột trên lớp Order để mở nó 2. Nhấn chuột trong lớp Order 3. Cập nhật thao tác Create() thành Create(): Boolean 4. Cập nhật thao tác SetInfo() thành Setinfo(OrderNum: Integer, Customer: String, OrderDate: Date, OrderFillDate: Date): Boolean 5. Cập nhật thao tác GetInfo() thành GetInfo():Boolean 5.8.2.14 - Bổ sung chi tiết thao tác trong browser 1. Tìm lớp OrderItem trong browser 2. Nhấn trên ký tự + cạnh OrderItem để mở nó 3. Nhấn đúp trên GetInfo() để mở Operation Specification (hình 5.47). Phát triển phần mềm bằng UML trang | 132 Hình 5.47 Cửa sổ thao tác đặc biệt 4. Chọn String trong hộp danh sách Return type 5. Nhấn OK Thực hiện tương tự như trên để chọn Boolean cho kiểu gái trị cho lại của thao tác SetInfo() 6. Chọn bảng Detail 7. Nhấn phím phải trên khoảng trắng của vùng đối số để bổ sung tham số như hình 5.48. Phát triển phần mềm bằng UML trang | 133 Hình 5.48 Bổ sung thao tác 8. Chọn Select. Rose tự gán đối số có tên argname 9. Đổi tên từ argname thành ID 10. Nhấn trong cột Type để mở hộp danh sách kiểu. Chọn Integer 11. Nhấn cột Default để bổ sung giá trị mặc định. Nhập giá trị 0 12. Nhấn OK 13. Nhấn đúp trên thao tác Create() của lớp OrderItem để mở cửa sổ đặc tả thao tác 14. Chọn Boolean cho combobox kiểu cho lại (Return type) 15. Nhấn OK. 5.8.2.15 - Bổ sung quan hệ Sau khi đã bổ sung thuộc tính và các thao tác vào lớp, ta đã tiến gần đến phát sinh mã trình. Nhưng trước hết phải quan tâm đến quan hệ giữa các lớp. Hãy quan s1t việc bổ sung thực đơn trong biểu đồ trình tự để tìm ra quan hệ. Bất kỳ lớp nào trong biểu đồ trình tự đều cần quan hệ trên biểu đồ lớp. Một khi tìm ra quan hệ thì bổ sung vào biểu đồ. Thí dụ sau đây thực hiện bổ sung quan hệ vào các lớp trong UC Enter New Order. 5.8.2.16 - Đặt cấu hình Rose 1. Định vị biểu đồ lớp Add New Order trong browser 2. Nhấp đúp để mở biểu đồ Phát triển phần mềm bằng UML trang | 134 3. Tìm phím công cụ Unidirectional Association, nếu không tìm thấy thì tiếp tục tiếp bước sau. 4. Nhấn phím phải trên thanh công cụ Dagram để chọn Customize 5. Bổ sung phím tên Creates A Unidirectional Asscoiation. 5.8.2.17 - Bổ sung kết hợp 1. Chọn phím công cụ Unidirectional Association 2. Vẽ kết hợp từ lớp OrderOptions đến lớp OrderDetail 3. Lặp lại để vẽ các kết hộp sau: a. Từ OrderDetail đến OrderMgr b. Từ OrderMgr đến Order c. Từ OrderMgr đến TransactionMgr d. Từ TransactionMgr đến Order e. Từ TransactionMgr đến OrderItem f. Từ Order đến OrderItem 4. Nhấn phím phải trên kết hợp một chiều giữa OrderOptions và lớp OrderDetail, gần phía lớp OrderOptions. 5. Chọn Multiplicity>Zero or One 6. Nhấn phím phải trên phía kia của quan hệ một chiều. 7. Chọn Multiplicity>Zero or One 8. Lặp lại và bổ sung các Multiplicity 9. Sơ đồ kết quả như trên hình 5.49. Phát triển phần mềm bằng UML trang | 135 > > OrderOptions (from Boundaries) OrderMgr (from Control) Create(OrderID : Integer) : Boolean SaveOrder() : Boolean 0..1 1 0..1 0..1 0..1 0..n 0..1 > > > 0..1 Order OrderDetail TransactionMgr (from Entities) (from Boundaries) (from Control) Create() 0..n 0..1 Open() : Boolean SaveOrder() SetInfor() SubmitInfor() : Boolean Commit() Save() : Boolean GetInfor() 1 0..1 1..n 0..n > OrderItem (from Entities) Create() : Boolean SetInfor(ID : int=0) : Boolean GetInfor() : Boolean Hình 5.49 Quan hệ kết hợp trong Add New Order Phát triển phần mềm bằng UML trang | 136
File đính kèm:
- giao_trinh_phan_tich_thiet_ke_huong_doi_tuong.pdf