PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối...

60
TRƯỜNG ĐẠI HC CN THƠ KHOA CÔNG NGHTHÔNG TIN VÀ TRUYN THÔNG Giáo trình PHÂN TÍCH HTHNG HƯỚNG ĐỐI TƯỢNG Biên son: Phm ThXuân Lc 2009

Transcript of PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối...

Page 1: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Giáo trình

PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG

Biên soạn: Phạm Thị Xuân Lộc

2009

Page 2: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

THÔNG TIN VỀ TÁC GIẢ PHẠM VI VÀ ĐỐI TƯỢNG SỬ DỤNG

CỦA GIÁO TRÌNH

1. THÔNG TIN VỀ TÁC GIẢ

Họ và tên: Phạm Thị Xuân Lộc

Sinh năm: 1961

Cơ quan công tác:

Bộ môn: Hệ thống thông tin- Toán ứng dụng

Khoa: Công nghệ thông tin- Truyền thông

Trường: Đại học Cần thơ

Địa chỉ Email để liên hệ: [email protected]

2. PHẠM VI VÀ ĐỐI TƯỢNG SỬ DỤNG

Giáo trình có thể dùng tham khảo cho những ngành nào: Tin học

Có thể dùng cho các trường nào: các trường có đào tạo chuyên ngành Hệ thống thông tin.

Các từ khóa (Đề nghị cung cấp 10 từ khóa để tra cứu): trường hợp sử dụng, lớp, đối tượng,

thuộc tính, phương thức, liên kết, bản số, tương tác, sơ đồ tuần tự, thông báo,

Yêu cầu kiến thức trước khi học môn này: Cơ sở dữ liệu, Lập trình hướng đối tượng

Đã xuất bản in chưa, nếu có thì Nhà xuất bản nào: chưa

Page 3: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

PhânPhân ttííchch hhệệ ththốốngnghưhướớngng đ đốốii t tưượợngng

••PhPhạạmm ThThịị XuânXuân LLộộcc

Page 4: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Tài liệu tham khảoStt Tựa Thông tin chi tiết

1 UML 2 của Benoit Charoux, Aomar Osmani, YannThiery-Mieg, NXB Pearson Education France, 2005.

2 UML par la pratique- Etudede cas et exercices corrigés

của Pascal Roques, XB lần 2, NXB Eyrolles, 2001

3 UML pour l’analyse d’un systeme d’information

của Chantal Morley, Jean Hugues, Bernard Leblanc, XB lần 2, NXB Dunod, 2002

4 Phân tích thiết kế hướng đốitựơng bằng UML

của Đặng Văn Đức, NXB Giáo dục, 2002

5 Modélisation objet avec UML của Pierre-Alian Muller, Nathalie Gaertner, XB lần 2, NXB Eyrolles, 2004

6 Object-oriented analysis David William Brown, NXB John Wileys & Sons, 2002

7 Trang web của OMG http://www.omg.org8 Các trang web liên quan

UML

Page 5: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

9 The object-oriented development process

của Tom Rowlett, NXB Prentice Hall PTR, 2001

10 A introducton to object-oriented analysis- Objects in plain English

của David Willia Brown, NXB John Wileys& Sons, 2002

11 Objects¸ components and frameworks with UML

của Desmond Francis D’Souza, Alan Cameron Wills, NXB Addison – Wesley, 1999

12 Software reuse- Domain analysis and design process

của Jag Sodhi, Prince Sodhi, NXB McGraw-Hill, 1999

13 La démarche objet- Concepts et outils

của Max Bouché, NXB Afnor, 1994

14 Object models- strategies, patterns & applications

của Peter Coad, NXB Prentice-Hall, 1997

15 Modern system analysis & design của Jeffrey Hoffer, Joey F.George, Joseph S. Valacich, NXB Prentice-Hall, 2002

Page 6: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Mục lục

I. Giới thiệuII. Sơ đồ hoạt vụIII. Sơ đồ lớpIV. Sơ đồ tương tác

Page 7: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

I. Giới thiệu

I.1 Phân tích hệ thống hướng đối tượng

I.2 UMLI.3 Các loại sơ đồ trong UML

Page 8: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

I.1 Phân tích hệ thống hướng đối tượng

• Cách tiếp cận hướng đối tượng là tất yếu, đểphát triển các hệ thống phần mềm:– phức tạp,– theo kịp đà phát triển không ngừng của công

nghệ và các nhu cầu ứng dụng trong thực tế.

Page 9: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

I.1 Phân tích hệ thống hướng đối tượng (2)

• Tuy nhiên, lập trình hướng đốitượng lại ít trực quan, ít tự nhiênhơn lập trình theo chức năng.

⇒ Đòi hỏi phải mô hình hóa hướngđối tượng trước thật tốt.

Page 10: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

I.1 Phân tích hệ thống hướng đối tượng (3)

Giúp hiểu tốt hơn thực tế và so sánh tốt hơn các giải pháp thiết kế trước khi lập trình.Dựa trên các ngôn ngữ mô hình hóa.

Page 11: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

I.2 UML

• UML (Unified Modeling Language) là mộtngôn ngữ để mô hình hóa với các ký hiệu sinhđộng,

• Cho phép:– Đặc tả– Xây dựng– Hiển thị– Lập sưu liệu

các hệ thống thông tin sử dụng khái niệm đốitượng.

Page 12: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

I.2 UML (2)

• Từ năm 1993, được hình thành từ sự hợpnhất các phương pháp:– Booch của Grady Booch ở Rational Software

Corporation, – OMT (Object Modeling Technology) của

James Rumbaugh, – OOSE (Object Oriented Software

Engineering) của Ivar Jacobson.

Page 13: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

I.2 UML (3)• Khởi đầu từ tên Unified Method • Đổi tên thành UML từ 1996• Được chuyển cho OMG (Object

Management Group) từ 1997, với version 1.1 được phát hành như một chuẩn

• Hiện đang ở version 2.0 với nhiều cải tiếnvề mô hình hóa hành xử, về liên quan giữacác mô hình về cấu trúc và hành xử.

Page 14: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

I.3. Các loại sơ đồtrong UML 2.0

Sơ đồ vềcấu trúc

Sơ đồ vềhành xử Sơ đồ về

tương tác

Page 15: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Sơ đồ vềcấu trúc

Structure diagramsSơ đồ lớp

Class diagram

Sơ đồ đối tượng

Object diagram

Sơ đồcấu trúc phức

Composite structure diagram

Sơ đồđóng gói

Package diagramSơ đồtriển khai

Deployment diagram

Sơ đồthành tố

Component diagram

Page 16: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Sơ đồ vềHành xử

Behavior diagrams

Sơ đồhoạt vụ

Use case diagram

Sơ đồhoạt động

Activity diagram

Sơ đồtrạng thái

State diagram

Page 17: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Sơ đồ vềtuơng tác

Interaction diagrams

Sơ đồtổng thể về tương tác

Interaction overview diagram

Sơ đồtuần tự

Sequence diagram

Sơ đồtruyền thông

Communication diagram

Sơ đồthời gian

Timing diagram

Page 18: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Chương II: Sơ đồ hoạt vụ (use case diagram)

Chương II: Sơ đồ hoạt vụ.....................................................................................................1 II.1. MỤC ĐÍCH CỦA TRƯỜNG HỢP SỬ DỤNG: .........................................................2 II.2 ĐỊNH NGHĨA VÀ KÝ HIỆU:......................................................................................2

II.2.1 Định nghĩa: .............................................................................................................2 II.2.2 Ký hiệu: ..................................................................................................................2

II.3 MÔ TẢ SƠ ĐỒ HOẠT VỤ: .........................................................................................3 II.3.1 Các quan điểm mô tả sơ đồ hoạt vụ: ......................................................................3 II.3.2 Quan hệ giữa các trường hợp sử dụng trong một sơ đồ hoạt vụ: ...........................3

II.4 QUAN HỆ GIỮA CÁC TÁC NHÂN:..........................................................................5 II.5 MỘT VÀI NGUYÊN TẮC MÔ TẢ SƠ ĐỒ HOẠT VỤ: ............................................6

II.5.1 Xác định các tác nhân:............................................................................................6 II.5.2 Gom lại các trường hợp sử dụng: ...........................................................................6

II.6 MÔ TẢ BẰNG VĂN BẢN CÁC TRƯỜNG HỢP SỬ DỤNG: ..................................7 II.6.1 Đinh danh: ..............................................................................................................7 II.6.2 Chuỗi hành vi: ........................................................................................................7 II.6.3 Các mục bổ sung tùy ý : .........................................................................................7

II.7 ĐÓNG GÓI CÁC TRƯỜNG HỢP SỬ DỤNG:...........................................................9 II.7.1 Ngữ cảnh: ...............................................................................................................9 II.7.2 Đinh nghĩa: ...........................................................................................................10

Page 19: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

II.1. MỤC ĐÍCH CỦA TRƯỜNG HỢP SỬ DỤNG: Trường hợp sử dụng là một kỹ thuật mô tả hệ thống dựa trên quan điểm người sử dụng.

Mỗi trường hợp sử dụng là một cách thức riêng biệt để sử dụng hệ thống.

Trường hợp sử dụng là một tập hợp bao gồm các thao tác được kích họat bởi một tác nhân bên ngoài và tạo ra một kết quả xác định được (identifiable), quan sát được (observable).

Việc nhóm lại các thao tác này không tương ứng với các cấu trúc đã cài đặt sẵn hoặc để cài đặt trực tiếp, ngắn hạn trước mắt. Nó tương ứng sát hơn với một chuỗi thao tác như một logic cảm nhận được từ người sử dụng.

II.2 ĐỊNH NGHĨA VÀ KÝ HIỆU:

II.2.1 Định nghĩa: Các trường hợp sử dụng được gom lại trong các sơ đồ họat vụ, nhằm chỉ ra mối liên hệ

giữa các trường hợp sử dụng và các tác nhân. Những sơ đồ này cũng cho phép biểu diễn sự phụ thuộc:

- giữa các trường hợp sử dụng lẫn nhau

