Thiết kế hướng ñối tượng - Sử dụng UML (7)

Nguyễn Thanh Bình Khoa Công nghệ Thông tin Trường ðại học Bách khoa ðại học ðà Nẵng

Nội dung

2

1

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

(cid:1) Khái niệm cơ bản hướng ñối tượng (cid:1) Biểu ñồ ca sử dụng (cid:1) Thiết kế cấu trúc tĩnh (cid:1) Thiết kế cấu trúc ñộng (cid:1) Sinh mã

Hướng chức năng

(cid:1) Dựa vào các chức năng của hệ thống (cid:2) Hệ thống là tập hợp các chức năng

(cid:1) Chia nhỏ các chức năng và làm mịn dần

(cid:2) Hệ thống gồm các hệ thống con (cid:2) Làm chủ ñộ phức tạp

(cid:1) Các chức năng trao ñổi với nhau bằng

truyền tham số hoặc dữ liệu (chẳng hạn biến toàn cục) dùng chung

3

Hướng chức năng

(cid:1) Phân cấp chức năng

Hệ thống

Chức năng 1 Chức năng 2

4

2

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Chức năng 1.1 Chức năng 1.2 Chức năng 2.1 Chức năng 2.2

Hướng chức năng

(cid:1) Ưu ñiểm

(cid:2) Phân tích ñược các chức năng của hệ thống (cid:2) ðưa lại kết quả mong ñợi

(cid:1) Nhược ñiểm

(cid:2) Chức năng (cid:3) cấu trúc (cid:2) Thay ñổi về chức năng (cid:3)khó khăn thay ñổi cấu trúc (cid:2) Tính mở của hệ thống thấp (cid:2) Khó tái sử dụng (cid:2) Chi phí sửa chữa lỗi lớn

5

Hướng ñối tượng

(cid:1) Lấy ñối tượng làm trung tâm (cid:1) Hệ thống = tập hợp các ñối tượng + quan

hệ giữa các ñối tượng

(cid:1) Các ñối tượng trao ñổi bằng thông ñiệp

(message) (cid:2) Không sử dụng biến toàn cục

(cid:1) ðóng gói (cid:1) Thừa kế

6

3

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Hướng ñối tượng

(cid:1) Phân biệt

(cid:2) Lập trình cấu trúc

• Thuật toán + cấu trúc dữ liệu = chương

trình

(cid:2) Lập trình HðT

• S ñối tượng = chương trình • ñối tượng = thuật toán + cấu trúc dữ liệu

7

Hướng ñối tượng

(cid:1) Ưu ñiểm chính

(cid:2) Gần gũi với thế giới thực (cid:2) Tái sử dụng dễ dàng (cid:2) ðóng gói, che dấu thông tin làm cho

hệ thống tin cậy hơn

(cid:2) Thừa kế làm giảm chi phí, hệ thống có

tính mở cao hơn

(cid:2) Xây dựng hệ thống lớn và phức tạp

8

4

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

ðối tượng

(cid:1) ðối tượng (object) là khái niệm cho

phép mô tả các sự vật/thực thể trong thế giới thực

(cid:1) Các ñối tượng duy trì các quan hệ

giữa chúng

(cid:1) Nguyễn Văn A là một ñối tượng

9

ðối tượng

(cid:1) Các tính chất của ñối tượng

(cid:2) ðối tượng = trạng thái + hành vi +

ñịnh danh • Trạng thái là các ñặc tính của ñối tượng

tại một thời ñiểm

• Hành vi thể hiện các chức năng của ñối

tượng

• ðịnh danh thể hiện sự tồn tại duy nhất

của ñối tượng

10

5

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

ðối tượng : trạng thái

(cid:1) Trạng thái = tập hợp các thuộc tính (cid:2) Mỗi thuộc tính mô tả một ñặc tính (cid:2) Tại một thời ñiểm cụ thể, các thuộc tính mang các giá trị trong miền xác ñịnh (cid:2) Ví dụ

• Một chiếc xe máy: màu xanh, 110 cm3,

dream, 12000km, ñứng yên, …

11

ðối tượng : hành vi

(cid:1) Hành vi = tập hợp các phương thức (cid:2) Phương thức: là một thao tác hoặc ñược thực hiện bởi chính nó, hoặc thực hiện khi có yêu cầu từ môi trường (thông ñiệp từ ñối tượng khác)

(cid:2) Hành vi phụ thuộc vào trạng thái (cid:2) Ví dụ:

• một xe máy có các hành vi: khởi ñộng,

chạy, …

12

6

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Giao tiếp giữa các ñối tượng

(cid:1) Các ñối tượng giao tiếp với nhau

(cid:2) Gửi thông ñiệp (message) cho nhau

(cid:2) Các loại thông ñiệp

Thông ñiệp ðối tượng A ðối tượng B

13

• hàm dựng (constructor) • hàm hủy (destructor) • hàm chọn lựa (get) • hàm sửa ñổi (set) • các hàm chức năng khác

ðối tượng

(cid:1) Giữa các ñối tượng có mối liên kết

(link) với nhau

(cid:1) Ví dụ

14

7

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Học Nguyễn Văn A ðại học ðà Nẵng

Lớp

(cid:1) Lớp là khái niệm dùng ñể mô tả một tập hợp các ñối tượng có cùng một cấu trúc, cùng hành vi và có cùng những mối quan hệ với các ñối tượng khác

(cid:1) Lớp = các thuộc tính + các phương

thức

15

Lớp

(cid:1) Lớp là một bước trừu tượng hóa

(cid:2) Tìm kiếm các ñiểm giống nhau, bỏ qua các

ñiểm khác nhau của ñối tượng

Person

Name Age

(cid:2) Trừu tượng hóa làm giảm ñộ phức tạp

16

8

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

changeAge

Lớp

(cid:1) Quan hệ giữa các lớp: kết hợp (cid:1) Một kết hợp là một tập hợp các mối

liên kết giữa các ñối tượng

Sinh viên

ðại học

17

học

Lớp & ðối tượng

(cid:1) ðối tượng là thể hiện (instance) của lớp (cid:1) Giá trị là thể hiện của thuộc tính (cid:1) Liên kết là thể hiện của kết hợp (cid:1) Lớp (cid:1) Thuộc tính (cid:1) Kết hợp

ðối tượng Giá trị Liên kết

18

9

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Các tính chất của HðT

(cid:1) Tính ñóng gói (encapsulation)

(cid:2) dữ liệu + xữ lý dữ liệu = ñối tượng (cid:2) thuộc tính + phương thức = lớp

(cid:1) Ưu ñiểm

(cid:2) Hạn chế ảnh hưởng khi có sự thay ñổi cập

nhật

(cid:2) Ngăn cản sự truy cập thông tin từ bên ngoài (cid:2) Che dấu thông tin

19

Các tính chất của HðT

(cid:1) Tính thừa kế (inheritance)

(cid:2) Một lớp ñược xây dựng từ một hoặc nhiều

lớp khác bằng việc chia sẽ các thuộc tính và phương thức

(cid:2) Lớp con thừa kế các thuộc tính và phương

thức từ lớp cha

(cid:2) Tổng quát hóa/chuyên biệt hóa

20

10

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

• Tổng quát hóa (generalization): ñặt các tính chất chung của các lớp khác nhau vào một lớp cha • Chuyên biệt hóa (specialization): tạo ra một lớp con có các tính chất riêng từ lớp cha

Các tính chất của HðT

(cid:1) ðơn thừa kế: một lớp con chỉ thừa kế từ một lớp cha duy

XeÔtô

T ổ n g q u á t h ó a

C h u y ê n b i ệ t h ó a

XeTải XeKhách (cid:1) Lớp trừu tượng hay lớp chung: XeÔtô (cid:1) Lớp cụ thể hay lớp chuyên biệt: XeKhách (cid:1) Lớp chuyên biệt có thể thay thế lớp chung trong tất cả

nhất

21

các ứng dụng. Ví dụ: Ôtô tải là một ôtô.

Các tính chất của HðT

(cid:1) ða thừa kế: một lớp con thừa kế từ

nhiều lớp cha khác nhau

Person

Personnel Student

Reseacher Teacher

22

11

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Phd candidate

Các tính chất của HðT

(cid:1) ða thừa kế

(cid:2) ðụng ñộ tên các thuộc tính

X a Y a

