Professional Documents
Culture Documents
UML/NN 1
UML/NN 2
Coupling mạnh
C
Coupling yếu
1
Hai loại coupling Data coupling
Hai loại coupling: tương tác và kế thừa Liên kết giữa các thành phần là dữ liệu
Coupling tương tác: chia thành 5 loại nguyên tố hoặc phức hợp
Data coupling Ví dụ:
Stamp coupling
Control coupling Class_A Class_B
Common coupling
+ Operation_A () : Integer + Operation_B (Integer Para_1) : Integer
Content coupling
Coupling kế thừa integer ….
Operation_A() y = cB.Operation_B(x);
{ …
int x,y; }
Class_B cB;
UML/NN 5 UML/NN 6
2
Common và Content coupling Mức độ liên kết
UML/NN 9 UML/NN 10
kết giữa lớp tổng quát và lớp chuyên biệt Tách thành cấu trúc phân cấp kế thừa
càng chặt càng tốt:
-> không kế thừa những thuộc tính không
liên quan hoặc không cần thiết
Nếu một lớp chuyên biệt “chồng” lên hầu hết
các method hoặc không sử dụng nó từ lớp
tổng quát Æ coupling kế thừa yếu Æ thay đổi
tiếp cận tổng quát hoá và chuyên biệt hoá Đối tượng phức tạp Nhiều đối tượng đơn giản
UML/NN 11 UML/NN 12
3
Ví dụ Nội dung
5.1 Các tiên đề trong thiết kế
5.2 Hướng tiếp cận trong xác định lớp
Hoá Đơn Hoá Đơn 5.3 Xác định mối quan hệ giữa các lớp
LậpHoáĐơn()
LậpHoáĐơn()
5.4 Xác định thuộc tính và hành vi của lớp
InHoáĐơn()
Máy In
InHoáĐơn()
UML/NN 13 UML/NN 14
6.2 Các cách tiếp cận xác định lớp 1. Tiếp cận theo thực thể nghiệp vụ
1. Tiếp cận theo thực thể nghiệp vụ Đối với các thực thể sự vật: kiểm chứng
2. Tiếp cận theo cụm danh từ xem có nhu cầu quản lý thông tin về thực
3. Tiếp cận theo phân loại thể này trong hệ thống không?
Nếu có, xác định một lớp trong sơ đồ phân tích
4. Tiếp cận theo phân tích hoạt động use case biểu diễn cho thực thể này
Xác định tên lớp: tên của sự vật
Thuộc tính: bổ sung các thuộc tính mô tả đầy đủ
thông tin mà hệ thống có nhu cầu quản lý về đối
tượng
UML/NN 15 UML/NN 16
4
Ví dụ: …Tiếp cận theo thực thể nghiệp vụ
Đối với thực thể thông tin:
Hành lý Nếu thực thể mô tả thông tin về một hoạt động giao
dịch hệ thống thì chuyển thành một lớp trong mô
Hành lý
hình phân tích
NVL
Nếu thực thể là một dạng thông tin tổng hợp Æ có
thể tách thành nhiều lớp mới hoặc bổ sung thông tin
cho các lớp đang tồn tại
NVL
Hoá đon
Thẻ thư viện
Hàng hoá
Ví dụ Worker
Hoá đơn
HOÁ ĐƠN
HOÁ ĐƠN
Số HĐ:…… Ngày:../…/…
Khách hàng: ……………………..
Địa chỉ:…………………………..
Khách hàng
Người lập:………………………..
Mã Tên ĐVT Số Đơn
số hàng lượng giá Nhân viên bán hàng Nhân viên quản lý Thủ kho Độc giả Nhà CC
Chi tiết HĐ
00 H1 Cái 100 2000
1 H7 Kg 1000 3000
00 … … … …
4 Hàng
… Tổng trị giá: ……… Nhân viên Đọc giả Nhà CCấp
UML/NN 19 UML/NN 20
5
Ví dụ: Hóa đơn 2. Tiếp cận theo cụm danh từ
Đề xuất bởi Rebecca Wirfs-Brock, Brian
0..n 1
1 Wilkerson, và Lauren Wiener
Khách hàng NgườI quản lý
1 1 Ý tưởng: xác định các lớp thông qua việc đọc
0..n 0..n 0..n trong các văn bản mô tả use case hoặc
các mô tả yêu cầu để tìm kiếm và trích lọc
Hồ sơ khách hàng Hoá đơn Thẻ khách hàng thân thiết
các cụm danh từ
Khách hàng 0..1 Thẻ KHTT
1
Class thích hợp Class mờ Class không
1 (relevant class) (fuzzy class) thích hợp
1..n (irrelevant)
Hoá đơn
UML/NN 21 UML/NN 22
UML/NN 23 UML/NN 24
6
Loại bỏ các lớp không thích hợp Đồng nhất các ứng viên trùng lắp
UML/NN 25 UML/NN 26
Các lớp còn lại Danh từ, cụm danh từ có thể là thuộc tính
Tài khoản Bao thư Xác định danh từ, cụm danh từ có thể là thuộc tính:
Số dư tài khoản Bốn ký số Chỉ được sử dụng như là giá trị
Số tiền Ngân quỹ
Không có nhiều hơn một đặc trưng riêng, hoặc chỉ
Tiến trình đăng nhập Tiền
mô tả một đặc trưng của đối tượng khác
Thẻ ATM PIN
Máy ATM PIN không hợp lệ Ví dụ: hệ thống ATM (tiếp tục phân tích)
Ngân hàng Thông điệp Số tiền: Æ một giá trị, không phải một lớp
Khách hàng ngân hàng Mật khẩu Số dư tài khoản: Æ thuộc tính của lớp Tài khoản
Thẻ Mã PIN PIN không hợp lệ: Æ một giá trị, không phải một lớp
Tiền mặt Mẫu tin Mật khẩu: Æ một thuộc tính (có thể của lớp Khách hàng)
Khách hàng Bước Lịch sử giao dịch: Æ một thuộc tính (có thể của lớp Giao
dịch)
Tài khoản khách hàng Hệ thống
PIN: Æ một thuộc tính (có thể của lớp Khách hàng)
VND Giao dịch
Lịch sử giao dịch
UML/NN 27 UML/NN 28
7
Danh sách danh từ, cụm danh từ còn lại Loại bỏ các ứng viên
Tài khoản Bao thư Loại bỏ các ứng viên không mục tiêu hoặc không
Số dư tài khoản Bốn ký số thuộc phạm vi hệ thống:
Số tiền Ngân quỹ Thông điệp
Tài khoản Bao thư
Tiến trình đăng nhập Tiền Hệ thống Số dư tài khoản Bốn ký số
Thẻ ATM PIN Mẫu tin Số tiền Ngân quỹ
Máy ATM PIN không hợp lệ Tiến trình đăng nhập Tiền
Ngân quỹ
Thẻ ATM PIN
Ngân hàng Thông điệp VND
Máy ATM PIN không hợp lệ
Khách hàng ngân Mật khẩu Tiền mặt Ngân hàng Thông điệp
hàng Mã PIN Tiến trình đăng nhập Khách hàng ngân Mật khẩu
Thẻ hàng Mã PIN
Mẫu tin
Thẻ Mẫu tin
Tiền mặt Bước Tiền mặt Bước
Khách hàng Hệ thống Khách hàng Hệ thống
Tài khoản khách Giao dịch Tài khoản khách Giao dịch
hàng Lịch sử giao dịch
hàng Lịch sử giao dịch
VND
VND
UML/NN 29 UML/NN 30
8
Tiếp cận theo phân loại… …Tiếp cận theo phân loại
Lớp tổ chức (organisation): tập hợp con người, Lớp vị trí (place): Các vị trí vật lý mà hệ thống cần
tài nguyên, phương tiện, hoặc những nhóm xác định mô tả thông tin về nó.
chức năng người dùng Ví dụ: toà nhà, kho, văn phòng, chi nhánh, đại lý,…
Ví dụ: đơn vị, bộ phận, phòng ban, chức danh,… Lớp sự vật hữu hình và thiết bị: các đối tượng
Lớp con người (people): lớp con người thể hiện vật lý hoặc các nhóm của đối tượng hữu hình mà có
các vai trò khác nhau của người dùng trong việc thể cảm nhận trực quan và các thiết bị mà hệ thống
tương tác với hệ thống. Những đối tượng này tương tác.
thường là người dùng hệ thống hoặc những người Ví dụ: xe hơi, máy bay, … là các sự vật hữu hình; thiết bị
không sử dụng hệ thống nhưng thông tin về họ cảm ứng nhiệt là một lớp thiết bị.
được lưu trữ bởi hệ thống
Ví dụ: Sinh viên, khách hàng, giáo viên, nhân viên,…
UML/NN 33 UML/NN 34
Các lớp sự kiện: GiaoDịch Các lớp sự vật hữu hình và thiết bị
MáyATM ThẻATM
NgânHàng
Các lớp tổ chức:
UML/NN 35 UML/NN 36
9
4. Tiếp cận theo phân tích hoạt động usecase Ví dụ: hệ thống thư viện
Ví dụ 1 Ví dụ 3
: KháchHàngNgânHàng : MáyATM : TàiKhoản
Phân tích use case “Giải quyết PIN không hợp Phân tích use Đưa vào thẻ ATM
Yêu cầu PIN
lệ”. Các hoạt động khách hàng có thể thực hiện case “Rút tiền”
với hệ thống:
Nhập mã PIN
Kiểm tra mã PIN
Mã PIN hợp lệ
Đưa vào thẻ ATM Yêu cầu số tiền
Nhập số tiền
Nhập mã PIN Xử lý giao tác rút
Rút thẻ ATM Giao tác thành công
Phân phối tiền mặt
Yêu cầu lấy thẻ
Lấy thẻ
Yêu cầu tiếp tục
Kết thúc
In hoá đơn
UML/NN 39 UML/NN 40
10
Nội dung Xác định mối kết hợp association
5.1 Các tiên đề trong thiết kế Hướng dẫn xác định mối kết hợp:
5.2 Hướng tiếp cận trong xác định lớp Một sự phụ thuộc giữa hai hay nhiều lớp có thể
thiết lập thành mối kết hợp. Mối kết hợp thường
5.3 Xác định mối quan hệ giữa các lớp
tương ứng với một động từ hoặc cụm giới từ như
5.4 Xác định thuộc tính và hành vi của lớp là thành phần của, làm việc cho, chứa
trong, …
Một tham chiếu từ một lớp đến một lớp khác là
một mối kết hợp.
UML/NN 41 UML/NN 42
UML/NN 43 UML/NN 44
11
…Các mối kết hợp… …Các mối kết hợp…
Mối kết hợp truyền thông, liên lạc Mối kết hợp phản thân: là mối quan hệ
(communication): đặt tới, trao đổi với, gởi được thiết lập giữa một đối tượng của một
cho, tiếp nhận từ,… lớp với một đối tượng khác cũng thuộc lớp
đó.
Đơn Hàng Đặt tới Nhà CCấp Nhân Viên Thành Phần
UML/NN 45 UML/NN 46
Ví dụ: hệ thống ATM Loại bỏ các mối kết hợp không cần thiết
KháchHàng MáyATM
Của
1..n
Có 0..n
TàiKhoản GiaoDịch
1
UML/NN 47 UML/NN 48
12
…Loại bỏ các mối kết hợp không cần thiết Xác định bản số cho mối kết hợp: (min, max)
a..* (a là hằng)
kết hợp suy diễn hoặc bắc cầu)
UML/NN 49 UML/NN 50
Ví dụ Hệ thống ATM
NgânHàng 1
1
Thuộc về
Là thành phần của Thuộc
Cầu Thủ 1..* Đội Bóng
1..* 1..*
KháchHàng MáyATM
1 1
Phòng Chứa trong 1 Toà Nhà
2..* Của
1..n 1..*
Có 0..n
1..* TàiKhoản 0..* GiaoDịch
Đặt tới 1 1
Đơn Hàng 1 Nhà CCấp
0..*
UML/NN 51 UML/NN 52
13
Lớp kết hợp (Association class) Lớp kết hợp
Hoá Đơn 0..* Sản Phẩm Hoá Đơn 0..* Sản Phẩm
1..* 1..*
14
… Xác định mối quan hệ … … Xác định mối quan hệ …
Nâng cấp mối kết hợp:
Nhân viên Xác định mối kết hợp tổng quát – chuyên biệt
(generalization):
Tiếp cận bottom-up:
Tìm kiếm trong các lớp để xác định xem có các
Nhân Viên VP Công Nhân thuộc tính và phương thức giống nhau. Sau đó
chúng ta có thể gom nhóm và đưa các thuộc
tính và phương thức chung này lên một lớp
tổng quát (trừu tượng)
Trưởng Phòng Thư Ký NV Bán Hàng
Tạo mối kết hợp tổng quát hoá từ các lớp này
UML/NN 57 UML/NN 58
Chứng từ
Đối Tác
Hàng hoá
UML/NN 59 UML/NN 60
15
… Xác định mối quan hệ … … Xác định mối quan hệ …
Xác định sự tương quan:
Đối Tác Khách Hàng
(complete, disjoint)
(incomlete, disjoint)
Lớp A (incomplete)
UML/NN 61 UML/NN 62
Lớp A Lớp B
Lớp C
UML/NN 63 UML/NN 64
16
… Xác định mối quan hệ … … Xác định mối quan hệ …
Xác định mối kết hợp thành phần (a-part-
of, aggregration) Vật chứa: một đối tựơng vật lý chứa
Tập hợp: một đối tượng vật lý được hình đựng các thành phần nhưng không được
thành từ các đối tượng vật lý thành phần cấu tạo bởi các thành phần
khác
Toà Nhà Đơn Hàng Xe Ô Tô
Container Phòng Học
1 1 1 1 1
1 0..1 0..1 0..1
1 4..8 1
1..* 1..*
Thùng Xe Bánh Xe Động Cơ 0..* 0..* 0..1
Phòng Dòng HĐ 1..*
Hàng Hoá Bàn Ghế Projector
UML/NN 65 UML/NN 66
1..*
KháchHàng MáyATM
Lớp khái niệm
1 1
Phòng Ban Đội Bóng
Của
1 1 1..n 1..*
Có 0..n
1..* TàiKhoản 0..* GiaoDịch
Lớp vật lý 0..* 1 1
0..*
Nhân Viên Cầu Thủ
UML/NN 67 UML/NN 68
17
Nội dung Xác định thuộc tính
5.1 Các tiên đề trong thiết kế Câu hỏi:
5.2 Hướng tiếp cận trong xác định lớp Thông tin gì về đối tượng sẽ được quản lý ?
5.3 Xác định mối quan hệ giữa các lớp Nguyên tắc:
Tên: danh từ; cụm danh từ
5.4 Xác định thuộc tính và hành vi của Đơn giản: chỉ dùng đủ thuộc tính để diễn đạt
lớp trạng thái đối tượng ở giai đoạn phân tích
(thuộc tính sẽ được bổ sung chi tiết hơn ở các
giai đoạn tiếp theo)
Không quá quan tâm về việc phải khám phá
hết thuộc tính
UML/NN 69 UML/NN 70
như sau: 1
của
1 GiaoDịch
TàiKhoản giaoDịchID
sốTàiKhoản có ngàyGiaoDịch
KháchHàng loạiTàiKhoản
thờiGianGiaoDịch
sốDư 1 0..n loạiGiaoDịch
tênKháchHàng sốTiền
sốDư
họKháchHàng
mãPIN
sốThẻ
GiaoDịchRút GiaoDịchGởi
UML/NN 71 UML/NN 72
18
Xác định method Xác định method qua phân tích use case
UML/NN 73 UML/NN 74
Ví dụ… …Ví dụ
: KháchHàng : MáyATM : TàiKhoản : KháchHàng : MáyATM : TàiKhoản
TàiKhoản TàiKhoản
sốTàiKhoản sốTàiKhoản
loạiTàiKhoản loạiTàiKhoản
sốDư sốDư
rútTiền() rútTiền()
gửiTiền()
xemTàiKhoản()
Use case Rút Tiền Use case Rút Tiền
UML/NN 75 UML/NN 76
19
ATM: method Tinh chế thuộc tính
NgânHàng
MáyATM
Kiểu thuộc tính
KháchHàng
tênKháchHàng
họKháchHàng
có địaChỉ
trạngThái Thuộc tính đơn trị
mãPIN sốTiềnHiệnTại
sốThẻ
khởiĐộngMáy() Thuộc tính đa trị: có thể dùng các cấu trúc, list,
đóngMáy()
kiểmTraMậtKhẩu()
1 array, bag để khai báo cài đặt.
của Ví dụ: thuộc tính sốĐiệnThoại của lớp NhânViên có
1
TàiKhoản
GiaoDịch thể là đa trị
giaoDịchID
sốTàiKhoản
loạiTàiKhoản
ngàyGiaoDịch
thờiGianGiaoDịch địaChỉ[3]: String
sốDư loạiGiaoDịch
rútTiền()
1 0..n sốTiền địaChỉ[1..3]: String
sốDư
gởiTiền()
xemTàiKhoản()
UML/NN 77 UML/NN 78
GiaoDịchRút GiaoDịchGởi
Ghi chú: phạm vi mặc định của các thuộc tính là cục bộ
UML/NN 79 UML/NN 80
20
Hiển thị method Thiết kế nội dung method
<phạm vi> <tên> <(danh sách tham số)>:
<kiểu trả về>
Các method được xác
Các method đa số là các method có phạm vi định trong giai đoạn
phân tích
toàn cục
Ví dụ: Thiết kế bằng
việc phân tích
+get_Tên(): String sơ đồ use case
UML/NN 81 UML/NN 82
: MáyATM : KháchHàng
soTien > soDu
maTraVe = "So tien
KiểmTraMậtKhẩu(vSốThẻ, vPIN) rut vuot qua so du"
soTien <= soDu
vKháchHàng = lấy_KháchHàng(sốThẻ, vPIN) soDu = soDu -
soTien
Hiển thị thông báo PIN không hợp lệ, vui lòng nhập lại
Các method mới được phát hiện
#capNhatTaiKhoan(so
Cung cấp quyền truy cập cho người dùng TaiKhoan, soDu) Cap nhat lai so du tai khoan
Method mới được phát hiện
vKháchHàng
#taoGiaoTac("Rut", Tao mot giao tac rut tien cho tai khoan
soTien, soDu)
UML/NN 83 UML/NN 84
21
Hệ thống ATM NgânHàng
+kếtNối()
+đóngKếtNối()
KháchHàng
#tênKháchHàng:String MáyATM
#họKháchHàng:String #địaChỉ:String
#mãPIN::String #trạngThái:String
#sốThẻ:String #sốTiềnHiệnTại:float
#tàiKhoản:TàiKhoản
+khởiĐộngMáy()
+kiểmTraMậtKhẩu() +đóngMáy()
#lấy_KháchHàng() #cậpNhậtSốTiền()
1 #tắtMáy()
của
1
GiaoDịch
TàiKhoản
#sốTàiKhoản:String #giaoDịchID:String
#loạiTàiKhoản:String có #ngàyGiaoDịch:Date
#sốDư:float #thờiGianGiaoDịch:Time
#giaoTác:GiaoTác #loạiGiaoDịch:String
1 0..n #sốTiền:float
#kháchHàng:KháchHàng
#sốDư:float
+gửiTiền()
+rútTiền() +gánThôngTinGiaoDịch()
#cậpNhậtTàiKhoản()
#tạoGiaoTác()
GiaoDịchRút GiaoDịchGởi
UML/NN 85
22