- giữa các tác nhân lẫn nhau

II.2.2 Ký hiệu:

Ký hiệu Ý nghĩa

(Nếu tác nhân là người)

Tác nhân (Nếu tác nhân không phải là

người) <<actor>>

Trường hợp sử dụng

Hoặc Quan hệ giữa tác nhân và trường hợp sử dụng (tác nhân kích hoạt trường hợp sử dụng)

Quan hệ giữa các trường hợp sử dụng

Đường biên hệ thống (tùy ý)

Page 20: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

II.3 MÔ TẢ SƠ ĐỒ HOẠT VỤ:

II.3.1 Các quan điểm mô tả sơ đồ hoạt vụ: Mỗi trường hợp sử dụng được mô tả bằng một định nghĩa tổng quát và bằng một kịch bản

(script) với các định nghĩa được minh họa cụ thể. Một trường hợp sử dụng có thể có mặt trong nhiều sơ đồ hoạt vụ.

Có 2 quan điểm biểu diễn mô tả sơ đồ họat vụ:

a. Thực hiện một sơ đồ họat vụ cho một tác nhân

b. Thực hiện một sơ đồ họat vụ cho nhiều tác nhân, trong đó có một tác nhân chính kích hoạt sơ đồ hoạt vụ và các tác nhân phụ có tham gia vào các trường hợp sử dụng trong sơ đồ hoạt vụ.

II.3.2 Quan hệ giữa các trường hợp sử dụng trong một sơ đồ hoạt vụ: II.3.2.1 Quan hệ “bao hàm” (inclusion):

Trường hợp sử dụng B được coi là “bao hàm” trường hợp sử dụng A nếu hành vi mô tả B bao hàm hành vi mô tả A.

Ta nói B phụ thuôc vào A.

Ký hiệu :

AB

bao hàm

c

Hoặ

includes AB

Page 21: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Ví dụ :

bao hàm

Tạo biên lai cho khách hàng

Nhận thanh toán cước từ khách hàng

II.3.2.2 Quan hệ “mở rộng” (extension): Nếu hành vi của trường hợp sử dụng B có thể được mở rộng bởi hành vi của trường hợp

sử dụng A, ta nói A mở rộng B.

Một sự mở rộng thường phải chịu một điều kiện, điều kiện này được biểu diễn dưới dạng một ghi chú (note) . Phải cho biết chính xác ở điểm nào của trường hợp đang xét thì mở rộng nó.

Ký hiệu :

mở rộng BA

Hoặc

extends

BA

Ví dụ :

mở rộng

Nhận giấy báo cước

Thanh toán cước

II.3.2.3 Quan hệ “tổng quát hóa” (generalization):

Một trường hợp sử dụng A là một sự tổng quát hóa trường hợp sử dụng B nếu B là một trường hợp đặc biệt của A.

Mối quan hệ « tổng quát hóa sẽ được diễn dịch thành khái niệm « thừa kế» trong các ngôn ngữ hướng đối tượng.

Ký hiệu : biểu diễn bằng mũi tên khối rỗng về trường hợp sử dụng tổng quát hơn.

Page 22: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

B

A

Ví dụ :

Thanh toán bằng tiền mặt

Thanh toán bằng thẻ

Thanh toán

II.4 QUAN HỆ GIỮA CÁC TÁC NHÂN: Mối quan hệ duy nhất có thể có giữa các tác nhân là sự tổng quát hóa.

Một tác nhân A là một sự tổng quát hóa của B nếu A có thể được thay thế bởi B trong mọi trường hợp sử dụng (chiều ngược lại không đúng).

Ký hiệu:

A

B

Ví dụ :

Nhan vien

Lanh dao

linh luong

ky quyet dinh

Page 23: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

SV

nap tien cho the

mua the

chon thuc an << include >>

chon thuc an theo yeu cau

<< extends >>

chon trong luong yc

<< extends >>

chon gia yeu cau

chon thuc an dong goi san

chon thuc an tu ds

II.5 MỘT VÀI NGUYÊN TẮC MÔ TẢ SƠ ĐỒ HOẠT VỤ:

II.5.1 Xác định các tác nhân: - Các tác nhân là những người sử dụng hệ thống. Không nên quên những người sử

dụng có trách nhiệm khai thác và bảo trì HTTT. Không kể đến những kỹ sư phần mềm cài đặt và tham số hóa phần mềm trước khi sử dụng.

- Ngoài ra, tác nhân có thể là :

+ Các thiết bị ngoại vi sử dụng bởi hệ thống (máy in, robot, …)

+ Các phần mềm đã sẵn sàng để được tích hợp vào hệ thống

+ Các hệ thống tin học nằm ngoài nhưng có tương tác với hệ thống đang xét

Để dễ tìm các tác nhân, nên hình dung ra trước các biến của hệ thống. Tất cả những ai, những gì sử dụng HT và có tương tác với HT là một tác nhân.

Một trường hợp sử dụng luôn có ít nhất:

- 1 tác nhân chính kích hoạt trường hợp sử dụng bằng yêu cầu của mình và HT sẽ sinh ra một kết quả quan sát được cho tác nhân đó

- và thường có các tác nhân phụ khác.

II.5.2 Gom lại các trường hợp sử dụng: - Không có nguyên tắc duy nhất.

- Cần đứng trên quan điểm người sử dụng và xác định:

+ tác nhân đó được HT phục vụ thế nào

+ trong trường hợp nào tác nhân đó sử dụng HT

+ chức năng nào của HT mà tác nhân đó truy cập đến

- Cần tránh sự dư thừa, và cần có trừu tượng hóa hợp lý để giam bớt số trường hợp, ví dụ không nên cho 1 trường hợp sử dụng chỉ có 1 thao tác.

Page 24: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

II.6 MÔ TẢ BẰNG VĂN BẢN CÁC TRƯỜNG HỢP SỬ DỤNG: Gồm có 3 phần: định danh, mô tả chuỗi hành vi và các mục bổ sung tùy ý:

II.6.1 Đinh danh: - tên

- mục tiêu (tóm tắt)

- các tác nhân (chính + phụ)

- ngày tạo và ngày cập nhật mới nhất

- người tạo

- phiên bản (version)

II.6.2 Chuỗi hành vi: - mô tả tổng quát chuỗi

- điều kiện đầu (pre-cond)

- chuỗi liên kết các thông báo (messages)

- điều kiện cuối (post-cond)

- xử lý các ngoại lệ

II.6.3 Các mục bổ sung tùy ý : II.6.3.1 Ràng buộc phi chức năng :

- tính tin cậy (confidentiality)

- tính bảo mật (security)

- tính sẵn sàng (disponiblity)

- tính cạnh tranh (concurrence)

- thời gian đáp ứng

- …

II.6.3.2 Ràng buộc về giao diện người-máy : Màu sắc, vị trí các mục, theo qui định của ngành dọc (ngành tài chính, ngân hàng…)

Ví dụ 1: use case « Đăng nhập”:

Định danh:

- Tên: Đăng nhập

- Mục tiêu (tóm tắt): Use case này mô tả cách một người dùng đăng nhập vào Hệ thống đăng ký học phần.

- Tác nhân chính: Sinh viên

- Ngày tạo và ngày cập nhật mới nhất: 26/1/08

- Người tạo: Nhóm 10- HK 2 2007-2008

- Phiên bản (version): 3

Page 25: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Chuỗi hành vi:

- Mô tả tổng quát chuỗi: Use case này bắt đầu khi một actor muốn đăng nhập vào Hệ thống đăng ký học phần.

- Điều kiện đầu (pre-cond) : không có.

- Chuỗi liên kết các thông báo (messages) :

1. Hệ thống yêu cầu actor nhập tên và mật khẩu.

2. Actor nhập tên và mật khẩu.

3. Hệ thống kiểm chứng tên và mật khẩu được nhập và cho phép actor đăng nhập vào hệ thống.

- Điều kiện cuối (post-cond) : Nếu use case thành công, actor lúc này đã đăng nhập vào hệ thống. Nếu không trạng thái hệ thống không thay đổi.

- Xử lý ngoại lệ:

Nếu actor nhập sai tên hoặc mật khẩu, hệ thống sẽ hiển thị một thông báo lỗi. Actor có thể chọn trở về đăng nhập lại hoặc hủy bỏ việc đăng nhập, lúc này use case kết thúc.

Nếu actor nhập sai :

+ Username : sẽ hiển thị thông báo không tồn tại username.

+ Password : sẽ hiển thị thông báo yêu cầu nhập đúng mật khẩu.

Ví dụ 2: use case « Quản lý số lượng hàng tồn kho 1 ngành hàng”:

a. Định danh:

- Tên: Quản lý số lượng hàng tồn kho 1 ngành hàng.

- Mục tiêu (tóm tắt): Tránh thất thoát, giải phóng hàng tồn.

- Các tác nhân (chính + phụ): Nhân viên quản lý kho (phụ), Nhân viên quản lý ngành hàng (chính).

- Ngày tạo và ngày cập nhật mới nhất: 21/11/2008

- Người tạo: Nhóm 5: Hồ Bửu Thiện, Nguyễn Phương Bình, Trần Duy Phương, lớp Tin học Cần thơ 2004..

- Phiên bản (version): 1.0

b. Chuỗi hành vi:

- Mô tả tổng quát chuỗi: kiểm tra số lượng xuất hàng, nhập hàng.

- Điều kiện đầu (pre-cond) : có bảng thống kê hàng tồn của định kỳ trước, phiếu nhập, phiếu xuất, danh sách hàng thất thoát do hư hao (tất cả lưu trên cơ sở dữ liệu), danh mục ngành hàng.

- Chuỗi liên kết các thông báo (messages) :

+ Hệ thống hiển thị danh mục ngành hàng

+ Nhân viên quản lý kho chọn ngành hàng (mã)

+ Nhân viên quản lý kho ghi ngày, giờ kiểm tra hàng tồn theo định kỳ.

+ Nhân viên quản lý kho truy xuất mã ngành hàng, mặt hàng để kiểm tra theo từng mặt hàng.

Page 26: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