(cid:2) ða thừa kế không ñược chấp nhận bởi một

số ngôn ngữ: Java

23

Z a của X a của Y

Các tính chất của HðT

(cid:1) Ưu ñiểm của thừa kế

(cid:2) Phân loại các lớp: các lớp ñược phân loại, sắp xếp theo một thứ bậc ñể dễ quản lí

(cid:2) Xây dựng các lớp: các lớp con ñược

xây dựng từ các lớp cha

(cid:2) Tiết kiệm thời gian xây dựng, tránh

lặp lại thông tin

24

12

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Các tính chất của HðT

(cid:1) Tính ña hình (polymorphism): của phương thức, tức là khả năng các phương thức khác nhau ñược thực hiện ñể trả lời cùng một yêu cầu

(cid:1) Mỗi lớp con thừa kế ñặc tả các phương thức từ lớp cha, và các phương thức này có thể ñược sữa ñổi trong lớp con ñể thực hiện các chức năng riêng trong lớp ñó

(cid:1) Một phương thức (cùng một tên phương thức) có nhiều dạng (ñịnh nghĩa) khác nhau trong các lớp khác nhau

25

Các tính chất của HðT

(cid:1) Ví dụ tính ña hình

ðaGiác

dienTich()

HìnhVuông

HìnhTamGiác

dienTich()

dienTich()

26

13

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Nội dung

27

(cid:1) Khái niệm cơ bản hướng ñối tượng (cid:1) Biểu ñồ ca sử dụng (cid:1) Thiết kế cấu trúc tĩnh (cid:1) Thiết kế cấu trúc ñộng (cid:1) Sinh mã

Ca sử dụng (Use case)

(cid:1) Bước ñầu tiên của phân tích yêu cầu là xác ñịnh các ca sử dụng của hệ thống

(cid:1) Một ca sử dụng là một tương tác

giữa hệ thống và môi trường

(cid:1) Tập hợp các ca sử dụng là mô tả toàn

bộ hệ thống cần xây dựng

28

14

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Ca sử dụng

(cid:1) Ví dụ: phát triển một phần mềm thảo

văn bản

(cid:1) Các ca sử dụng có thể: (cid:2) Nhập văn bản mới (cid:2) Sửa văn bản ñã tồn tại (cid:2) Tạo mục lục (cid:2) Chép ñoạn văn bản (cid:2) …

29

Ca sử dụng

(cid:1) Một ca sử dụng tương ứng với một chức năng của hệ thống dưới góc nhìn của người sử dụng

(cid:1) Một ca sử dụng có thể lớn hoặc nhỏ (cid:1) Một ca sử dụng chỉ ra làm thế nào một mục tiêu của người sử dụng ñược thỏa mãn bởi hệ thống

30

15

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Ca sử dụng

(cid:1) Cần phân biệt các mục tiêu của người sử dụng và

các tương tác của họ với hệ thống (cid:2) Mục tiêu: cái mà người sử dụng mong ñợi (cid:2) Tương tác: kỹ thuật cho phép ñáp ứng mục tiêu

(cid:1) Ví dụ

(cid:2) Mục tiêu: có ñược một văn bản trình bày ñẹp (cid:2) Tương tác: chọn ñịnh dạng trang, chọn font chữ, ñịnh

(cid:1) Thực tế, chúng ta xác ñịnh các mục tiêu trước, sau ñó chọn tập hợp các tương tác ñáp ứng các mục tiêu ñó

31

nghĩa các kiểu tiêu ñề (heading), …

Ca sử dụng

(cid:1) Ví dụ: cần xây dựng một hệ thống ATM cho phép rút

tiền

(cid:1) Có thể có vài tương tác chung trong một kịch bản sau:

(cid:2) ðưa thẻ vào (cid:2) Nhập mã PIN (cid:2) Chọn số tiền rút (cid:2) Khẳng ñịnh số tiền rút (cid:2) Lấy thẻ ra (cid:2) Lấy tiền (cid:2) Lấy phiếu rút tiền

(cid:1) Các tương tác trên có là các ca sử dụng không ?

32

16

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Ca sử dụng

(cid:1) Câu trả lời: không. (cid:1) Tại sao ? (cid:1) Vì chẳng hạn “Nhập mã PIN” không ñáp ứng một mục

tiêu nào của người sử dụng.

(cid:1) Mục tiêu của người sử dụng là “Rút tiền”, vậy ñó nên

là một ca sử dụng.

33

Tác nhân (Actor)

(cid:1) Tác nhân ñóng vai trò một người sử dụng hoặc một

thực thể bên ngoài tương tác với hệ thống

(cid:1) Ví dụ: Cần phát triển hệ thống tính tiền ở siêu thị

(cid:2) Các tác nhân có thể là: Khách hàng, Người bán hàng,

(cid:1) Cần phân biệt: tác nhân (actor) và người sử dụng

(user) (cid:2) Nhiều người sử dụng có thể tương ứng một tác nhân: nhiều người bán hàng khác nhau ñóng cùng vai trò ñối với hệ thống

(cid:2) Một người sử dụng có thể tương ứng với nhiều tác nhân khác nhau: cùng một người có thể ñồng thời ñóng hai vai trò là người bán hàng và người quản lý

34

17

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Người quản lý, Kho hàng

Tác nhân

(cid:1) Tác nhân không nhất thiết luôn luôn là

con người

(cid:1) Tác nhân có thể là môi trường, hệ

thống khác, thực thể bên ngoài tương tác với hệ thống

(cid:1) Ví dụ

(cid:2) Kho hàng là có thể một cơ sở dữ liệu

35

ðặc tả ca sử dụng

(cid:1) ðặc tả ñiển hình của một ca sử dụng:

(cid:2) Ca sử dụng: tên ca sử dụng thường bắt ñầu bởi một

(cid:2) Các tác nhân: danh sách các tác nhân liên quan (cid:2) Mô tả: tóm tắt các xử lý cần thực hiện

(cid:1) Ví dụ

(cid:2) Ca sử dụng: Mua hàng (cid:2) Các tác nhân: Khách hàng, Người bán hàng (cid:2) Mô tả: Một khách hàng sau khi ñã chọn các mặt hàng,

mang giỏ hàng ñến quầy thu tiền. Người bán hàng ghi nhận các mặt hàng, thông báo tổng số tiền, thu tiền và trả tiền còn lại cho khách hàng. Khách hàng mang hàng ñi.

36

18

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

ñộng từ

ðặc tả ca sử dụng

(cid:1) ðặc tả ca sử dụng có thể thêm:

(cid:2) Tham chiếu (reference) ñến mục liên quan trong ñặc tả yêu cầu (cid:2) ðiều kiện trước và ñiều kiện sau khi thực hiện ca sử dụng

(cid:1) Ví dụ

(cid:2) Ca sử dụng: Mua hàng (cid:2) Các tác nhân: Khách hàng, Người bán hàng (cid:2) Tham chiếu: R1.2, R2.3 (cid:2) ðiều kiện trước: Người bán hàng ñã ñăng nhập thành công. (cid:2) ðiều kiện sau: Các mặt hàng bán ñã ñược ghi nhận và ñã ghi

nhận thanh toán tiền.

(cid:2) Mô tả: Một khách hàng sau khi ñã chọn các mặt hàng, mang giỏ hàng ñến quầy thu tiền. Người bán hàng ghi nhận các mặt hàng, thông báo tổng số tiền, thu tiền và trả tiền còn lại cho khách hàng. Khách hàng mang hàng ñi.

37

ðặc tả ca sử dụng

(cid:1) Ngoài ra, ñối với mỗi ca sử dụng ta có thể xây dựng một kịch bản (scenario) hành ñộng mô tả các sự kiện xảy ra

(cid:1) Kịch bản: gồm các sự kiện chính và các sự kiện

ngoại lệ

(cid:1) Các sự kiện chia làm hai luồng

(cid:2) Luồng tương ứng với các tác nhân (cid:2) Luồng tương ứng với hệ thống

38

19

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

ðặc tả ca sử dụng

(cid:1) Các sự kiện chính

Hành ñộng của tác nhân Hành ñộng của hệ thống

1. Một khách hàng ñưa hàng ñã chọn mua ñến quầy tính tiền.

3. Xác ñịnh mặt hàng, hiển thị các thông tin và giá mặt hàng. 2. Người bán hàng ghi nhận từng mặt hàng.

Số này ñược hiển thị.

Nếu một mặt hàng có số lượng nhiều hơn một thì người bán hàng có thể nhập vào một số. 39

ðặc tả ca sử dụng

(cid:1) Các sự kiện chính (tiếp)

Hành ñộng của tác nhân Hành ñộng của hệ thống

5. Tính và hiển thị tổng số tiền.

4. Sau khi ñã ghi nhận tất cả các mặt hàng, người bán hàng báo hiệu kết thúc việc ghi nhận hàng.

6. Người bán hàng thông báo tổng số tiền phải trả cho khách hàng.

20

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

7. Khách hàng trả tiền cho người bán hàng. 40

ðặc tả ca sử dụng

(cid:1) Các sự kiện chính (tiếp)

Hành ñộng của hệ thống

Hành ñộng của tác nhân 8. Người bán hàng nhập số tiền khách hàng trả. 9. Hiển thị tiền dư và in phiếu bán hàng

11. Ghi nhận phiên bán hàng.

10. Người bán hàng xác nhận sự trả tiền, lấy tiền dư trả cho khách hàng và ñưa cho khách hàng phiếu bán hàng.

12. Khách hàng rời quầy thu tiền với túi hàng 41

ðặc tả ca sử dụng

(cid:1) Các sự kiện phụ

Hành ñộng của tác nhân Hành ñộng của hệ thống

3. Sự xác nhận mặt hàng không ñúng. Hiển thị lỗi.

7. Khách hàng không có ñủ tiền. Người bán hàng hủy bỏ việc bán.

Lưu ý: ñịnh dạng ñặc tả các ca sử dụng không cần thiết phải chặt chẽ.

42

21

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Ca sử dụng ở giai ñoạn Elaboration

(cid:1) Xác ñịnh càng nhiều ca sử dụng một cách có thể (cid:1) Không ñi vào quá chi tiết, nhằm giảm ñộ phức tạp (cid:1) Một mô tả ngắn gọn về mỗi ca sử dụng là ñủ, có thể bỏ qua phần kịch bản, tham chiếu ñến ñặc tả yêu cầu, ñiều kiện trước và ñiều kiện sau.

(cid:1) Bảo ñảm rằng các ca sử dụng bao quát hết các yêu

cầu của hệ thống

43

Biểu ñồ ca sử dụng

(cid:1) Biểu ñồ ca sử dụng mô tả quan hệ giữa các tác nhân và các ca sử dụng của một hệ thống. (cid:1) Kí hiệu

Use case

Tác nhân

Kết hợp chỉ sự tham gia của tác nhân vào ca sử dụng

Giới hạn của hệ thống

44

22

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Biểu ñồ ca sử dụng

(cid:1) Ví dụ

Ghi nhận

Người bán hàng

Mua hàng

Khách hàng

Người quản lý

Trả hàng

45

Khởi ñộng

Biểu ñồ ca sử dụng

(cid:1) Các tác nhân có thể có quan hệ thừa

kế (cid:1) Ví dụ

Khách hàng

Cá nhân

Công ty

46

23

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Quan hệ mở rộng

(cid:1) Có thể xảy ra trường hợp: một ca sử dụng tương tự với một ca sử dụng khác, tuy nhiên nó gồm thêm một số hành ñộng

(cid:1) Ví dụ

(cid:2) Ca sử dụng: Mua hàng bằng thẻ tín dụng (cid:2) Các tác nhân: Khách hàng, Người bán hàng (cid:2) Mô tả: Một khách hàng sau khi ñã chọn các mặt

47

hàng, mang giỏ hàng ñến quầy thu tiền. Người bán hàng ghi nhận các mặt hàng, thông báo tổng số tiền. Khách hàng ñưa thẻ vào máy và nhập mã PIN. Khách hàng nhận phiếu bán hàng và mang hàng ñi.

Quan hệ mở rộng

(cid:1) Ca sử dụng này là một biến thể của ca sử dụng “mua hàng”, tuy nhiên thêm vào các hành ñộng liên quan ñến trả tiền bằng thẻ (cid:1) Ca sử dụng “mua hàng bằng thẻ tín dụng” là một sự mở rộng của ca sử dụng “mua hàng”

48

24

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Quan hệ mở rộng

(cid:1) Kí hiệu

Quan hệ mở rộng

(cid:1) Nếu một ca sử dụng kết hợp với một tác nhân, thì tất cả các ca sử dụng mở rộng ñều kết hợp với tác nhân ñó

49

<< extends >> Mua hàng Mua hàng bằng thẻ

Quan hệ sử dụng

(cid:1) Trường hợp nhiều ca sử dụng chia sẽ cùng một dãy các hành ñộng. Nếu phần chung là quan trọng và hướng tới một mục tiêu rõ ràng, như thế ta có thể xây dựng một ca sử dụng riêng

(cid:1) Ví dụ: chúng ta muốn chấp nhận mua hàng trả tiền

một lần và mua hàng trả góp

(cid:1) Hai ca sử dụng “mua hàng trả tiền một lần” và “mua

hàng trả góp” thực hiện một dãy các hành ñộng mà có thể ñược mô tả bởi ca sử dụng “ghi nhận các mặt hàng”

50

25

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Quan hệ sử dụng

(cid:1) ðặc tả của ca sử dụng “ghi nhận các mặt

hàng” (cid:2) Ca sử dụng: ghi nhận các mặt hàng (cid:2) Các tác nhân: người bán hàng, khách hàng (cid:2) Mô tả: Khách hàng mang các mặt hàng ñến quầy tính tiền. Người bán hàng ghi nhận các mặt hàng và thông báo tổng số tiền phải trả.

51

Quan hệ sử dụng

(cid:1) Kí hiệu

<< use >> Mua hàng trả một lần

Ghi nhận các mặt hàng << use >>

Quan hệ sử dụng

Mua hàng trả góp

52

26

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Ngược với quan hệ mở rộng, các ca sử dụng trong quan hệ sử dụng không nhất thiết kết hợp với cùng tác nhân.

Cách xác ñịnh các ca sử dụng

(cid:1) Phương pháp phỏng vấn

(cid:2) Khó khăn, vì hai người khác nhau ñược

phỏng vấn có thể ñưa ra ý kiến khác nhau

(cid:1) Phương pháp hội thảo (workshop)

(cid:2) Tập hợp tất cả những ai liên quan ñến hệ

thống ñể thảo luận: các nhà tin học và khách hàng (người sử dụng)

(cid:2) Mỗi người ñều ñưa ra ý kiến

53

Cách xác ñịnh các ca sử dụng

(cid:1) Cách tiến hành hội thảo

(cid:2) Liệt kê tất cả các tác nhân có thể (cid:2) Liệt kê tất cả các ca sử dụng có thể (cid:2) Phân tích, biện chứng mỗi ca sử dụng bằng cách viết ra một mô tả ñơn giản

(cid:2) Mô hình hóa các ca sử dụng và tác

nhân

54

27

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Cách xác ñịnh các ca sử dụng

(cid:1) Khuyến khích

(cid:2) Không nên cố gắng tìm mọi ca sử

dụng, • Trong quá trình phát triển các ca sử dụng

sẽ lộ diện dần

(cid:2) Nếu không thể biện chứng cho một ca

sử dụng • Có thể ñó không phải là ca sử dụng

55

Sắp xếp các ca sử dụng

(cid:1) Khi tất cả các ca sử dụng ñã ñược xác ñịnh (cid:1) Tiến trình phát triển gồm nhiều bước lặp (cid:1) Mỗi bước lặp thực hiện thiết kế, mã hóa và

kiểm thử chỉ một vài ca sử dụng

(cid:1) Làm sao chia các ca sử dụng vào các bước

lặp?

56

28

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Sắp xếp các ca sử dụng

… Lặp 2 Lặp 3 Lặp 1

D B A

C

57

Các ca sử dụng

Sắp xếp các ca sử dụng

(cid:1) Các ca sử dụng nên ñược thực hiện trước (cid:2) Các ca sử dụng chứa các rủi ro/nguy cơ (cid:2) Các ca sử dụng kiến trúc chính (cid:2) Các ca sử dụng ñòi hỏi nghiên cứu mới,

công nghệ mới

(cid:2) Các ca sử dụng mà khách hàng quan tâm

hơn

58

29

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Bài tập 1

(cid:1) Máy rút tiền ATM có các chức năng chính như sau:

(cid:2) Cấp phát tiền cho những ai có thẻ ngân hàng (cho

(cid:2) Cho xem kiểm tra số tiến tài khoản và bỏ tiền vào tài khoản bằng tiền mặt hoặc ngân phiếu ñối với những ai có thẻ ngân hàng

(cid:1) Tất cả các giao tác ñều ñược kiểm tra an toàn

(cid:2) Kiểm tra mã PIN (cid:2) Mã PIN nhập sai 3 lần thì thẻ sẽ bị “nuốt”

(cid:1) Cần phải thường xuyên nạp tiền vào máy, lấy ngân phiếu và

các thẻ bị nuốt ra

(cid:1) Xác ñịnh các tác nhân, các ca sử dụng và vẽ biểu ñồ ca sử

dụng

59

phép rút một số lượng tiền bởi hệ thống thông tin của ngân hàng) và những ai có thẻ VISA (cho phép từ xa bởi hệ thống VISA)

Bài tập 1

(cid:1) Các tác nhân

(cid:2) Người có thẻ ngân hàng (bankcard) (cid:2) Người có thẻ VISA (VISAcard) (cid:2) Người vận hành máy (operator) (cid:2) Hệ thống VISA (VISA) (cid:2) Hệ thống thông tin ngân hàng (bank)

60

30

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Bài tập 1

(cid:1) Các ca sử dụng

(cid:2) Rút tiền với thẻ ngân hàng (withdraw by bankcard) (cid:2) Rút tiền với thẻ VISA (withdraw by VISAcard) (cid:2) Kiểm tra mã PIN (identify) (cid:2) Xem số tiền còn trong tài khoản (balance) (cid:2) Bỏ tiền vào tài khoản bằng ngân phiếu hoặc tiền mặt

(cid:2) Nạp tiền vào máy (put money) (cid:2) Lấy thẻ bị nuốt trong máy (get cards) (cid:2) Lấy ngân phiếu trong máy (get cheques)

61

(deposit)

Bài tập 1

VISAcard

VISA

withdraw with VISA card

withdraw with bank card

bank

bankcard

balance

<>

<>

deposit

62

31

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

identify deposit by cheque deposit by cash

Bài tập 1

put cash

operator

get cards

63

get cheques

Bài tập 2

(cid:1) Quản lý ñào tạo nhân viên: Một công ty muốn mô tả bằng UML việc ñào tạo nhân viên ñể tin học hóa một số công việc. Việc ñào tạo ñược bắt ñầu khi người quản lý ñào tạo nhận ñược yêu cầu ñào tạo của một nhân viên. Nhân viên này có thể xem danh mục các chuyên ñề ñào tạo của các ñơn vị ñào tạo ký kết với công ty. Yêu cầu của nhân viên ñược xem xét bởi người quản lý ñào tạo và người quản lý sẽ trả lời là chấp nhận hay từ chối ñề nghị ñó. Trong trường hợp chấp nhận, người quản lý sẽ xác ñịnh chuyên ñề phù hợp trong danh mục các chuyên ñề, sau ñó gửi cho nhân viên nội dung của chuyên ñề và danh sách các khóa ñào tạo. Nhân viên sẽ chọn khóa ñào tạo và người quản lý sẽ ñăng ký khóa học với ñơn vị ñào tạo cho nhân viên. Trong trường hợp muốn hủy bỏ ñăng ký khóa ñào tạo, nhân viên phải thông báo sớm cho người quản lý biết ñể người quản lý thực hiện hủy bỏ. Cuối khóa ñào tạo, nhân viên chuyển phiếu ñánh giá kết quả học về cho công ty. Người quản lý sẽ kiểm tra hóa ñơn thanh toán tiền của ñơn vị ñào tạo.

(cid:1) Xây dựng biểu ñồ ca sử dụng.

64

32

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Nội dung

65

(cid:1) Khái niệm cơ bản hướng ñối tượng (cid:1) Biểu ñồ ca sử dụng (cid:1) Thiết kế cấu trúc tĩnh (cid:1) Thiết kế cấu trúc ñộng (cid:1) Sinh mã

Cấu trúc tĩnh

66

33

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

(cid:1) Mô hình khái niệm (cid:1) Biểu ñồ lớp (cid:1) Biểu ñồ ñối tượng

Mô hình khái niệm

(cid:1) Xác ñịnh các “khái niệm” quan trọng trong hệ thống (cid:1) Mô hình khái niệm (conceptual model) mô tả các khái

niệm trong các quan hệ của chúng

(cid:1) UML không cung cấp mô hình khái niệm, tuy nhiên

cung cấp kí hiệu và cú pháp ñể biểu diễn mô hình ñó chính là biểu ñồ lớp

(cid:1) Ở giai ñoạn này, mô hình khái niệm còn ñược gọi biểu ñồ lớp phân tích (analysis class diagram) – lưu ý, khác với biểu ñồ lớp thiết kế (design class diagram)

(cid:1) Ngoài ra, mô hình khái niệm cũng còn ñược gọi là mô

hình lĩnh vực (domain model)

67

Mô hình khái niệm

(cid:1) Mô hình khái niệm gồm:

(cid:2) Các khái niệm của lĩnh vực nghiên cứu (cid:2) Các thuộc tính và các thao tác của các

khái niệm này

(cid:2) Các quan hệ của các khái niệm này

(cid:1) Một khái niệm là biểu diễn ở mức cao (trừu

tượng) về một sự vật

(cid:1) Một khái niệm là một phần tử của lĩnh vực nghiên cứu, chứ không phải một phần tử của phần mềm hay hệ thống

68

34

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Mô hình khái niệm

(cid:1) Trong mô hình khái niệm, chúng ta sẽ nắm bắt các khái

niệm nhận biết bởi khách hàng

(cid:1) Ví dụ các khái niệm ñúng: khái niệm gắn liền với vấn ñề

(cid:2) Thang máy trong hệ thống ñiều khiển thang máy (cid:2) Vé máy bay trong hệ thống ñặt vé máy may (cid:2) ðặt hàng trong hệ thống mua bán hàng qua mạng (cid:1) Ví dụ tồi về khái niệm: khái niệm gắn liền với giải pháp

(cid:2) DanhSachKhachHang – bảng các khách hàng (cid:2) EventTrigger – tiến trình thực hiện duyệt hệ thống 10 phút

một lần

69

Mô hình khái niệm

(cid:1) Làm sao biết ñược một khái niệm là ñúng

hay không?

(cid:1) Nguyên tắc: “Nếu khách hàng không hiểu khái niệm, rất có thể ñó không phải là khái niệm”

(cid:1) Mô hình khái niệm sẽ ñược chuyển dần sang biểu ñồ lớp thiết kế trong giai ñoạn xây dựng

70

35

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Xác ñịnh các khái niệm

(cid:1) ðể xác ñịnh các khái niệm, dựa vào

ñặc tả yêu cầu, mà cụ thể hơn là dựa vào các ca sử dụng

(cid:1) Ví dụ: ca sử dụng “mua hàng”

(cid:2) Các khái niệm có thể: KháchHàng,

NgườiBánHàng, TínhTiền, MuaHàng, MặtHàng, …

71

Xác ñịnh các khái niệm

(cid:1) Một số ứng cử viên của khái niệm từ ñặc tả

hoặc ca sử dụng: (cid:2) Các ñối tượng vật lý (xe ôtô) (cid:2) Các vị trí, ñịa ñiểm (nhà ga) (cid:2) Các giao tác (thanh toán) (cid:2) Các vai trò của con người (người bán) (cid:2) Các hệ thống khác ở bên ngoài (cơ sở dữ liệu từ xa) (cid:2) Danh từ trừu tượng (sự khát, ăn uống) (cid:2) Các tổ chức (ñại học) (cid:2) Các sự kiện (cấp cứu) (cid:2) Nguyên tắc/chính sách

72

36

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Xác ñịnh các khái niệm

(cid:1) Cách khác ñể xác ñịnh các khái niệm

(cid:2) Các danh từ và cụm danh từ trong ñặc tả yêu cầu hoặc ñặc tả ca sử dụng có thể là các khái niệm

(cid:2) Dựa vào hiểu biết và kinh nghiệm loại bỏ các danh từ

(cid:1) Ví dụ: dựa vào kịch bản ca sử dụng “mua hàng”