+ Hệ thống (hoặc do phương thức của một lớp) tính số lượng tồn cuối cho từng mặt hàng từ bảng thống kê hàng tồn của định kỳ trước, phiếu nhập, phiếu xuất, danh sách hàng thất thoát do hư hao, và lưu kết quả bảng vào cơ sở dữ liệu. Công thức tinh:

TỒN CUỐI=TỒN ĐẦU+ NHẬP - XUẤT

+ Nhân viên quản lý kho kiểm tra số lượng hiện tại trong kho.

+ Nhân viên quản lý kho đối chiếu số lượng hàng tồn trên thực tế và số liệu tồn cuối tính được.

+ Nhân viên quản lý kho nhập số lượng hàng tồn trên thực tế, số lượng chênh lệch, lưu vào CSDL và in ra.

+ Nhân viên quản lý kho in bảng thống kê số lượng hàng tồn theo định kỳ.

- Điều kiện cuối (post-cond) : Lưu vào cơ sở dữ liệu và in ra:

o bảng thống kê số lượng hàng tồn của từng mặt hàng,

o bảng thống kê số lượng chênh lệch của từng mặt hàng

- Xử lý các ngoại lệ :

o Nếu có mặt hàng chưa có phiếu xuất: đổi công thức thành:

TỒN CUỐI=TỒN ĐẦU+ NHẬP

o Nếu có mặt hàng chưa được kiểm kê tồn: đổi công thức thành:

TỒN CUỐI=NHẬP- XUẤT

o Nếu có mặt hàng chưa có phiếu xuất và cũng chưa được kiểm kê tồn: đổi công thức thành:

TỒN CUỐI=NHẬP

o Nếu số lượng xuất lớn hơn số lượng nhập thì yêu cầu nhập lại.

o Nếu số lượng âm thì yêu cầu nhập lại.

c. Các mục bổ sung tùy ý :

Ràng buộc phi chức năng(non-functional constraints) :

- Tính tin cậy (confidentiality): chính xác theo phiếu nhập và phiếu xuất.

- Tính bảo mật (security): Nhân viên quản lý kho, nhân viên quản lý ngành hàng, ban giám đốc.

- Tính sẵn sàng (disponiblity): giờ đóng cửa siêu thị, hoặc khi có yêu cầu từ lãnh đạo.

- Tính cạnh tranh (concurrence) : không cho phép nhiều người cùng kiểm tra 1 kho.

- Thời gian đáp ứng (response time):

o tính số lượng tồn cuối: <=1’

o tính số liệu chênh lệch: 6 giờ.

II.7 ĐÓNG GÓI CÁC TRƯỜNG HỢP SỬ DỤNG:

II.7.1 Ngữ cảnh: UML cho phép nhóm lại các trường hợp sử dụng trong một gói (paquet, packet,

package).

Có thể đóng gói trên một hoặc nhiều tiêu chí sau:

Page 27: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

- Tác nhân: Thủ kho, Kế toán, Thu ngân, …

- Lĩnh vực chức năng: Quản lý kho, Quản lý nhân sự, …

- Đối tượng cần quản lý (thường nhập chung với cách phân chia gói theo lĩnh vực chưc năng): Hàng, Nhân viên, Cửa hàng

- Vị trí địa lý: Đồng bằng sông Cửu long, Nam Trung bộ, …

- Thời gian thực hiện: Thu mua, Nhập kho, Trưng bày, Bán hàng, Giao hàng, Bảo hành, …

- Quyền truy xuất: Chỉ đọc, Chỉ thêm, …

Một sơ đồ hoạt vụ có thể có chứa nhiều gói và một gói có thể được chứa trong gói khác.

Ví dụ: A::B (gói A chứa gói B)

A::B::C (gói A chứa gói B, gói B chứa class C)

II.7.2 Đinh nghĩa: Một gói cho phép tổ chức các thành phần để mô hình hóa thành nhóm. Một gói có thể

chứa các lớp, các trường hợp sử dụng, các giao diện …

QL KHàng

bao hàm

Hỗ trợ KH

QL Kho bao hàm

Page 28: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Chương III: Sơ đồ lớp Chương III: Sơ đồ lớp ......................................................................................... 1 III.1 MỤC ĐÍCH CỦA SƠ ĐỒ LỚP :................................................................ 2 III.2 LỚP vÀ CÁC KHÁI NIỆM LIÊN QUAN:................................................ 2

III.2.1 Lớp: ...................................................................................................... 2 III.2.2 Phương thức trừu tượng và lớp trừu tượng: ......................................... 3 III.2.3 Sự bao gói (encapsulation) và mức độ hiển thị (visibility): ................. 3 III.2.4 Thuộc tính (attribute): .......................................................................... 4 III.2.5 Phương thức (method):......................................................................... 5

III.3 GIAO DIỆN (INTERFACE): ..................................................................... 5 III.4 QUAN HỆ GIỮA CÁC LỚP:..................................................................... 5

III.4.1 Liên kết (association): .......................................................................... 5 III.4.2 Tính bội (multiplicity) :........................................................................ 6 III.4.3 Liên kết có ràng buộc (association with constraint): ........................... 6 III.4.4 Lớp-liên kết (association class) :.......................................................... 6 III.4.5 Liên kết do suy diễn: ............................................................................ 7 III.4.6 Liên kết có thẩm định (qualified association): ..................................... 8 III.4.7 Liên kết nhiều chiều: ............................................................................ 8 III.4.8 Quan hệ kết tập (aggregation relation) :............................................. 10 III.4.9 Quan hệ cấu thành (composition) : .................................................... 11 III.4.10 Quan hệ phụ thuộc (dependancy):.................................................... 11 III.4.11 Quan hệ thừa kế :.............................................................................. 11

III.5 RÀNG BUỘC : ......................................................................................... 12 III.6 XÂY DỰNG MỘT SƠ ĐỒ LỚP :............................................................ 12

III.6.1 Các quan điểm mô hình hóa :............................................................. 12 III.6.2 Các bước xây dựng :........................................................................... 12

1

Page 29: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

III.1 MỤC ĐÍCH CỦA SƠ ĐỒ LỚP : - Được xem là mô hình quan trọng nhất trong phân tích hệ thống hướng đối

tượng. - Dùng để mô tả cấu trúc bên trong, tĩnh của hệ thống. - Không dùng để chỉ ra cách thức làm thế nào sử dung các tác tử (operation).

Trách nhiệm đó sẽ do sơ đồ tương tác.

III.2 LỚP vÀ CÁC KHÁI NIỆM LIÊN QUAN:

III.2.1 Lớp: Lớp là một sự mô tả một tập hợp các đối tượng có cùng các đặc tính : cùng

một ngữ nghĩa, có chung các thuộc tính, các phương thức và các quan hệ. Một đối tượng là một thể hiện của lớp. Ký hiệu :

Danh sách các phương thức

Danh sách các thuộc tính

Tên lớp - Tên lớp : phải có nghĩa và bắt đầu bằng chữ hoa. Nếu nó được đóng gói, cần

đặc tả tất cả các gói chứa nó theo thứ tự từ lớn đến nhỏ và cách bởi 2 dấu hai chấm ( :: ).

Ví dụ : java ::lang ::Object - Mỗi thuộc tính (attribute) được mô tả bằng tên và kiểu. Tên của thuộc tính

phải duy nhất trong lớp. - Mỗi phương thức (method) được mô tả kiểu trả về, danh sách các đối số và

kiểu tương ứng của mỗi đối số. Ví dụ :

đkýMôn(m: String); đkýNhóm(): Integer;

họ: String tên: String ngày_sinh: Date phái: {‘M’, ‘F’} lớp: String

Sinh_viên

2

Page 30: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

III.2.2 Phương thức trừu tượng và lớp trừu tượng: Một phương thức được gọi là trừu tượng nếu người ta biết được phần mô tả

đầu của nó (header / entête / signature ) nhưng không biết cách thức nó có thể được thực hiện như thế nào.

Một lớp được gọi là trừu tượng nếu nó định nghĩa ít nhất một phương thức trừu tượng hoặc khi một lớp cha chứa một phương thức trừu tượng chưa được thực hiện.

Ví dụ :

GiaiPT();{abstract}

x: Array;

PhươngTrình {abstract}

PhươngTrìnhBacN {abstract}

x: Array; n: Integer; a: Array;

PhươngTrìnhBac2

x: Array; a, b, c: Real;

GiaiPT();

Tên của một lớp trừu tượng sẽ có thêm từ khóa « abstract » đặt giữa dấu móc

{} như trong ví dụ.

III.2.3 Sự bao gói (encapsulation) và mức độ hiển thị (visibility): Một lớp hoặc thành phần của lớp (chẳng hạn thuộc tính) có nhiều mức độ

được nhìn thấy tùy theo ký tự đứng trước nếu có: - Có từ khóa public hoặc dấu + đứng trước : được nhìn thấy từ bên ngoài - Không có ký tự nào đứng trước : chỉ được nhìn thấy từ trong gói chứa

lớp đang xét - Có từ khóa protected hoặc dấu # đứng trước : được nhìn thấy từ trong

lớp đang xét hoặc các lớp con cháu của lớp đó - Có từ khóa private hoặc dấu - đứng trước : chỉ được nhìn thấy từ trong

lớp đang xét.

3

Page 31: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Gói1

+Lớp1 +Lớp2

+Lớp3

“import”

+Lớp4

Gói2

-a1 a2 +a3 #a4

III.2.4 Thuộc tính (attribute): Các thuộc tính biểu diễn các dữ liệu được bao gói trong các đối tượng của lớp

đang xét. Một thuộc tính có thể được khởi tạo lúc khai báo. Ngữ pháp đầy đủ của thuộc

tính như sau: <mức độ hiển thị> [/] <tên thuộc tính>: <kiểu> [‘[’<bản số>] ’]’ [=<trị khởi tạo>]

trong dó: <mức độ hiển thị>: dùng các từ khóa public, private, protected hoặc các dấu