(cid:2) Gạch chân các danh từ và cụm danh từ

73

và cụm danh từ không là các khái niệm

Xác ñịnh các khái niệm

(cid:1) Ví dụ

Hành ñộng của tác nhân Hành ñộng của hệ thống

1. Một khách hàng ñưa hàng ñã chọn mua ñến quầy tính tiền.

3. Xác ñịnh mặt hàng, hiển thị các thông tin và giá mặt hàng. 2. Người bán hàng ghi nhận từng mặt hàng.

Số này ñược hiển thị.

37

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Nếu một mặt hàng có số lượng nhiều hơn một thì người bán hàng có thể nhập vào một số. 74

Xác ñịnh các khái niệm

(cid:1) Ví dụ

Hành ñộng của tác nhân Hành ñộng của hệ thống

5. Tính và hiển thị tổng số tiền.

4. Sau khi ñã ghi nhận tất cả các mặt hàng, người bán hàng báo hiệu kết thúc việc ghi nhận hàng.

6. Người bán hàng thông báo tổng số tiền phải trả cho khách hàng.

7. Khách hàng trả tiền cho người bán hàng. 75

Xác ñịnh các khái niệm

(cid:1) Ví dụ

Hành ñộng của hệ thống

Hành ñộng của tác nhân 8. Người bán hàng nhập số tiền khách hàng trả. 9. Hiển thị tiền dư và in phiếu bán hàng

11. Ghi nhận phiên bán hàng.

10. Người bán hàng xác nhận sự trả tiền, lấy tiền dư trả cho khách hàng và ñưa cho khách hàng phiếu bán hàng.

38

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

12. Khách hàng rời quầy thu tiền với túi hàng 76

Xác ñịnh các khái niệm

(cid:1) Phân biệt giữa khái niệm (concept) và thuộc tính (attribut) (cid:2) Nếu một phần tử của lĩnh vực nghiên cứu không là một con

số hoặc một chuỗi kí tự thì có thể ñó là một khái niệm (cid:2) Ví dụ: Cần xây dựng phần mềm quản lý các chuyến bay.

(cid:2) Trả lời: ñích một chuyến bay là một sân bay, không phải là

ðích của một chuyến bay là thuộc tính của một chuyến bay hay là một khái niệm khác ?

77

một con số hay văn bản, ñó là một khái niệm

Xác ñịnh các khái niệm

(cid:1) Lớp “MôTả”

(cid:2) Lớp MôTả là lớp chứa thông tin mô tả các

ñối tượng khác

• Ví dụ: Lớp MặtHàng chứa các thông tin về Mặt Hàng

mãMH tênMH: text giá sốXêri màuSắc

MặtHàng

78

39

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Phương án 1 (chưa tốt)

Xác ñịnh các khái niệm

(cid:1) Lớp “MôTả”

ðược mô tả

mãMH tênMH: text giá

sốXêri màuSắc

MôTảMặtHàng MặtHàng 1 *

79

Phương án 2 (tốt hơn)

Xác ñịnh các khái niệm

(cid:1) Lớp “MôTả”

(cid:2) Khi nào sử dụng lớp “MôTả”

80

40

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

• Khi cần giảm bớt sự dư thừa, trùng lặp thông tin • Khi cần mô tả về ñối tượng ñộc lập với các ñối tượng cụ thể • Khi cần cần duy trì thông tin về ñối tượng cho dù các ñối tượng cụ thể bị xóa

Xác ñịnh các khái niệm

(cid:1) Lớp “MôTả”

(cid:2) Ví dụ: trong lĩnh vực hàng không, cần mô tả quan hệ giữa các chuyến bay và các sân bay

Bay ñến

tên

ngày giờ sốHiệu

SânBay ChuyếnBay 1 *

81

Phương án 1

Xác ñịnh các khái niệm

(cid:1) Lớp “MôTả”

Bay ñến

tên

sốHiệu

SânBay MôTảChuyếnBay 1 *

1

ngày giờ

82

41

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

* ChuyếnBay Phương án 2

Biểu diễn khái niệm

(cid:1) Sử dụng kí hiệu của biểu ñồ lớp

Khái niệm

Các thuộc tính

Các thao tác (chưa xét ñến ở giai ñoạn này)

83

MôtảMặtHàng

Thuộc tính

(cid:1) Các thuộc tính (attribut) của một khái niệm biểu diễn dữ liệu cần thiết cho các thể hiện (instance) của khái niệm (cid:1) Ví dụ

Khái niệm

Các thuộc tính

MôtảMặtHàng

Kiểu (không bắt buộc)

84

42

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

mã tên: text

Thuộc tính

(cid:1) Một thuộc tính chỉ ñại diện cho các dữ liệu liên quan

ñến khái niệm sở hữu thuộc tính ñó

(cid:1) Ví dụ

Sai

NgườiBánHàng

tên sốQuầy

ðúng

NgườiBánHàng Quầy

85

tên số

Thuộc tính

(cid:1) Cách xác ñịnh các thuộc tính

(cid:2) Các con số và chuỗi kí tự là các thuộc tính (cid:2) Nếu một tính chất của một khái niệm không thể làm ñược ñiều gì thì rất có thể ñó là thuộc tính

(cid:2) Nếu nghi ngờ một thuộc tính là khái niệm, thì

ñơn giản hãy coi ñó là khái niệm

86

43

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

• Ví dụ: lương là thuộc tính hay khái niệm so với khái niệm công nhân ? • Nếu nghi ngờ ñó là khái niệm thì coi như lương và công nhân là hai khái niệm tách rời

Thao tác

(cid:1) Khái niệm có thể có các thao tác (operation) (cid:1) Thao tác của khái niệm chính là khả năng thực hiện của một thể hiện của khái niệm

(cid:1) Ví dụ

Khái niệm

Các thuộc tính

MặtHàngBán

Thao tác

ngày giờBắtðầu: Time

87

tổngTiền(): Integer

Thao tác

(cid:1) Ở giai ñoạn elaboration, mô hình khái niệm có thể không nhất thiết phải mô tả các thao tác của khái niệm

(cid:1) Giai ñoạn construction sẽ thực hiện công

việc này một cách chi tiết và ñầy ñủ

88

44

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Kết hợp

(cid:1) Kết hợp (association) biểu diễn quan hệ giữa các thể

hiện của các khái niệm

(cid:1) Ví dụ: kết hợp chứa giữa khái niệm cửa hàng và khái

niệm mặt hàng

(cid:1) Kí hiệu

Kết hợp

89

Chứa > MặtHàng CửaHàng

Kết hợp

(cid:1) Có thể tồn tại kết hợp của nhiều hơn hai khái niệm (cid:1) Ví dụ

function

employ

work

Profession

90

45

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Company Person

Kết hợp

(cid:1) Bội số (multiplicity) của vai trò chỉ ra số thể hiện có

thể của quan hệ tham gia vào quan hệ

(cid:1) Các bội số có thể (cid:2) 1: chỉ ñúng một (cid:2) 1..*: từ một ñến nhiều (cid:2) *: từ 0 ñến nhiều (cid:2) m..n: từ m ñến n

(cid:1) Ví dụ

Chứa >

91

1 * CửaHàng MặtHàng

Hạn chế kết hợp (qualificator)

(cid:1) Giảm số thể hiện tham gia vào một kết hợp (cid:1) Kí hiệu

key

A

B

qualificator

(cid:1) Mỗi thể hiện A với giá trị key xác ñịnh một tập con các

thể hiện B tham gia vào kết hợp

92

46

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Hạn chế kết hợp (qualificator)

(cid:1) Ví dụ

(cid:2) Phân biệt các sinh viên học tại một ñại học dựa vào

No sinh viên

ðạiHọc

SinhViên

(cid:2) Phân biệt các mặt hàng thuộc vào một danh mục mặt

mã số sinh viên

ID

DanhMụcMặtHàng

MặtHàng

93

hàng dựa vào mã số mặt hàng

Chuyên biệt hóa

(cid:1) Một khái niệm có thể về cơ bản giống với một khái niệm khác, chỉ có một vài sự khác nhau trên một số tính chất (thuộc tính, thao tác, các kết hợp)

(cid:1) Khái niệm thứ nhất ñược gọi là chuyên biệt hóa

(specialization) của khái niệm thứ hai