tương ứng <kiểu>: kiểu dữ liệu cơ sở hoặc tên lớp <bản số>: các chỉ số tối thiểu và tối đa cho một mảng của kiểu vừa nói ở trên <trị khởi tạo>: phải có kiểu tương ứng với kiểu nói trên.

III.2.4.1 Thuộc tính của lớp: Thông thường, một thuộc tính sẽ có các trị khác nhau ở các đối tượng khác

nhau của lớp đó. Tuy nhiên, tồn tại những thuộc tính có trị duy nhất cho tất cả các đối tượng của lớp đó. Các đối tượng truy xuất được thuộc tính đó, nhưng không được sở hữu một bản sao của nó.

Đó chính là thuộc tính tĩnh mà trong Java và C++ dùng từ khóa static đứng trước tên của nó. Trong UML, thuộc tính của lớp được gạch dưới.

Ví dụ: giá trị PI=3.14 của lớp Math trong Java luôn không đổi đối với bất kỳ đối tượng nào của lớp Math.

III.2.4.2 Thuộc tính do suy diễn (derived attribute): Thuộc tính do suy diễn là thuộc tính có được do sự suy diễn, tính toán từ các

thuộc tính khác. Nó được sử dụng như một thuộc tính thực thụ, nhưng được tính toán qua một phương thức.

Thuộc tính do suy diễn được đánh dấu bởi dấu “/’ (slash) đứng trước. Ví dụ: /tri_gia: integer;

4

Page 32: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

III.2.5 Phương thức (method): Hành vi của một đối tượng được mô hình hóa bằng một tập các phương thức.

Người ta phân biệt đặc tả (specification, header) của phương thức với cài đặt (implementation) của nó. Tương ứng với mỗi đặc tả, có thể có nhiều cài đặt, nhưng với mỗi cài đặt chỉ tương ứng với một đặc tả duy nhất.

Đặc tả còn được gọi là “operation”, còn cài đặt cụ thể được gọi là “method”.

III.3 GIAO DIỆN (INTERFACE): Giao diện cũng giống như lớp, nhưng không có đặc tả cho một cấu trúc bên

trong, cũng như các giải thuật thực hiện cho các phương thức. Giao diện có thể mô tả chính xác điều kiện và kết quả việc kích họat nó.

Ngược với lớp, giao diện không có thể hiện. Để được sử dụng, nó thường phải được thực hiện bởi một lớp.

Một giao diện có thể được chuyên biệt hóa hoặc tổng quát hóa bởi một giao diện khác.

Cách biểu diễn giao diện và mối liên hệ với lớp:

III.4 QUAN HỆ GIỮA CÁC LỚP:

III.4.1 Liên kết (association): Một liên kết biểu diễn mối liên hệ ngữ nghĩa bền vững giữa 2 lớp. Ký hiệu: Các thành phần đầy đủ của một liên kết gồm có:

A B

TenLop

TenLop

TenGiaoDien

tên liên kết bản số bản số

“interface” TenGiaoDien

vai trò vai trò Mũi tên để chỉ ý nghĩa chính xác của tên liên kết từ lớp bên trái sang lớp bên

phải. “Vai trò” phía một lớp dùng để chỉ vai trò của lớp đó trong liên kết đối với lớp kia.

Vai trò, mũi tên có thể được bỏ qua.

5

Page 33: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Nếu muốn biểu diễn sự thông thương từ một lớp sang lớp khác bị cấm ta dùng dấu tréo ở phía lớp đó trên đường nối.

Ví dụ: Trong ví dụ này, sự thông thương chỉ có chiều duy nhất từ lớp “Hình đa giác”

sang lớp “Điểm”.

III.4.2 Tính bội (multiplicity) : Ở 2 đầu mối liên kết, phải có chỉ số để biểu diễn tính bội của liên kết, chính

xác hơn là bản số (cardinality) của mỗi lớp tham gia vào liên kết. Chú ý: bản số của một lớp ở đầu này của liên kết được ký hiệu ở lớp đầu kia

của liên kết. Ví dụ: Ngữ nghĩa: 1 môn đượ

trong khi 1 giáo viên chỉ dạy 1

III.4.3 Liên kết có ràng buộViệc thêm vào ràng bu

hơn vì nó cho phép mô tả chràng buộc dược đặt trong dấu Tuy nhiên, ngôn ngữ OCL ( O

Ví dụ:

III.4.4 Lớp-liên kết (associaKhi phân tích, ta thấy

thuần túy nào, mà phụ thuộc trong phân tích hệ thống hướnnên liên kết này trở thành một

Ví dụ: các lớp “Co_chđồ sau:

Môn 1 4

Môn GViên 1..*

dạy 1..*

được định nghĩa bởi * 3..*Hình đa giác Điểm

#đỉnh

*Hình đa giác

c dạy bởi môn duy

c (associộc cho mộính xác hơmóc “{}” bject Con

tion clascó nhữngđồng thờig đối tượn lớp, gọi làuyen_mon

được

1..

ít nhất 1 giáo viên và nhiều nhất 4 giáo viên, nhất.

ation with constraint): t hoặc nhiều liên kết mang lại nhiều thông tin n tầm ảnh hưởng và chiều của lien kết. Các

và có thể biểu diên bằng bất kỳ ngôn ngữ nào. straint Language) được ưa chuộng hơn.

s) : thuộc tính không thể đặt vào được trong lớp vào nhiều lớp nối nhau qua một liên kết. Vì g, chỉ có lớp mới có thể chứa được thuộc tính lớp-liên kết. ”, “Co_ngoai_ngu” và “Xin_tuyen” trong sơ

GViên

định nghĩa bởi

#đỉnh{ordered}

3..*Điểm

6

Page 34: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

1..* co_CM

0..*

- ma_CM- ten_CM

+ Chuyen_mon- ma_CM- ten_CM

1..*

0..*co_NN

- ma_NN- ten_NN

+ Ngoai_ngu- ma_NN- ten_NN

1

0..*

xin_tuyen

1

0..1

duoc_nhan

+ stt_VT- dien_giai

+ Vi_tri+ stt_VT- dien_giai

+ stt- ho- ten- nam_sinh+ xin_TD+ hien_thi+ duoc_nhan- duoc_danh_gia

+ Nguoi xin viec+ stt- ho- ten- nam_sinh+ xin_TD+ hien_thi+ duoc_nhan- duoc_danh_gia

- danh_gia+ Xin_tuyen

- danh_gia

- trinh_do+ Co_chuyen_mon

- trinh_do

- trinh_do+ Co_ngoai_ngu

- trinh_do

III.4.5 Liên kết do suy diễn: Liên kết do suy diễn là liên kết được đặt điều kiện hoặc được suy diễn từ ít

nhất một liên kết khác. Mặc dù nó tạo ra sự dư thừa, nhưng thực tế lại có ích nếu phải sử dụng nhiều liên kết mới có được kết quả như mong muốn.

Ký hiệu: có dấu slash (“/”) trước tên liên kết. Ví dụ 1: liên kết “có thẻ” trong sơ đồ về thẻ ATM dưới đây (dấu “/” được thay

bởi từ khóa “derived” do phần mềm không cho phép )

1

0..*

<< derived >>co the

0..*

1

co TK

- ma KH- ho KH- ten KH- dia chi KH

+ Khach hang- ma KH- ho KH- ten KH- dia chi KH

0..*

1

cua TK

- so TK- ngay tao- so du

+ Tai khoan- so TK- ngay tao- so du

- ma the- ngay tao- so du

+ The ATM- ma the- ngay tao- so du

Ví dụ 2: liên kết “mua” là liên kết suy diễn và cần thiết duy trì khi cần biết

thường xuyên khách hàng mua hàng gì bằng mối liên kết trực tiếp thay vì phải qua 2 liên kết “mua món” và “gồm”.

7

Page 35: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

0..*

1..*

mua

0..*

1

mua mon

- ma_KH- hoten_KH

+ Khach hang- ma_KH- hoten_KH

1

1..* gom

- ma_hg+ ten_hg+ dvt

+ Hang- ma_hg+ ten_hg+ dvt

+ stt+ don gia

+ Mon hang cu the+ stt+ don gia

III.4.6 Liên kết có thẩm định (qualified association): Có đôi khi một lớp này có tác động đến lớp khác liên kết với nó, đòi hỏi liên

kết phải có một sự thẩm định (qualification) để tránh mô hình hóa không chính xác. Sự thẩm định này biểu hiện bằng cách cho thêm: - một chỉ số vào liên kết - hoặc một lớp vào lớp ban đầu Ví dụ 1: một đối tựong của lớp Object được tham chiếu bởi một chỉ số duy

nhất trong một đối tượng của lớp Vector.

1

Vector Object

1indice: integer Object Vector

*1 Ví dụ 2: Do ngân hàng có nhiều hoạt động khác không liên quan đến khách

hàng trong ngữ cảnh đang xét, và ta muốn giới hạn mối quan hệ giữa khách hàng và ngân hàng chỉ là thông qua các tài khoản: ta thêm vào một lớp “Tài khỏan” trong lớp “Ngân hàng”:

0..2 *

Khách hàng #Tài khỏanNgân hàng

III.4.7 Liên kết nhiều chiều: Trong UML, ít khi dùng liên kết nhiều chiều, mà thường giới hạn ở 2 chiều,

đôi khi 3 chiều. Lý do là vì để xác định bản số của mỗi lớp khá khó khăn. Thường thì các liên kết nhiều chiều được chuyển sang dùng lớp-liên kết, hoặc

nhiều liên kết 2 chiều. Ví dụ: Về thời khóa biểu dạy học, có nhiều cách mô hình hóa: Cách 1: Dùng liên kết nhiều chiều nối với tất cả các lớp liên quan:

8

Page 36: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

0..*

+ Phong

0..*

+ Mon 0..*

+ Thoi gian

0..*

+ Giao vien0..*

+ Lop

day hoc

Cách 2: Khuynh hướng hiện nay là phá liên kết nhiều chiều ra thành các liên

kết ít chiều hơn. Trong ví dụ dưới đây, do có tồn tại phụ thuộc hàm:

Phòng, Thời gian -> Môn, Giáo viên, Lớp Nên các liên kết 3 chiều thực sự có khóa chỉ gồm khóa của Phòng và khóa của Thời gian kết hợp lại:

0..*

0..*

0..*

+ Phong

0..*

+ Mon

0..*

0..*

0..*

+ Thoi gian

0..*

+ Giao vien

0..*

+ Lop

day mon

day boi

day o

Phòng

Môn Giáo viên Lớp

Thời gian Hoặc:

9

Page 37: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Phòng

Môn Giáo viên Lớp

Thời gian Cách 3: Chuyển nút ở liên kết nhiều chiều thành lớp mới

1..*

1

- ma phong- nha hoc

+ Phong- ma phong- nha hoc

0..* 1

- ma lop- so nhom- si so

+ Lop- ma lop- so nhom- si so

11..*

- ma mon- ten mon- so DVHT

+ Mon- ma mon- ten mon- so DVHT

1

1..*

- ma GV- ho GV- ten GV

+ GV- ma GV- ho GV- ten GV

1

0..*

- ngay- gio bat dau- gio ket thuc

+ Thoi gian- ngay- gio bat dau- gio ket thuc

- stt+ Phien

- stt

Cách 4: Khi lớp, giáo viên và môn không quan trọng lớp trong ngữ cảnh đang

xét thì chuyển chúng chúng từ lớp thành thuộc tính trong lớp liên kết:

0..* 0..* - ma phong- nha hoc

+ Phong- ma phong- nha hoc

- ngay- gio bat dau- gio ket thuc

+ Thoi gian- ngay- gio bat dau- gio ket thuc

- stt- ten mon- ho GV- ten GV- ma lop

+ Phien- stt- ten mon- ho GV- ten GV- ma lop

III.4.8 Quan hệ kết tập (aggregation relation) : Một kết tập là một trường hợp đặc biệt của liên kết không đối xứng biểu diễn

một mối quan hệ « chứa đựng » về cấu trúc hoặc hành vi của một phần tử trong một tập hợp.

Không như liên kết, quan hệ kết tập có tính truyền.

10

Page 38: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Quan hệ kết tập cũng cho phép việc ủy thác về tác tử : một tác tử có thể được thực hiện trên một lớp kết tập, thực tế được thực hiện trên các lớp thành phần của nó.

Chu kỳ sống của lớp kết tập là độc lập với các lớp thành phần của nó. Mặt khác, một thể hiện của lớp thành phần có thể xuất hiện trong nhiều thể hiện của lớp kết tập.

Ký hiệu : có hình thoi rỗng trên liên kết về phía lớp biểu diễn tập hợp chứa đựng.

III.4.9 Quan hệ cấu thành (composition) : Quan hệ cấu thành còn được gọi là quan hệ kết tập phức hợp, là một quan hệ

kết tập đặc biệt. Nó mô tả một sự chứa đựng về cấu trúc giữa các thể hiện. Lớp chứa sẽ chịu trách nhiệm tạo ra, sao chép và xóa các lớp thành phần của

nó. Mặt khác, việc sao chép hoặc xóa đi lớp chứa sẽ kéo theo sao chép hoặc xóa các lớp thành phần của nó.

Một thể hiện của lớp thành phần chỉ thuộc về duy nhất một thể hiện của lớp chứa nó.

Ký hiệu: hình thoi đặc trên liên kết ở phía lớp chứa. Ví dụ:

Thư viện Kho sách 1 * *

Bàn Mặt bàn

Chân bàn

3..4

1

0..1

Mặt kính phủ

1..*Kệ sách

0..1

III.4.10 Quan hệ phụ thuộc (dependancy): Khái niệm tương tự như trong phân tích cổ điển. Ký hiệu : đường gạch đứt nét có mũi tên từ lớp chịu phụ thuộc. Ví dụ :

cua

+ Chuyen bay + Hang HK

III.4.11 Quan hệ thừa kế : Khái niệm tương tự như trong phân tích cổ điển, cũng có thừa kế đơn và thừa

kế bội. Ký hiệu : đường gạch có mũi tên rỗng hướng về lớp cha. Ví dụ :

11

Page 39: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

+ Nhan vien

- nhiem vu+ NV hanh chinh

- nhiem vu 1..* 1..*day

+ Giao vien + Mon hoc

III.5 RÀNG BUỘC : Các ràng buộc có thể biểu diễn bằng ngôn ngữ tự nhiên, một ngôn ngữ lập

trình, biểu thức toán học … hoặc ngôn ngữ OCL đi kèm theo UML. Cụ thể có các dạng ràng buộc sau được biểu diễn bằng OCL:

- Các qui tắc thừa kế: {complete}, {incomplete}, {overlaps}, {distinct} … - Hạn chế tầm vực của một liên kết: {subset}, {xor} … - Cách thức phát triển các đối tượng: {frozen}, {addOnly} … - Tổ chức các đối tượng:{ordered}, {frozen}, …

III.6 XÂY DỰNG MỘT SƠ ĐỒ LỚP :

III.6.1 Các quan điểm mô hình hóa : - Top-down : Phân giải dần từ tổng quát xuống chi tiết - Bottom-up : Sau khi có sơ đồ chi tiết ở tất cả các khóa cạnh, mới

nhóm lại dần thành các phân hệ riêng, dựa trên mối tương quan chặt chẽ giữa các lớp.

III.6.2 Các bước xây dựng : III.6.2.1 Tìm các lớp của lĩnh vực chức năng :

- Tìm các đối tượng và lớp trong thế giới thực o Lớp trong thế giới thực o Lớp con trong thế giới thực

- Chuyển đổi từ các đối tượng trong thế giới thực sang đối tượng dữ liệu o Lớp trong thế giới dữ liệu o Quản trị sự phức tạp o Ánh xạ cho các lớp

- Chọn lựa giữa lớp và thuộc tính - Lớp dữ liệu bổ sung - Tìm các cấu trúc kết tập và lớp con

III.6 2.2 Tìm các mối liên kết giữa các lớp :

III.6.2.3 Tìm các thuộc tính của mỗi lớp :

III.6.2.4 Tổ chức lại và đơn giản hóa sơ đồ :

Bằng cách sử dụng sự tổng quát hóa.

12

Page 40: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

III.6.2.5 Thử các đường truy xuất đến các lớp : Ví dụ: Quản lý hàng tồn

1..*

1..*

ghi phieu 1..*

0..*

ghi HD

+ ma hang+ ten hang

+ DS phieu nhap+ DS so thu tu phieu

+ Hang+ ma hang+ ten hang

+ DS phieu nhap+ DS so thu tu phieu

1..*

1

<< derived >>giu

0..*

1

lien quan

+ ma kho+ ten kho+ dia chi kho+ so DT

+ ds hang chua () : Hang+ ds hang cua phieu (AV) : Hang

+ Kho+ ma kho+ ten kho+ dia chi kho+ so DT

+ ds hang chua () : Hang+ ds hang cua phieu (AV) : Hang

1

1..*

lap

+ Thu kho

0..* 1tao boi

0..*

1..*cho

+ so hoa don+ ngay lap hoa don- so seri+ la HD ban+ tri gia HD

+ Hoa don+ so hoa don+ ngay lap hoa don- so seri+ la HD ban+ tri gia HD

+ so phieu+ ngay lap+ loai phieu

+ ds hang

+ Phieu N_X+ so phieu+ ngay lap+ loai phieu

+ ds hang

+ NV ke toan

+ maNV Variable character(4)+ ho NV Variable character(20)+ ten NV Variable character(7)+ dia chi Variable character(128)- nam sinh Integer(2)+ ngay bat dau Date(8)

+ NV+ maNV Variable character(4)+ ho NV Variable character(20)+ ten NV Variable character(7)+ dia chi Variable character(128)- nam sinh Integer(2)+ ngay bat dau Date(8)

+ so luong+ don gia

+ Ghi phieu+ so luong+ don gia + so luong

+ don gia

+ Ghi hoa don

+ so luong+ don gia

III.6 2.6 Tinh lọc hóa sơ đồ: Khi so khớp lại với người sử dụng, hoặc với sơ đồ hoạt vụ, ta có thể :

- Bớt đi liên kết giữa các lớp, nếu đó là liên kết suy diễn, hoặc không tương ứng với nhu cầu trong thế giới thực, ...

- Chuyển lớp sang thuộc tính nếu nó không đóng vai trò thực sự quan trọng trong thế giới thực, hoặc không cần có dạng bảng mã. v.v…

- Ngược lại, cũng có thể thêm liên kết. - Chuyển một thuộc tính sang thành một lớp, chẳng hạn khi muốn

đưa vào bảng mã tương ứng để hỗ trợ nhập liệu, hạn chế dữ liệu sai.

III.6.2.7 Thiết lập các phương thức cho mỗi lớp : Các phương thức sẽ được bổ sung đầy đủ và chính xác sau khi so khớp với các

sơ đồ khác như sơ đồ họat vụ, sơ đồ tuần tự hoặc sơ đồ cộng tác, sơ đồ hoạt động… Ngược lại, sơ đồ hoạt vụ cũng sẽ được bổ sung sau khi lập các phương thức.

13

Page 41: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Phương thức được thiết lập có thể bao gồm các phương thức lớp hoặc không. Ví dụ : có sơ đồ lớp như dưới đây và ta muốn thêm phương thức cho lớp

« Lớp »

0..* 0..*

0..*

1

hoc o

- ma lop- ten lop- si so- ban

+ Lop- ma lop- ten lop- si so- ban

- ma mon- co thuc hanh

+ Mon- ma mon- co thuc hanh

- so tiet+ Hoc- so tiet

1..* 1..*trang bi

+ Phong- ma TB- ten TB- tri gia

+ Thiet bi- ma TB- ten TB- tri gia

Có các loại phương thức sau (phương thức lớp được ký hiệu là « * »): a. Hiển thị đối tượng đang xét: Ví dụ : hienLop() ;

b. Hiển thị tất cả các đối tượng của lớp đang xét (*): Ví dụ : hienDsLop() ;

c. Hiển thị tất cả các đối tượng của lớp đang xét, có sắp theo nhóm (*):