(cid:1) Khái niệm thứ nhất ñược gọi là khái niệm chuyên biệt hóa (specialized concept), khái niệm thứ hai ñược gọi là khái niệm chung (general concept)

94

47

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Chuyên biệt hóa

(cid:1) Kí hiệu

general concept

95

specialized concept specialized concept

Thừa kế

(cid:1) Khái niệm chuyên biệt hóa thừa kế (inheritance) tất cả các tính chất của của khái niệm chung. Các tính chất này bao gồm: (cid:2) Các thuộc tính (cid:2) Các thao tác (cid:2) Các kết hợp với khái niệm khác

96

48

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Thừa kế

(cid:1) Ví dụ

1

thanh toán >

1

ThanhToán

PhiênBánHàng

tổng: Integer

ThanhToánBằngTiềnMặt

ThanhToánBằngThẻ

(cid:1) Các khái niệm “ThanhToánBằngTiềnMặt” và

“ThanhToánBằngThẻ” ñều có thuộc tính “tổng” và kết hợp “thanh toán” với khái niệm “PhiênBánHàng”

97

Khái niệm trừu tượng

(cid:1) Tương tự như lớp, khái niệm trừu tượng không có các

thể hiện

1

1

thanh toán >

ThanhToán

PhiênBánHàng

Khái niệm trừu tượng ñược viết in nghiêng

tổng: Integer

ThanhToánBằngTiềnMặt

ThanhToánBằngThẻ

(cid:1) Lưu ý, trong tài liệu viết tay có thể viết {abstract} dưới

tên khái niệm trừu tượng

98

49

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Quan hệ hợp thành và quan hệ kết tập

(cid:1) Quan hệ hợp thành (composition) và quan hệ kết tập (agregation) là hai kết hợp ñặc biệt chỉ sự sở hửu (cid:2) Quan hệ hợp thành: một khái niệm thành phần chỉ

thuộc vào một khái niệm toàn phần

(cid:2) Quan hệ kết tập: một khái niệm thành phần có thể

ToànPhần MộtPhần

thuộc vào nhiều khái niệm toàn phần

99

ToànPhần MộtPhần

Quan hệ hợp thành và quan hệ kết tập

3

1

(cid:1) Ví dụ

Point

1

1

Circle Triangle

radius Style

(cid:1) Một thể hiện của “Point” không thể ñồng thời thuộc vào một thể hiện của “Triangle” và một thể hiện của “Circle”

100

50

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

color isFilled

Quan hệ hợp thành và quan hệ kết tập

(cid:1) Quan hệ hợp thành nhấn mạnh sự sở hữu: nếu khái niệm toàn phần bị hủy bỏ thì khái niệm thành phần cũng bị hủy bỏ theo

(cid:1) Trong trường hợp, thứ tự của các khái niệm thành phần là quan trọng, thì thêm vào kết hợp ñiều kiện {ordered}

(cid:1) Ví dụ

{ordered} 3..*

101

Point Polygon

Khái niệm kết hợp

(cid:1) Có thể mô tả các tính chất của một kết hợp giữa hai khái niệm bởi một khái niệm kết hợp (association concept)

(cid:1) Ví dụ

work 1..*

employ *

Person Company

Khái niệm kết hợp

Employment

102

51

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

begin, end: Date

Bài tập 1

(cid:1) Xây dựng mô hình khái niệm của hệ

thống/phần mềm bán hàng tại siêu thị (cid:2) Phần mềm bán hàng sử dụng tại siêu thị

nhằm giúp ghi nhận hoạt ñộng bán hàng, xử lý các thanh toán với khách hàng. Phần mềm ñược sử dụng bởi người bán hàng và ñược quản lý bởi người quản lý siêu thị. Phần mềm nhằm tự ñộng hóa công việc của người bán hàng tại quầy thu tiền.

103

Bài tập 1

1

*

MatHang

MoTaMatHang

*

1

DongHang 1..*

*

*

1

1

1

1..*

1

*

DanhMucMatHang

1 PhienBanHang

1

1

CuaHang 1

1..*

*

1

1..*

1

1

1

HeThongBanHang 1

QuayTinhTien

ThanhToan

KháchHàng

1

1

1

NguoiQuanLy

NgườiBán

NhânViên

104

52

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Bài tập 2

(cid:1) Quản lý ñào tạo ở trung tâm tin học: Một công ty muốn mô tả

bằng UML việc ñào tạo nhân viên ñể tin học hóa một số công việc. Việc ñào tạo ñược bắt ñầu khi người quản lý ñào tạo nhận ñược yêu cầu ñào tạo của một nhân viên. Nhân viên này có thể xem danh mục các chuyên ñề ñào tạo của các ñơn vị ñào tạo ký kết với công ty. Yêu cầu của nhân viên ñược xem xét bởi người quản lý ñào tạo và người quản lý sẽ trả lời là chấp nhận hay từ chối ñề nghị ñó. Trong trường hợp chấp nhận, người quản lý sẽ xác ñịnh chuyên ñề phù hợp trong danh mục các chuyên ñề, sau ñó gửi cho nhân viên nội dung của chuyên ñề và danh sách các khóa ñào tạo. Nhân viên sẽ chọn khóa ñào tạo và người quản lý sẽ ñăng ký khóa học với ñơn vị ñào tạo cho nhân viên. Trong trường hợp muốn hủy bỏ ñăng ký khóa ñào tạo, nhân viên phải thông báo sớm cho người quản lý biết ñể người quản lý thực hiện hủy bỏ. Cuối khóa ñào tạo, nhân viên chuyển phiếu ñánh giá kết quả học về cho công ty. Người quản lý sẽ kiểm tra hóa ñơn thanh toán tiền của ñơn vị ñào tạo.

(cid:1) Xây dựng biểu mô hình khái niệm.

105

Biểu ñồ lớp

(cid:1) Biểu ñồ lớp ñịnh nghĩa:

(cid:2) Các lớp (class)

• Các thuộc tính (attribut) của lớp: các

biến và kiểu của chúng

• Các thao tác (operation) của lớp: các

phương thức (method), các tham ñối và có thể giá trị trả về

(cid:2) Các quan hệ giữa các lớp

106

53

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Biểu ñồ lớp

(cid:1) Biểu ñồ lớp có cùng quy tắc cú pháp với mô hình khái

niệm (cid:2) Thực ra, mô hình khái niệm sử dụng các cú pháp của

biểu ñồ lớp trong UML

(cid:2) Tất cả các kí hiệu và quy tắc (ñã trình bày) ñối với mô hình khái niệm ñều ñược sử dụng ñể xây dựng biểu ñồ lớp

(cid:1) Biểu ñồ lớp ñược xây dựng dựa trên mô hình khái

niệm

(cid:1) Các lớp có thể chủ yếu là các khái niệm hoặc các

thành phần khác

(cid:1) Biểu ñồ lớp sẽ là nền tảng cho bước mã hóa

107

Biểu ñồ lớp

(cid:1) ðối với biểu ñồ lớp, mỗi thuộc tính hay mỗi phương thức có thể có thêm mức khả kiến – khả năng nhìn thấy (visibility)

(cid:1) Kí hiệu

(cid:2) “–” mức riêng (priviate), thuộc tính hay phương thức

(cid:2) “#” mức bảo vệ (protected), thuộc tính hay phương thức chỉ ñược nhìn thấy bởi ñối tượng của lớp ñó và ñối tượng của các lớp thừa kế lớp ñó

(cid:2) “+” mức chung (public), thuộc tính hay phương thức chỉ ñược nhìn thấy bởi ñối tượng của tất cả các lớp

108

54

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

chỉ ñược nhìn thấy bởi ñối tượng của lớp ñó

Biểu ñồ lớp

(cid:1) Ví dụ

Tên lớp

Shape

Thuộc tính

Phương thức

– origin : Point

109

+ setOrigin(p : Point) + getOrigin() : Point) + move(p : Point) + resize(s : Scale) + display() # pointInShape(p : Point) : Boolean

Biểu ñồ lớp

(cid:1) Thuộc tính dẫn xuất (derived attribut) là các thuộc tính của biểu ñồ lớp mà có thể suy ra từ các thuộc tính khác.

(cid:1) Kí hiệu: thuộc tính dẫn xuất bắt ñầu bởi “/”, một ràng

buộc có thể ñi kèm ñể giải thích sự dẫn xuất

(cid:1) Ví dụ

Ràng buộc

Thuộc tính dẫn xuất

Person

{age = CurrentDate – birthDate}

110

55

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

name birthDate / age

Biểu ñồ lớp

(cid:1) Các quan hệ giữa các lớp

(cid:2) Quan hệ kết hợp (association) (cid:2) Quan hệ chuyên biệt hóa/tổng quát hóa

(specialization/generalization) (cid:2) Quan hệ hợp thành (composition) (cid:2) Quan hệ kết tập (agregation) (cid:2) Quan hệ phụ thuộc (dependence)

111

Biểu ñồ lớp

Quan hệ kết hợp

(cid:1) Quan hệ kết hợp (association)

Chứa >

(cid:1) Quan hệ chuyên biệt hóa/tổng quát hóa

(specialization/generalization)

Quan hệ tổng quát hóa

1 * QuầyHàng MặtHàng

NhânViên

112

56

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

NgườiBánHàng NgườiQuảnLý

Biểu ñồ lớp

(cid:1) Quan hệ kết tập (agregation)

Quan hệ

0..*

*

(cid:1) Quan hệ hợp thành (composition)

Quan hệ

1

*

Person Company

113

MặtHàng DanhMụcMặtHàng

Biểu ñồ lớp

(cid:1) Quan hệ phụ thuộc (dependence): mô tả

một lớp phụ thuộc vào lớp khác

(cid:1) Ví dụ

Quan hệ phụ thộc

Point Circle

114

57

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

center : Point

Biểu ñồ lớp

(cid:1) Ví dụ: chuyển ñổi mô hình khái niệm

thành biểu ñồ lớp

(cid:1) Giả sử mô hình khái niệm

thanh toán >

1

1

ThanhToán

PhiênBánHàng

ThanhToánBằngTiềnMặt

ThanhToánBằngThẻ

115

Biểu ñồ lớp

(cid:1) Chi tiết các thuộc tính

thanh toán >

1

1

ThanhToán

PhiênBánHàng

tổng : Integer

ThanhToánBằngTiềnMặt

ThanhToánBằngThẻ

116

58

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Biểu ñồ lớp

(cid:1) Chi tiết các phương thức

thanh toán >

1

1

ThanhToán

PhiênBánHàng

tổng : Integer

tínhTổng() : Integer

ThanhToánBằngTiềnMặt

ThanhToánBằngThẻ

nhậnTiền()

trừVàoThẻ()

117

Biểu ñồ lớp

(cid:1) Xác ñịnh các mức khả kiến

thanh toán >

1

1

ThanhToán

PhiênBánHàng

# tổng : Integer

+ tínhTổng() : Integer

ThanhToánBằngTiềnMặt

ThanhToánBằngThẻ

+ nhậnTiền()

+ trừVàoThẻ()

118

59

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Nội dung

119

(cid:1) Khái niệm cơ bản hướng ñối tượng (cid:1) Biểu ñồ ca sử dụng (cid:1) Thiết kế cấu trúc tĩnh (cid:1) Thiết kế cấu trúc ñộng (cid:1) Sinh mã

Cấu trúc ñộng

120

60

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

(cid:1) Biểu ñồ tương tác (cid:2) Biểu ñồ tuần tự (cid:2) Biểu ñồ cộng tác

Biểu ñồ tương tác

(cid:1) Biểu ñồ tương tác mô tả hành vi của hệ thống (cid:1) Mỗi biểu ñồ tương tác tương ứng một tác vụ ñược

thực hiện bởi một số các ñối tượng

(cid:1) Biểu ñồ tương tác xây dựng dựa trên nền tảng của

biểu ñồ hoạt ñộng và biểu ñồ trạng thái

(cid:1) Biểu ñồ tương tác mô tả các hành ñộng của các ñối tượng ñể thực hiện một tác vụ. Các hành ñộng của ñối tượng bao gồm: (cid:2) gửi các thông ñiệp (message) giữa các ñối tượng (cid:2) tạo (create) và hủy (destroy) các ñối tượng

121

Biểu ñồ tuần tự

(cid:1) Biểu ñồ tuần tự (sequence diagram) biểu

diễn sự tương tác giữa các ñối tượng bằng việc nhấn mạnh thứ tự trao ñổi thông ñiệp giữa các ñối tượng (cid:1) Biểu ñồ tuần tự gồm:

(cid:2) các ñối tượng (cid:2) các thông ñiệp trao ñổi giữa các ñối tượng

122

61

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Biểu ñồ tuần tự

(cid:1) Mỗi ñối tượng có một ñường sinh tồn (lifeline) biểu diễn

thời gian tồn tại của nó.

(cid:1) Kí hiệu

ðối tượng

ðường sinh tồn

123

object object:Class :Class

Biểu ñồ tuần tự

(cid:1) Thời gian hoạt ñộng (activation) là thời gian mà ñối tượng ñang thực hiện một thao tác

(cid:1) Kí hiệu

Thời gian hoạt ñộng

124

62

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

object

Biểu ñồ tuần tự

(cid:1) Một thông ñiệp ñặc tả trao ñổi giữa

các ñối tượng

(cid:1) Các loại thông ñiệp

(cid:2) Gọi (call) (cid:2) Trả về (return) (cid:2) Gửi (send) (cid:2) Tạo (create) (cid:2) Hủy (destroy)

125

Biểu ñồ tuần tự

(cid:1) Thông ñiệp gọi gọi một phương thức/thao tác trên ñối tượng

(cid:2) ðối tượng gọi phải ñợi thông ñiệp ñược thực hiện kết thúc mới có thể thực hiện công việc khác (thông ñiệp ñồng bộ)

(cid:1) Một ñối tượng có thể gửi thông ñiệp cho chính nó (cid:1) Kí hiệu

object A object B object

Gửi thông ñiệp gọi

Gửi cho chính nó

126

63

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

message()

Biểu ñồ tuần tự

(cid:1) Thông ñiệp trả về trả về một giá trị

cho ñối tượng gọi

(cid:1) Kí hiệu

Object A Object B

message()

Thông ñiệp trả về

127

value

Biểu ñồ tuần tự

(cid:1) Thông ñiệp gửi gửi một tín hiệu ñến một ñối tượng

(cid:2) Khác với thông ñiệp gọi, khi ñối tương gửi thông ñiệp gửi nó không chờ ñợi, mà tiếp tục thực hiện công việc khác (thông ñiệp không ñồng bộ)

(cid:1) Kí hiệu

object A object B

Thông ñiệp gửi

128

64

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

message()

Biểu ñồ tuần tự

(cid:1) Thông ñiệp tạo gọi phương thức tạo một ñối tượng (cid:1) Thông ñiệp hủy gọi phương thức hủy một ñối tượng (cid:1) Kí hiệu

Thông ñiệp tạo

object A

<> object B

Thông ñiệp hủy

129

<>

Biểu ñồ tuần tự

(cid:1) Ví dụ

public class A {

private B objB; public void msg1() {

:A

objB = new B(); objB.msg2(); objB.msg3();

}

}

msg1 <> :B msg2

public class B {

msg3

… public void msg2() { … } public void msg3() { … }

}

130

65

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Biểu ñồ tuần tự

(cid:1) Một thông ñiệp có thể ñược gửi lặp

nhiều lần

Gửi lặp thông ñiệp 10 lần

(cid:1) Kí hiệu

object B object A

for(i = 1; i<= 10; i++) {

objectB.message()

}

131

*[1..10]message()

Biểu ñồ tuần tự

(cid:1) Một thông ñiệp có thể ñược gửi lặp

nhiều lần phụ thuộc vào một ñiều kiện

Gửi lặp thông ñiệp trong khi C ñúng

(cid:1) Kí hiệu

object B object A

while(C) {

objectB.message()

}

132

66

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

*[C]message()

Biểu ñồ tuần tự

(cid:1) Một thông ñiệp có thể ñược gửi phụ

thuộc vào ñiều kiện rẽ nhánh

(cid:1) Kí hiệu

[C]message()

if(C)

objectB.message();

else

[not C]message()

objectC.message();

133

object B object C object A

Biểu ñồ tuần tự

(cid:1) Một thông ñiệp có thể ñược gọi ñệ

quy (cid:1) Kí hiệu

Thông ñiệp ñệ quy

:BinaryTree

134

67

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

print() print()

Biểu ñồ tuần tự

(cid:1) Ví dụ