Ví dụ : hienDsLopTheoSiso(); hienDsLopTheoBan(); hienDsLopTheoMon() ; hienDsLopTheoThietbi() ;

d. Tìm kiếm đối tượng tương ứng khóa đối tượng (hoặc OID) của

chính lớp đang xét (*) : Ví dụ : dsLop (ma_lop : string) : Lop ;

e. Tìm kiếm tất cả các đối tượng hoặc tất cả các khóa đối tượng

(hoặc OID) của chính lớp đang xét (*) : o Không tham sô o Có tham số, dựa trên khóa của Class_1 : chỉ trả về tối đa 1

đối tượng o Có tham số, dựa trên các thuộc tính của Class_1

Lưu ý : Khi tham số tương ứng với khóa của lớp, kết quả trả về chỉ 1 đối tượng. Ngược lại, trả về một mảng nhiều đối tượng, hoặc mảng nhiều khóa đối tượng.

14

Page 42: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Ví dụ : Ta có các phương thức sau : dsLop() : Lop[ ] ; dsLop (ma_lop : string) : Lop ; dsLop (b : char) : Lop ; // tìm theo ban A, B, C, … dsLop(si_so : integer) : Lop[ ] ; dsLop(si_so_min, si_so_max : integer) : Lop[ ] ; dsMaLop() : string[ ] ; dsMaLop (b : char) : string; // tìm theo ban của lớp dsMaLop(si_so : integer) : string[ ] ; dsMaLop(si_so_min, si_so_max : integer) : string[ ] ;

f. Tìm kiếm các đối tượng/ OID của ít nhất một lớp khác C có liên kết với đối tượng đang xét c1 của Class_1:

- Khởi đầu từ tìm kiếm qua 1 liên kết : o Không tham số o Có tham số, dựa trên các thuộc tính của C o Có tham số, dựa trên các thuộc tính của lớp liên kết (nếu

có) Lưu ý : Kết quả trở về của phương thức sẽ là mảng (array) hay chỉ là một đối tượng hoặc một dữ liệu có kiểu dữ liệu sơ cấp, tùy thuộc vào bản số của Class_1 tham gia vào liên kết.

Ví dụ : dsMon() : Mon[] ; dsMon(co_TH : boolean) : Mon[] ; dsMon(so_tiet : integer) : Mon[] ; dsMon(so_tiet_min, so_tiet_max : integer) : Mon[] ; dsMon(co_TH : boolean, so_tiet : integer) : Mon[] ; dsMon(co_TH : boolean, so_tiet_min, so_tiet_max : integer) : Mon[] ; phong(): Phong; dsMaMon() : string[] ; dsMon(co_TH : boolean) : string[] ; dsMaMon(so_tiet : integer) : string[] ; dsMaMon(so_tiet_min, so_tiet_max : integer) : string[] ; dsMaMon(co_TH : boolean, so_tiet : integer) : string[] ; dsMaMon(co_TH : boolean, so_tiet_min, so_tiet_max : integer) : string[] ; maPhong(): string; - Sau đó, có thể mở rộng tìm kiếm các đối tượng có liên kết với đối

tượng đang xét qua n>1 liên kết. Ví dụ : dsThietbi(): Thietbi[]; // danh sách thiết bị trong phòng của lớp học đang xét dsThietbi(tri_gia: longint): Thietbi[]; dsThietbi(tri_gia_min, tri_gia_max: longint): Thietbi[];

g. Thống kê dùng hàm kết tập: Dùng các hàm kết tập (sum, count, max, min, avg) để tính ra kết quả.

15

Page 43: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

- Chỉ tính trên đối tượng đang xét - Chỉ tính trên lớp đang xét (*)

o Dựa trên các thuộc tính của lớp đang xét o Dựa vào các mối liên kết với các lớp khác

- Tính trên lớp kết nối với lớp đang xét (*) - Cũng có dạng không/ có tham số như trên Ví dụ : tsLop() : integer ; // tổng số lớp tsLop (b : char) : integer ; // tìm theo một ban tsLop(si_so : integer) : integer ; tsLop(si_so_min, si_so_max : integer) : integer ; tsLop(mon: Mon) : integer ; tsLop(ma_mon: string) : integer ; tsLop(tb: Thietbi) : integer ; tsLop(ma_thietbi: string) : integer ; tsLop(p: Phong() : integer; tsLop(ma_phong: string) : integer ; tsMon() : integer ; tsMon(co_TH : boolean) : Mon[] ; tsMon(so_tiet : integer) : Mon[] ; tsMon(so_tiet_min, so_tiet_max : integer) : Mon[] ; tsMon(co_TH : boolean, so_tiet : integer) : Mon[] ; tsMon(co_TH : boolean, so_tiet_min, so_tiet_max : integer) : Mon[] ; tsThietbi(): integer ; // tổng số thiết bị có trong phòng học của lớp đang xét tsThietbi(tri_gia: longint): integer ; tsThietbi(tri_gia_min, tri_gia_max: longint): integer ; tbinhSiso(): integer; // trung bình sĩ số tính trên tất cả các lớp tbinhSiso(b: char): integer; // trung bình sí số tính trên tất cả các lớp của một ban tbinhSotietLop(): integer; //trung bình số tiết học tính trên tất cả các môn của lớp đang xét maxSotietLop(): integer; // //số tiết tối đa tính trên tất cả các môn của lớp đang xét minSotietLop(): integer; // //số tiết tối thiểu tính trên tất cả các môn của lớp đang xét tbinhSotiet(): integer; //trung bình số tiết học tính trên tất cả các môn của tất cả các lớp maxSotiet(): integer; // //số tiết tối đa tính trên tất cả các môn của tất cả các lớp minSotiet(): integer; // //số tiết tối thiểu tính trên tất cả các môn của tất cả các lớp h. Hiển thị kết quả thống kê dùng hàm kết tập trên nhóm (*):

16

Page 44: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Dùng các hàm kết tập (sum, count, max, min, avg) để tính ra kết quả. - Chỉ tính trên lớp đang xét

o Dựa trên các thuộc tính của lớp đang xét o Dựa vào các mối liên kết với các lớp khác

- Tính trên lớp kết nối với lớp đang xét - Cũng có dạng không/ có tham số như trên Ví dụ : tsLopTheoSiso(); tsLopTheoBan(); tsLopTheoMon() ; tsLopTheoPhong() ; tsLopTheoThietbi() ; trbinhSisoLopTheoBan(); trbinhSisoLopTheoMon() ; trbinhSisoLopTheoThietbi() ; i. Tìm kiếm đối tượng có một thuộc tính lớp/ thuộc tính liên kết đạt trị

min/ max: Ví dụ : lopDongNhat(): Lop []; // ds các lớp có sĩ số đạt max lopHocMonLauNhat(): Lop []; // ds các lớp có số tiết học một môn đạt max j. Tìm kiếm đối tượng có một kết quả hàm kết tập theo nhóm đạt trị

min/ max: Ví dụ : lopNhieuMonNhat(): Lop[]; // ds các lớp học nhiều môn nhất lopNhieuMonThuchanhNhat(): Lop[]; // ds các lớp học nhiều môn thực hành nhất (co thuc hanh=true) lopNhieuMonLythuyetNhat(): Lop[]; // ds các lớp học nhiều môn thực hành nhất (co thuc hanh=false) lopNhieuMonNhat(so_tiet: integer): Lop[]; // ds các lớp học nhiều môn có số tiết bằng so_tiet nhất lopNhieuThietbi(): Lop[]; // ds các lớp học với nhiều thiết bị nhất

III.6.2.8 Chuyển sơ đồ lớp từ mức quan niệm sang mức luận lý. Ví dụ :

17

Page 45: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

HOA_DON

PK_HOA_DONSO_HD

MA_NVNGAY_LAP_HOA_DONSO_SERI_HDLA_HD_BANTRI_GIA_HD

THU_KHO

PK_THU_KHOMA_NV

HO_NVTEN_NVDC_NVNAM_SINHNGAY_BD

KHO

PK_KHOMA_KHO

MA_NVTEN_KHODC_KHOSO_DT

PHIEU_N_X

PK_PHIEU_N_XSO_PH

MA_KHOMA_NVNGAYLOAI_PH

NV

PK_NVMA_NV

HO_NVTEN_NVDC_NVNAM_SINHNGAY_BD

HANG

PK_HANGMA_HG

TEN_HG

NV_KE_TOAN

PK_NV_KE_TOANMA_NV

HO_NVTEN_NVDC_NVNAM_SINHNGAY_BD

GHI_HOA_DON

PK_GHI_HOA_DONMA_HGSO_HD

SLDG

GHI_PHIEU

PK_GHI_PHIEUMA_HGSO_PH

SLDG

CHO

PK_CHOSO_PHSO_HD

III.6.2.9 Đóng gói : Như ở sơ đồ hoạt vụ.

18

Page 46: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Chương IV: Sơ đồ tương tác (interaction diagram) Chương IV: Sơ đồ tương tác (interaction diagram) ........................................................................1 IV.1 GIỚI THIỆU : .........................................................................................................................2 IV.2 LỢI ÍCH CỦA TƯƠNG TÁC (interaction):...........................................................................2

IV.2.1 Định nghĩa:.......................................................................................................................2 IV.2.1.1 Tương tác (interaction): ............................................................................................2 IV.2.1.2 Sinh tuyến (đường đời: lifeline)................................................................................2 IV.2.1.3 Sơ đồ tương tác: ........................................................................................................2

IV.2.2 Ký hiệu :...........................................................................................................................2 IV.2.2.1 Sơ đồ tương tác: ........................................................................................................2 IV.2.2.2 Sinh tuyến: ................................................................................................................3

IV.2.3 Ứng dụng của sơ đồ tương tác : .......................................................................................3 IV.3 THÔNG BÁO (message): ......................................................................................................4

IV.3.1 Các dạng thông báo :........................................................................................................4 IV.3.2 Ký hiệu :...........................................................................................................................4

IV.3.2.1 Thông báo đồng bộ và thông báo không đồng bộ :...................................................4 IV.3.2.2 Tạo và hủy đối tượng : ..............................................................................................4