:TàiLiệu :MáyFax :DâyðiệnThoại

gọi()

135

nhấcMáy() âmMời bấmSố(số) ñãKếtNối ñãKếtNối gửi(trang) chuyển(trang)

Biểu ñồ tuần tự

(cid:1) Ví dụ

:NgườiBán :MáyTínhTiền :PhiênBánHàng

thanhToán(sốTiền) thanhToán(sốTiền) <> :ThanhToán

thanhToán(sốTiền)

136

68

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

tiềnDư tiềnDư <> trảTiềnDư()

Biểu ñồ tuần tự

(cid:1) Giữa biểu ñồ tương tác và biểu ñồ lớp và có mối quan

hệ chặt chẽ với nhau

(cid:1) Ví dụ

MáyTínhTiền

PhiênBánHàng

mởThanhToán()

thanhToán()

:MáyTínhTiền

:PhiênBánHàng

mởThanhToán(sốTiền)

thanhToán(sốTiền)

137

Biểu ñồ cộng tác

(cid:1) Biểu ñồ cộng tác (collaboration diagram) mô tả sự

tương tác giữa các ñối tượng bằng việc nhấn mạnh cấu trúc kết hợp giữa các ñối tượng và những thông ñiệp trao ñổi giữa chúng

(cid:1) Biểu ñồ cộng tác là sự mở rộng của biểu ñồ ñối tượng (cid:1) Biểu ñồ cộng tác chỉ ra

(cid:2) thứ tự gửi các thông ñiệp: mỗi thông ñiệp ñược gán

(cid:2) ñiều kiện gửi các thông ñiệp

138

69

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

một số tuần tự

Biểu ñồ cộng tác

(cid:1) Cấu trúc thông ñiệp ñược mô tả dạng tổng quát như sau: precondition / condition sequence * *|| iteration : result := message(parameters) (cid:2) “precondition /”: danh sách số tuần tự của các thông ñiệp trước

thông ñiệp cần gửi. Thông ñiệp chỉ ñược gửi ñi khi tất cả các thông ñiệp trước nó ñã ñược gửi ñi.

(cid:2) “condition”: thông ñiệp chỉ ñược gửi ñi khi ñiều kiện ñược thỏa

mãn.

(cid:2) “sequence”: số tuần tự của thông ñiệp cần gửi. Ví dụ, việc gửi

thông ñiệp 1.3.5 theo sau việc gửi thông ñiệp 1.3.4, cả hai thông ñiệp này nằm trong luồng 1.3.

(cid:2) “*”: chỉ ra thông ñiệp ñược gửi ñi nhiều lần một cách tuần tự. (cid:2) “*||”: chỉ ra thông ñiệp ñược gửi ñi nhiều lần một cách ñồng thời. (cid:2) “iteration”: chỉ ra số lần gửi thông ñiệp một cách tuần tự hoặc ñồng

thời

(cid:2) “result”: chỉ ra giá trị trả về của thông ñiệp. (cid:2) “message”: tên thông ñiệp (cid:2) “parameters”: danh sách các tham số của thông ñiệp.

139

Biểu ñồ cộng tác

(cid:1) Ví dụ

(cid:2) 4 : hello() : thông ñiệp có số tuần tự là 4. (cid:2) [time = 12h] 1 : lunch() : thông ñiệp này chỉ

ñược gửi ñi nếu là lúc 12h.

(cid:2) 1.3.5 * call() : thông ñiệp này ñược gửi ñi

nhiều lần.

(cid:2) 3 / *|| [i:= 1..5] 1.2 : close() : thông ñiệp này ñược gửi ñi năm lần một cách ñồng thời và sau thông ñiệp số 3.

(cid:2) 1.2, 2.3 / [t < 10] 3.1 name = getName() : thông ñiệp này ñược gửi ñi sau các thông ñiệp 1.2, 2.3 và với ñiều kiện t<10.

140

70

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Biểu ñồ cộng tác

(cid:1) Ví dụ biểu ñồ cộng tác

:NgườiBán :ThanhToán

1 : thanhToán(sốTiền) 2 : trảTiềnDư() 1.1.3 : tiềnDư() 1.1.1 : <> 1.1.2 : thanhToán(sốTiền) 1.1.4 : <> 1.2 tiềnDư()

:PhiênBánHàng :HệThống

141

1.1 : thanhToán(sốTiền)

Biểu ñồ tương tác

(cid:1) Bài tập 1: Máy rút tiền ATM

(cid:2) Xây dựng biểu ñồ tuần tự cho ca sử dụng

rút tiền trong trường hợp thành công

(cid:2) Xây dựng biểu ñồ tuần tự cho ca sử dụng

xem số tiền dư trong tài khoản

142

71

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Nội dung

143

(cid:1) Khái niệm cơ bản hướng ñối tượng (cid:1) Biểu ñồ ca sử dụng (cid:1) Thiết kế cấu trúc tĩnh (cid:1) Thiết kế cấu trúc ñộng (cid:1) Sinh mã

Sinh mã

(cid:1) Chuyển các mô hình thiết kế sang mã chương trình

(C++, Java, …)

(cid:1) Mã chương trình hướng ñối tượng (cid:2) ðịnh nghĩa các lớp và giao diện (cid:2) ðịnh nghĩa các phương thức

(cid:1) Các biểu ñồ lớp sẽ ñược chuyển sang mã

chương trình ñịnh nghĩa các lớp tương ứng (cid:1) Các biểu ñồ tương tác sẽ ñược chuyển thành mã

chương trình ñịnh nghĩa các phương thức (cid:1) Các biểu ñồ khác sẽ hỗ trợ cho quá trình mã hóa

144

72

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Sinh mã

(cid:1) Ví dụ: biểu ñồ lớp

contains >

OneOrder

orderListe 1..*

*

- quantity: Integer

1

1

AirPlane

ListOfOrders

+ subtotal() : double

- price : float

- datePlaced - clientID

+ total() : double

+ getPrice() : float

145

Sinh mã

(cid:1) Mã lớp OneOrder

OneOrder

public class OneOrder {

- quantity: Integer

public double subtotal() {

} private int quantity;

+ subtotal() : double

}

146

73

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Sinh mã

(cid:1) Mã lớp OneOrder

contains >

OneOrder

*

public class OneOrder {

- quantity: Integer

1

public double subtotal() {

AirPlane

+ subtotal() : double

- price : float

} private int quantity; private AirPlane airPlane;

}

+ getPrice() : float

147

Sinh mã

(cid:1) Mã lớp ListOfOrders

OneOrder

orderListe 1..*

public class ListOfOrder {

- quantity: Integer

1

public double total() {

ListOfOrders

+ subtotal() : double

- datePlaced - clientID

} private Date datePlaced; private int clientID; private Vector orderList;

}

+ total() : double

148

74

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Sinh mã

(cid:1) Biểu ñồ cộng tác thực hiện phương thức

total()

1 : total()

2 : *[for each] subtotal()

:ListOfOrders

:OneOrder

3 : getPrice()

:AirPlane

149

Sinh mã

(cid:1) Mã phương thức total()

1 : total()

2 : *[for each] subtotal()

:ListOfOrders

:OneOrder

3 : getPrice()

public double total() {

:AirPlane

}

150

75

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Sinh mã

(cid:1) Mã phương thức total()

1 : total()

2 : *[for each] subtotal()

:ListOfOrders

:OneOrder

3 : getPrice()

public double total() {

double sum = 0; for (int i=0; i

sum += orderList.elementAt(i).subtotal();

:AirPlane

return sum;

}

151

Sinh mã

(cid:1) Mã phương thức subTotal()

1 : total()

2 : *[for each] subtotal()

:ListOfOrders

:OneOrder

3 : getPrice()

public double subtotal() {

return (quantity * airplane.getPrice());

}

:AirPlane

152

76

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

Sinh mã

(cid:1) Mã phương thức getPrice()

1 : total()

2 : *[for each] subtotal()

:ListOfOrders

:OneOrder

3 : getPrice()

public float getPrice() {

return price;

}

:AirPlane

153

Công cụ

(cid:1) Phần mềm Rational Rose, Poisedon

for UML, Umbrello (cid:2) Thiết kế các biểu ñồ UML (cid:2) Sinh mã chương trình

• C++ • Java • VB • Ada

154

77

CuuDuongThanCong.com

https://fb.com/tailieudientucntt