IV.3.3 Thông báo và sự kiện : .....................................................................................................5 IV.3.4 Ngữ pháp của thông báo : ................................................................................................6

IV.3.4.1 Thông báo gửi : .........................................................................................................6 IV.3.4.3 Thông báo trả lời:......................................................................................................6

IV.3.5 Ràng buộc trên các sinh tuyến: ........................................................................................6 IV.3.6 Các kiểu phân đoạn của tương tác: ..................................................................................7

IV.3.6.1 Rẽ nhánh : .................................................................................................................7 IV.3.6.2 Vòng lặp :..................................................................................................................8 IV.3.6.3 Xử lý song song: .......................................................................................................9 IV.3.6.4 Các toán tử assert, ignore và consider :....................................................................9

IV.3.7 Phân rã một sinh tuyến:....................................................................................................9

1

Page 47: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

IV.1 GIỚI THIỆU : Sơ đồ hoạt vụ chỉ ra các tác nhân tương tác với các chức năng lớn của một hệ thống. Đó

là một cách nhìn thiên về chức năng và từ bên ngoài hệ thống.

Sơ đồ lớp mô tả nhân của hệ thống với các lớp và cách thức chúng kết hợp lại với nhau. Đó là một cách nhìn tĩnh và thiên về cấu trúc.

Các sơ đồ tương tác, về phần mình, cho phép đặt cầu nối giữa hai cách tiếp cận trên. Chúng cho thấy làm thế nào các thể hiện ở trong lòng hệ thống có thể tương tác với nhau để thực hiện một chức năng nào đó.

Các tương tác khá nhiều và rất đa dạng, cần có một ngôn ngữ phong phú để biểu diễn chúng. UML cung cấp nhiều sơ đồ cho mục đích này : sơ đồ tuần tự (sequence diagram), sơ đồ cộng tác (collaboration diagram, hoặc còn gọi là sơ đồ liên lạc, sơ đồ truyền thông- communication diagram), sơ đồ về thời gian (timing diagram). Các sơ đồ này mang lại phong cách động cho việc mô hình hóa hệ thống.

IV.2 LỢI ÍCH CỦA TƯƠNG TÁC (interaction):

IV.2.1 Định nghĩa:

IV.2.1.1 Tương tác (interaction): Một tương tác định nghĩa hành vi của một hệ có cấu trúc (một hệ thống con, một trường

hợp sử dụng, một lớp, một thành tố, …) bằng cách đặc biệt chú trọng đến việc trao đổi các thông tin giữa các thể hiện (instances) của nó.

IV.2.1.2 Sinh tuyến (đường đời: lifeline) Một sinh tuyến biểu diễn một thành phần duy nhất (có thể tương ứng với một người

ngoài thế giới thực, hoặc một đối tượng trong lớp dữ liệu) tham gia vào một tương tác.

IV.2.1.3 Sơ đồ tương tác: Các sơ đồ tuần tự và sơ đồ liên lạc biểu diễn các tương tác giữa các sinh tuyến. Một sơ đồ

tuần tự chỉ ra các tương tác dưới góc độ thời gian, đặc biệt là các chuỗi thông báo (messages) trao đổi nhau giữa các sinh tuyến, trong khi một sơ đồ liên lạc biểu diễn về mặt không gian của các sinh tuyến.

Còn có dạng thứ ba của sơ đồ tương tác là sơ đồ thời gian nhằm mô hình hóa các hệ thống được khai thác dưới những điều kiện nghiêm ngặt về TG, chẳng hạn các hệ thống thời thực. Tuy nhiên, các sơ đồ tuần tự hoàn toàn có thể thực hiện chức năng này.

IV.2.2 Ký hiệu :

IV.2.2.1 Sơ đồ tương tác: Biểu diễn bằng một hình chữ nhật, góc trái có tên của sơ đồ, đứng sau từ khóa :

- sd : nếu là sơ đồ tuần tự

- com : nếu là sơ đồ liên lạc/ sơ đồ cộng tác

Có thể có :

- danh sách các sinh tuyến đứng tiếp theo với từ khóa lifelines và dấu hai chấm.

- ràng buộc trên ít nhất một thuộc tính nào đó có dùng trong sơ đồ

2

Page 48: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

IV.2.2.2 Sinh tuyến: Một sinh tuyến được biểu diễn bằng một hình chữ nhật hoặc một hình người « treo » một

đường thẳng dọc có chấm. Trong hình chữ nhật hoặc phía dưới hình người chứa một định danh có ngữ pháp như sau :

[<tên sinh tuyến> [<chỉ số>] ] : <tên lớp>

Ví dụ :

sd Rút tiền lifelines :KH, :Máy rút tiền, : Ngân hàng

+ ma: String: readonly ‘0000’<=ma<=’9999’

đưa thẻ

HiệnNhậpmã

NhậpMã (ma)

: Máy rút tiền : KH

NH_OK= Ktra (ma)

Ktra (ma)

: Ngân hàng

IV.2.3 Ứng dụng của sơ đồ tương tác : Các sơ đồ tương tác được sử dụng trong suốt một dự án, từ khi thu thập các nhu cầu cho

đến khi thiết kế. Chúng dùng để :

- mô tả các trường hợp sử dụng

- mô hình hóa việc sử dụng một lớp hoặc một phương thức của lớp

- thêm vào khía cạnh động cho việc mô hình hóa một hệ thống.

Sơ đồ lớp trước tiên mô hình hóa lĩnh vực nào mà hệ thống sẽ được sử dụng trong đó, và lĩnh vực này tương đối độc lập với các CT ứng dụng (application) sẽ đến kết hợp bám chặt trên đó. Việc cài đặt một sơ đồ lớp chỉ là một cơ sở để phát triển trình ứng dụng.

Cái đặc trưng cho một trình ứng dụng, chính là cách thức nó sử dụng sơ đồ lớp ra sao, tức cách thức các thể hiện của lớp tương tác nhau để thực hiện các chức năng của trình ứng dụng đó. Không có khía cạnh động này, một hệ thống chỉ là thuần túy tĩnh và không mang lại chức năng gì.

Ta không nên mô tả tất cả các tương tác chỉ trên một sơ đồ. Cần phải nhắm vào một hệ thống con và nghiên cứu cách thức các phần tử của nó tương tác nhau để mô tả một ứng xử (behavior) đặc thù của hệ thống.

Sơ đồ tuần tự thường dùng để mô tả các tương tác trong một hệ thống con, một trường hợp sử dụng, một lớp, một thành tố, …, tức trong một hệ có cấu trúc. Còn sơ đồ liên lạc dùng trong một ngữ cảnh đặc thù nào đó nhằm sử dụng một chức năng nào đó của hệ thống.

3

Page 49: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Ở đây, ta chủ yếu nghiên cứu về sơ đồ tuần tự.

IV.3 THÔNG BÁO (message):

IV.3.1 Các dạng thông báo : Các thông tin chủ yếu chứa trong các sơ đồ tuần tự là các thông báo. Một thông báo định

nghĩa một liên lạc giữa các sinh tuyến.

Có nhiều dạng thông báo, trong đó phổ biến nhất là dạng:

(1) : Gửi một tín hiệu. Thông báo khởi động một phản ứng nơi đối tượng nhận. một cách không đồng bộ và không cần đợi trả lời.

(2) : Kích hoạt thực hiện một thao tác trong một phương thức. Đây là dạng thông báo được sử dụng nhiều nhất trong lập trình hướng đối tượng. Ví dụ : dt.pt(), trong đó dt là đối tượng nhận thông báo và pt là một phương thức của dt. Trong thực tế, đa số thông báo loại này là đồng bộ. Cũng có thể thực hiện thông báo dạng này một cách không đồng bộ qua các thread.

(3) : Tạo hoặc hủy một thể hiện (đối tượng)

IV.3.2 Ký hiệu :

IV.3.2.1 Thông báo đồng bộ và thông báo không đồng bộ : Trong UML, (1) và (2) được biểu diễn như nhau, và hướng về đối tượng nhận. Tuy

nhiên, UML phân biệt :

- Thông báo đồng bộ (synchrone) : Ở cuối mũi tên, ở đối tượng nhận, có thể có trả lời phản hồi bằng mũi tên đứt đọan

- Thông báo không đồng bộ (asynchrone) :

Thông báo đồng bộ (synchrone)

Thông báo không đồng bộ (asynchrone)

Cách 1

Cách 2

IV.3.2.2 Tạo và hủy đối tượng : - Tạo đối tượng : đốitgMới: Lớp

- Hủy đối tượng :

4

Page 50: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

IV.3.3 Thông báo và sự kiện : UML phân biệt việc gửi với nhận một thông báo, cũng như phân biệt việc bắt đầu với

việc kết thúc thực hiện một phản ứng. Các sự kiện (event) được dùng để đánh dấu từng giai đoạn.

Ví dụ :

sd Rút tiền

đưa thẻ

: Máy rút tiền

sự kiện nhận

sự kiện bắt đầu thực hiện

sự kiện chấm dứt thực hiện

sự kiện gửi

KH

Hoặc :

sd Rút tiền

đưa thẻ

sự kiện nhận

sự kiện bắt đầu thực hiện

sự kiện chấm dứt thực hiện

KH

sự kiện gửi

Kiểm tra thẻ

: Máy rút tiền

Dựa vào các sự kiện gửi và nhận, UML định nghĩa 3 kiểu thông báo :

- Thông báo đầy đủ : các sự kiện gửi và nhận đều được biết

- Thông báo bị lạc : sự kiện gửi có được biết, nhưng sự kiện nhận thì không.

Ký hiệu :

5

Page 51: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

- Thông báo tìm được : ngược lại, sự kiện nhận có được biết, nhưng sự kiện gửi thì không.

Ký hiệu :

IV.3.4 Ngữ pháp của thông báo :

IV.3.4.1 Thông báo gửi : Thông báo gửi có ngữ pháp dưới đây :

<tên tín hiệu hoặc tên phương thức> [ ( <danh sách tham số> ) ]

Trong danh sách, các tham số cách nhau bởi dấu phẩy, và mỗi tham số có ngữ pháp như sau :

[<tên tham số> <dấu> ] <trị của tham số>]

với :

<dấu> là dấu ‘=’ nếu đó là tham số chỉ đọc,

dấu ‘ :’ nếu đó là tham số có thể sửa được (đọc/ ghi)

Ví dụ :

nhậpMã(« 1234 »)

nhậpMã(m)

ghiNhận(maSV, maSach)

sửaSolg(sl : 10)

IV.3.4.3 Thông báo trả lời: Thông báo trả lời có ngữ pháp dưới đây :

[<thuộc tính> = ] <thông báo gửi> [ : <trị trả về>]

Ví dụ :

sốlgTồn= ktraHgTồn(« A001 »)

maOK=ktraMa(ma) :true

IV.3.5 Ràng buộc trên các sinh tuyến: Các sinh tuyến của một tương tác có thể mang đủ loại ràng buộc.

Ký hiệu:

- Một ràng buộc được biểu diễn trên một sinh tuyến bằng một văn bản giữa dấu móc ({ }).

- Một ràng buộc cũng có thể được chứa trong một ghi chú gắn với thể hiện của sự kiện liên quan.

6

Page 52: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

KH

ktraTìền(sotien) assert

{ Máy.tiềnMặt>sotien }

rút (sotien)

sd Rút tiền

ycầu_rút (sotien)

: Máy

(Phép assert khẳng định sự cần thiết của việc gửi thông báo tiếp theo.

Như vậy, để rút được tiền ở một máy rút tiền, bắt buộc phải kiểm tra số tiền mặt hiện có trong máy ; sau khi kiểm tra, thuộc tính tiềnMặt của Máy phải lớn hơn sotien.)

Ghi chú :

Một ràng buộc được đánh giá khi khai thác tương tác. Nếu ràng buộc không được thỏa mãn, các thể hiện của sự kiện đi theo sau ràng buộc nay sẽ được xem là không hợp lệ, ngược lại với khi ràng buộc được thỏa mãn. Như vậy, một sơ đồ tương tác có thể mô tả các thông báo không hợp lệ, nghĩa là không bao giờ được gửi đi.

IV.3.6 Các kiểu phân đoạn của tương tác:

IV.3.6.1 Rẽ nhánh : Có 2 từ khóa là :

- « alt » (alternative)và “else’: rẽ nhánh 1 nếu điều kiện đúng và rẽ nhánh 2 nếu ngược lại.

- « opt » (optional) : thực hiện hành vi tiếp theo nếu điều kiện đúng.

7

Page 53: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Ví dụ : (giả sử thuộc tính nn chỉ có 2 trị là « Anh » và « Việt »)

sd Rút tiền

KH : Máy

hiệnMànHìnhViệt()

hiệnMànHìnhAnh()

[ nn=’Việt’ ]

[ else ]

alt nn

chọnNgônNgữ

rút (sotien)

IV.3.6.2 Vòng lặp : Sử dụng 2 từ khóa :

- « loop » : có 3 trường hợp :

o Loop : lặp mãi đến khi có lệnh « break »

o Loop <điều kiện> : còn lặp lại khi điều kiện còn thỏa

o Loop [<chỉ số min>, <chỉ số max>] : thường có dạng loop [1, n], lặp lại các bước lặp theo chỉ số nhận trị từ <chỉ số min> đến <chỉ số max>.

Lưu ý : các biến trong điều kiện và các chỉ số phải được gán trị trước khi đặc tả loop.

- « break » : để thoát ra khỏi vòng lặp.

sd Xem tài khoản

n

loop[1,n] trigia()

tg=trigia()tg=trigia()

NV NH tk[i]: TK

KH

8

Page 54: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

IV.3.6.3 Xử lý song song:

Dùng từ khóa « par » (parallel).

IV.3.6.4 Các toán tử assert, ignore và consider : Toán tử assert có tác dụng và ngữ pháp như đã trình bày ở phần IV.3.5.

Các phép ignore và consider cho phép tập trung chú ý để mô hình hóa một số thông báo có thể được gửi trong một tương tác. ignore định nghĩa các thông báo có thể bỏ qua, còn consider định nghĩa các thông báo cần phải chú ý đến.

Ngữ pháp :

Các toán tử assert, ignore và consider được đặt sau tên của sơ đồ tuần tự, với ngữ pháp như sau :

ignore { danh sách thông báo}

consider { danh sách thông báo}

IV.3.7 Phân rã một sinh tuyến: Đôi khi, một tương tác quá phức tạp để có thể đưoc mô tả trong một sơ đồ thôi, nên ta có

thể cắt một sinh tuyến ra trên nhiều sơ đồ.

Một phần của sinh tuyến được phân rã ra sẽ được thay thế bằng một hình chữ nhật với từ khóa ref, và được trình bày ở sơ đồ khác.

ktraThẻ(ma) ref

cấpTiền(ma) ref [ma ok]

: Máy rút tiền : KH

ma

đưaThẻ: Ngân hàng

sd Rút tiền lifelines :KH, :Máy rút tiền, : Ngân hàng

+ ma: String: readonly ‘0000’<=ma<=’9999’

9

Page 55: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Chương V: Các giai đoạn phân tích thiết kế một HTTT

Sơ đồ tổng quát của việc thiết lập một HTTT:

Việc thiết lập một HTTT bao gồm các công đoạn sau:

Phân tích

Sử dụng Cài đặt

Thiết kế

1. Phân tich:

Phân tích hệ thống thông tin hiện hành và đề xuất HTTT tương lai. 2. Thiết kế:

Thiết kế một hệ thống tin học thỏa mãn các yêu cầu đã được đặt ra ở công đoạn trước. 3. Cài đặt:

Chuyển các phần tử đã được mô tả ở công đoạn 2 sang ngôn ngữ lập trình và hệ quan trị cơ sở dữ liệu cụ thể. 4. Sử dụng:

HTTT mới được vận hành từ hệ thống tin học đã cài đặt.

Page 56: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Cụ thể hơn, ta có hình vẽ sau:

Kiểm thử

Phân tích Thiết kế

Cài đặt Sử dụng

Triển khai

Lập kế họach

Ta có thể chia việc phân tích thiết kế thành 7 giai đoạn:

Page 57: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

1. Xác định lĩnh vực cần thiết

2. Thu thập thông tin

3. Mô hình hóa các luồng công việc

4. Đánh giá hệ thống hiện tại

5. Tái cấu hình căn bản cho HTTT

6. Mô hình hóa HTTT tương lai

7. Biên soạn điều kiện sách

Page 58: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

Stt Tên

giai đoạn

Mục đích Phương tiện thực hiện Các mô hình UML

Mức Sử dụng

1 Xácđịnh lĩnh vực cần thiết

Tạo ranh giới cho HTTT, thu thập sơ bộ thông tin cho dự án

- tiếp xúc với cấp lãnh đạo sơ đồ lớp quan niệm - gói- tác nhân

- tiếp xúc với người quản trị TT sơ đồ đối tượng

quan niệm - trình ứng dụng

2 Thuthập thông tin

- Hiểu được các khía cạnh khác nhau của HT hiện hành - Ghi nhận các khái niệm tổng thể về thông tin trong lĩnh vực đã xác định

- qua các tác nhân đã đề cập trong sơ đồ lớp ở g/đ 1 - tất cả các thành viên trong HT thực - mô hình tĩnh đã có trong hồ sơ phân tích của HT hiện hành - tiếp xúc với người quản trị TT - các giao diện người- máy của HT hiện hành - các tài liệu chức năng được sử dụng trong lĩnh vực đang xét - kỉểm tra lại mô hình vật lý suy từ mô hình tĩnh đã có, nhờ vào cấu trúc các tập tin hoặc cơ sở dữ liệu hiên đang được sử dụng

sơ đồ lớp - quan niệm - luận lý

chỉ dùng các tên lớp, liên kết và các thuộc tinh cần thiết trong lớp liên kết

3 Mô - Hiểu các - Ghi nhận những cảm nhận của người - sơ đồ hoạt vụ - quan niệm

Page 59: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

hình hóa các luồng công việc

chức năng hiện hành - Xác định rõ vai trò các tác nhân khác nhau trong hệ thống - Xác định cách thữc các tác nhân phối hợp với nhau để đạt mục tiêu của lĩnh vực đang xét

sử dụng (qua từng tác nhân) - Phỏng vấn họ qua các kiểu sự kiện trong lĩnh vực

- sơ đồ tuần tự - luận lý

4 Đánh giá hệ thống hiện tại

Đánh giá việc quản lý thông tin và sự vận hành của các quá trình chức năng

5 Táicấu hình căn bản cho HTTT

Sử dụng đánh giá trên để đưa ra các nguyên tắc mới, khái niệm mới

Page 60: PHÂN TÍCH HỆ THỐNG HƯỚNG ĐỐI TƯỢNG · I.1 Phân tích hệthống hướng đối tượng (3) Giúp hiểu tốt hơn thực tếvà so sánh tốt hơn các giải

6 Môhình hóa HTTT tương lai

Mô hình hóa các khía cạnh khác nhau của HTTT tương lai, và phác thảo dần điều kiện sách

- sơ đồ lớp - luận lý - sơ đồ hoạt vụ- sơ đồ tuần tự …

7 Biênsoạn điều kiện sách

Tạo sưu liệu cho nhà đầu tư lẫn nhà thực hiện

Sự tương đương với cách phân loại khác:

Stt Tên giai đoạn Cách phân loại khác 1 Xác định lĩnh vực cần thiết Lập sơ đồ chỉ đạo 2 Thu thập thông tin Thu thập và đặc tả yêu cầu 3 Mô hình hóa các luồng công việc 4 Đánh giá hệ thống hiện tại Nghiên cứu khả thi 5 Tái cấu hình căn bản cho HTTT ( + Thiết kế tổng thể) 6 Mô hình hóa HTTT tương lai Thiết kế chi tiết 7 Biên soạn điều kiện sách Lập sưu liệu