Tải bản đầy đủ (.pdf) (22 trang)

Chương 6: Nguyên lý thiết kế, Phương pháp xác định lớp pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (617.48 KB, 22 trang )

1
UML/NN 1
Chương 6
Nguyên lý thiết kế,
Phương pháp xác định lớp
UML/NN 2
Nội dung
 6.1 Các tiên đề trong thiết kế
 6.2 Hướng tiếp cận trong xác định lớp
 6.3 Xác định mối quan hệ giữa các lớp
 6.4 Xác định thuộc tính và hành vi của lớp
UML/NN 3
6.1. Các tiên đề trong Thiết kế
 Tiên đề 1: tiên đề độc lập
 Duy trì tính độc lập của các thành phần thiết kế
Tinh độc lập của các thành
phần không cao
Tính độc lập của các thành
phần cao
UML/NN 4
Coupling (Liên kết)
A
B
C
D
Coupling mạnh
Coupling yếu
2
UML/NN 5
Hai loại coupling
 Hai loại coupling: tương tác và kế thừa


 Coupling tương tác: chia thành 5 loại
 Data coupling
 Stamp coupling
 Control coupling
 Common coupling
 Content coupling
 Coupling kế thừa
UML/NN 6
Data coupling
 Liên kết giữa các thành phần là dữ liệu
nguyên tố hoặc phức hợp
 Ví dụ:
Class_A
+ Operation_A () : Integer
Class_B
+ Operation_B (Integer Para_1) : Integer
integer
Operation_A()
{
int x,y;
Class_B cB;
….
y = cB.Operation_B(x);

}
UML/NN 7
Stamp coupling
 Stamp coupling: liên kết giữa hai thành
phần là một phần của cấu trúc hoặc toàn
bộ cấu trúc

 Ví dụ:
integer Operation_A()
{
int x,y;
Class_B cB; Class_C c;
….
y = cB.Operation_B(c);

}
UML/NN 8
Control coupling
 Control coupling: một thành phần gởi
các yếu tố điều khiển tới một thành phần
khác thì hai thành phần này có control
coupling.
+ A()
{
int x = 1;
sub(x, dk)

}
+ sub(x, dk)
{
}
dk
=1
=2
3
UML/NN 9
Common và Content coupling

 Common couping: hai thành phần cùng
tham chiếu đến một cấu trúc toàn cục
(hoặc biến toàn cục) thì có liên hệ gọi là
Common coupling.
 Content coupling: nếu một thành phần
tham khảo trực tiếp đến nội dung scủa
một thành phần khác thì được gọi là
content coupling.
UML/NN 10
Mức độ liên kết
Rất thấp
Thấp
Trung bình
Cao
Rất cao
Data coupling
Stamp coupling
Control coupling
Common coupling
Content coupling
Xếp hạng phụ thuộc
Tên coupling
UML/NN 11
Coupling kế thừa
 Là coupling giữa lớp tổng quát và lớp
chuyên biệt trong cấu trúc phân cấp: Liên
kết giữa lớp tổng quát và lớp chuyên biệt
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á
UML/NN 12
Tiên đề 2: tiên đề thông tin
 Giảm tối đa thông tin các đối tượng thiết kế
 Tách thành nhiều đối tượng đơn giản hơn
 Tách thành cấu trúc phân cấp kế thừa
Đối tượng phức tạp
Nhiều đối tượng đơn giản
4
UML/NN 13
Ví dụ
LậpHoáĐơn()
Hoá Đơn
InHoáĐơn()
Hoá Đơn
Máy In
LậpHoáĐơn()
InHoáĐơn()
UML/NN 14
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
 5.3 Xác định mối quan hệ giữa các lớp
 5.4 Xác định thuộc tính và hành vi của lớp
UML/NN 15
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ụ

2. Tiếp cận theo cụm danh từ
3. Tiếp cận theo phân loại
4. Tiếp cận theo phân tích hoạt động use case
UML/NN 16
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
xem có nhu cầu quản lý thông tin về thực
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
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
5
UML/NN 17
Ví dụ:
Hành lý
NVL
Hàng hoá
Hành lý
NVL
Hàng hoá
UML/NN 18
…Tiếp cận theo thực thể nghiệp vụ
 Đối với thực thể thông tin:
 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 phân tích
 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
Hoá đon
Hoá đơn
Thẻ thư viện
Thẻ thư viện
UML/NN 19
Ví dụ
HO
HO
Á
Á
Đ
Đ
ƠN
ƠN
Số HĐ:…… Ngày: /…/…
Khách hàng: ……………………
Địa chỉ:…………………………
Người lập:………………………
2000
3000

Đơn
giá
100
1000

Số
lượng

Cái
Kg

ĐVT
H1
H7

Tên
hàng
00
1
00
4


số
Tổng trị giá: ………
Hoá đơn
Khách hàng
Hàng
Chi tiết HĐ
UML/NN 20
Worker
Nhân viên bán hàng
Nhân viên quản lý
Thủ kho
Nhân viên
Độc giả
Đọc giả
Nhà CC

Nhà CCấp
6
UML/NN 21
Ví dụ: Hóa đơn
Khách hàng
NgườI quản lý
Hồ sơ khách hàng
Hoá đơn
Thẻ khách hàng thân thiết
0 n 1
1
0 n 0 n 0 n
1
1
Khách hàng
Hoá đơn
Thẻ KHTT
0 1
1
1
1 n
UML/NN 22
2. Tiếp cận theo cụm danh từ
 Đề xuất bởi Rebecca Wirfs-Brock, Brian
Wilkerson, và Lauren Wiener
 Ý tưởng: xác định các lớp thông qua việc đọc
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
các cụm danh từ
Class không

thích hợp
(irrelevant)
Class mờ
(fuzzy class)
Class thích hợp
(relevant class)
UML/NN 23
Tiếp cận theo cụm danh từ (noun phrase)
Mô tả use case,
yêu cầu
Mô t
Mô t


use case,
use case,
yêu c
yêu c


u
u
Xác định các danh
từ, cụm danh từ
X
X
á
á
c đ
c đ



nh c
nh c
á
á
c danh
c danh
t
t


, c
, c


m danh t
m danh t


Danh từ, cụm
danh từ
Danh t
Danh t


, c
, c



m
m
danh t
danh t


Loại bỏ các danh
từ mô tả class giả
Lo
Lo


i b
i b


c
c
á
á
c danh
c danh
t
t


mô t
mô t



class gi
class gi


Danh từ, cụm
danh từứng viên
Danh t
Danh t


, c
, c


m
m
danh t
danh t




ng viên
ng viên
Đồng nhất các
class trùng nghĩa
Đ
Đ



ng nh
ng nh


t c
t c
á
á
c
c
class tr
class tr
ù
ù
ng ngh
ng ngh
ĩ
ĩ
a
a
Danh sách các
class
Danh s
Danh s
á
á
ch c
ch c
á
á

c
c
class
class
Loại các danh từ
thuộc tính
Lo
Lo


i c
i c
á
á
c danh t
c danh t


thu
thu


c t
c t
í
í
nh
nh
Loại các class
không có mục tiêu

Lo
Lo


i c
i c
á
á
c class
c class
không c
không c
ó
ó
m
m


c tiêu
c tiêu
UML/NN 24
ATM
Bao thư
Bốn ký số
Ngân quỹ
Tiền
PIN
PIN không hợp lệ
Thông điệp
Mật khẩu

Mã PIN
Mẫu tin
Bước
Hệ thống
Giao dịch
Lịch sử giao dịch
Tài khoản
Số dư tài khoản
Số tiền
Tiến trình đăng nhập
Thẻ ATM
Máy ATM
Ngân hàng
Khách hàng ngân hàng
Thẻ
Tiền mặt
Khách hàng
Tài khoản khách hàng
VND
7
UML/NN 25
Loại bỏ các lớp không thích hợp
Bao thư
Bốn ký số
Ngân quỹ
Tiền
PIN
PIN không hợp lệ
Thông điệp
Mật khẩu

Mã PIN
Mẫu tin
Bước
Hệ thống
Giao dịch
Lịch sử giao dịch
Tài khoản
Số dư tài khoản
Số tiền
Tiến trình đăng nhập
Thẻ ATM
Máy ATM
Ngân hàng
Khách hàng ngân hàng
Thẻ
Tiền mặt
Khách hàng
Tài khoản khách hàng
VND
UML/NN 26
Đồng nhất các ứng viên trùng lắp
Khách hàng, Khách hàng ngân hàng = Khách hàng
Tài khoản, Tài khoản khách hàng = Tài khoản
PIN, Mã PIN = PIN
Tiền, Ngân quỹ = Ngân quỹ
Thẻ ATM, Thẻ = Thẻ ATM
UML/NN 27
Các lớp còn lại
Bao thư
Bốn ký số

Ngân quỹ
Tiền
PIN
PIN không hợp lệ
Thông điệp
Mật khẩu
Mã PIN
Mẫu tin
Bước
Hệ thống
Giao dịch
Lịch sử giao dịch
Tài khoản
Số dư tài khoản
Số tiền
Tiến trình đăng nhập
Thẻ ATM
Máy ATM
Ngân hàng
Khách hàng ngân hàng
Thẻ
Tiền mặt
Khách hàng
Tài khoản khách hàng
VND
UML/NN 28
Danh từ, cụm danh từ có thể là thuộc tính
 Xác định danh từ, cụm danh từ có thể là thuộc tính:
 Chỉ được sử dụng như là giá trị
 Không có nhiều hơn một đặc trưng riêng, hoặc chỉ

mô tả một đặc trưng của đối tượng khác
 Ví dụ: hệ thống ATM (tiếp tục phân tích)
 Số tiền: Æ một giá trị, không phải một lớp
 Số dư tài khoản: Æ thuộc tính của lớp Tài khoản
 PIN không hợp lệ: Æ một giá trị, không phải một lớp
 Mật khẩu: Æ một thuộc tính (có thể của lớp Khách hàng)
 Lịch sử giao dịch: Æ một thuộc tính (có thể của lớp Giao
dịch)
 PIN: Æ một thuộc tính (có thể của lớp Khách hàng)
8
UML/NN 29
Danh sách danh từ, cụm danh từ còn lại
Bao thư
Bốn ký số
Ngân quỹ
Tiền
PIN
PIN không hợp lệ
Thông điệp
Mật khẩu
Mã PIN
Mẫu tin
Bước
Hệ thống
Giao dịch
Lịch sử giao dịch
Tài khoản
Số dư tài khoản
Số tiền
Tiến trình đăng nhập

Thẻ ATM
Máy ATM
Ngân hàng
Khách hàng ngân
hàng
Thẻ
Tiền mặt
Khách hàng
Tài khoản khách
hàng
VND
UML/NN 30
Loại bỏ các ứng viên
 Loại bỏ các ứng viên không mục tiêu hoặc không
thuộc phạm vi hệ thống:
 Thông điệp
 Hệ thống
 Mẫu tin
 Ngân quỹ
 VND
 Tiền mặt
 Tiến trình đăng nhập
Bao thư
Bốn ký số
Ngân quỹ
Tiền
PIN
PIN không hợp lệ
Thông điệp
Mật khẩu

Mã PIN
Mẫu tin
Bước
Hệ thống
Giao dịch
Lịch sử giao dịch
Tài khoản
Số dư tài khoản
Số tiền
Tiến trình đăng nhập
Thẻ ATM
Máy ATM
Ngân hàng
Khách hàng ngân
hàng
Thẻ
Tiền mặt
Khách hàng
Tài khoản khách
hàng
VND
UML/NN 31
ATM: các lớp
 Máy ATM: cung cấp một giao diện tới ngân hàng
 Thẻ ATM: cung cấp một khách hàng với một khoá
tới một tài khoản
 Khách hàng: một khách hàng là một cá nhân sử
dụng máy ATM, có một tài khoản.
 Ngân hàng: các khách hàng phụ thuộc vào ngân
hàng. Nó là một nơi tập trung các tài khoản và xử lý

các giao dịch tài khoản.
 Tài khoản: nó mô hình hoá một tài khoản của
khách hàng và cung cấp các dịch vụ về tài khoản
cho khách hàng
 Giao dịch: mô tả một giao tác của khách hàng khi
sử dụng thẻ ATM. Một giao tác được lưu trữ với thời
gian, ngày, loại, số tiền, và số dư
UML/NN 32
3. Tiếp cận theo phân loại
 Tiếp cận theo phân loại: phân loại các lớp của
hệ thống dựa trên các mẫu chung.
 Lớp khái niệm (concept): Một khái niệm là một
quan niệm hoặc sự hiểu biết riêng biệt về thế giới.
Lớp khái niệm bao gồm các nguyên lý được dùng để
tổ chức hoặc để lưu trữ các hoạt động và các trao
đổi về mặt quản lý.
 Ví dụ: các lớp khái niệm có thể là: phương pháp, hiệu năng,
mô hình, môn học…
 Lớp sự kiện (event):
 Lớp sự kiện là các điểm thời gian cần được lưu trữ. Các sự
việc xảy ra tại một thời điểm, hoặc một bước trong một dãy
tuần tự các bước
 Ví dụ: đăng ký, hoá đơn, đơn hàng, phiếu nhập,…
9
UML/NN 33
Tiếp cận theo phân loại…
 Lớp tổ chức (organisation): tập hợp con người,
tài nguyên, phương tiện, hoặc những nhóm xác định
chức năng người dùng
 Ví dụ: đơn vị, bộ phận, phòng ban, chức danh,…

 Lớp con người (people): lớp con người thể hiện
các vai trò khác nhau của người dùng trong việc
tương tác với hệ thống. Những đối tượng này
thường là người dùng hệ thống hoặc những người
không sử dụng hệ thống nhưng thông tin về họ
đượ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 34
…Tiếp cận theo phân loại
 Lớp vị trí (place): Các vị trí vật lý mà hệ thống cần
mô tả thông tin về nó.
 Ví dụ: toà nhà, kho, văn phòng, chi nhánh, đại lý,…
 Lớp sự vật hữu hình và thiết bị: các đối tượng
vật lý hoặc các nhóm của đối tượng hữu hình mà có
thể cảm nhận trực quan và các thiết bị mà hệ thống
tương tác.
 Ví dụ: xe hơi, máy bay, … là các sự vật hữu hình; thiết bị
cảm ứng nhiệt là một lớp thiết bị.
UML/NN 35
Ví dụ: hệ thống ATM
 Các lớp khái niệm:
 Các lớp sự kiện:
 Các lớp tổ chức:
TàiKhoản
GiaoDịch
NgânHàng
UML/NN 36
Hệ thống ATM
 Các lớp con người:
 Các lớp sự vật hữu hình và thiết bị

KháchHàng
MáyATM
ThẻATM
10
UML/NN 37
4. Tiếp cận theo phân tích hoạt động usecase
Tác nhân
Hệ thống
Đối tượng nào của hệ
thống sẽ trực tiếp tương
tác với tác nhân?
:Đối tượng
Đối tượng nào tiếp theo
được chuyển giao trách
nhiệm ?

:Đối tượng
Kết thúc mô tả kịch bản của use case cho phép
xác định tất cả các lớp liên tham gia
UML/NN 38
Ví dụ: hệ thống thư viện
Độc giả
Thủ thư
Yêu cầu mượn sách
Kiểm tra thẻ
:Hồ sơ độc giả
Kiểm tra điều kiện
[Không thoả]Từ chối
Cập nhật hồ sơ độc giả
Sách gởi đọc giả

:Sách
Cập nhật lại trạng thái sách
Từ chối thẻ
không hợp lệ
Use case Mượn sách
UML/NN 39
Ví dụ 1
 Phân tích use case “Giải quyết PIN không hợp
lệ”. Các hoạt động khách hàng có thể thực hiện
với hệ thống:
 Đưa vào thẻ ATM
 Nhập mã PIN
 Rút thẻ ATM
UML/NN 40
Ví dụ 3
 Phân tích use
case “Rút tiền”
: KháchHàngNgânHàng : MáyATM : TàiKhoản
Đưa vào thẻ ATM
Yêu cầu PIN
Nhập mã PIN
Kiểm tra mã PIN
Mã PIN hợp lệ
Yêu cầu số tiền
Nhập số tiền
Xử lý giao tác rút
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
11
UML/NN 41
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
 5.3 Xác định mối quan hệ giữa các lớp
 5.4 Xác định thuộc tính và hành vi của lớp
UML/NN 42
Xác định mối kết hợp association
 Hướng dẫn xác định mối kết hợ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
tương ứng với một động từ hoặc cụm giới từ như
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 43
Các mối kết hợp…
 Mối kết hợp vị trí (location): liên kết
tới, thành phần của, làm việc tại, ….
 Ví dụ:
Nhân Viên
Chi Nhánh
Làm việc tại
Buổi Học
Phòng Học

Học tại
UML/NN 44
…Các mối kết hợp…
 Mối kết hợp sở hữu: của, có, thuộc,…
Cầu Thủ Đội Bóng
Là thành phần của
Phòng Toà Nhà
Chứa trong
12
UML/NN 45
…Các mối kết hợp…
 Mối kết hợp truyền thông, liên lạc
(communication): đặt tới, trao đổi với, gởi
cho, tiếp nhận từ,…
Đơn Hàng Nhà CCấp
Đặt tới
Bản Yêu Cầu Phòng Ban
Gởi tới
UML/NN 46
…Các mối kết hợp…
 Mối kết hợp phản thân: là mối quan hệ
được thiết lập giữa một đối tượng của một
lớp với một đối tượng khác cũng thuộc lớp
đó.
Nhân Viên Thành Phần
Quản lý
Chứa trong
UML/NN 47
Ví dụ: hệ thống ATM
MáyATM

NgânHàng
KháchHàng
TàiKhoản GiaoDịch
1

0 n
1 n
1
Của
Mối kết hợp sở hữu
Mối kết hợp sở hữu
Thuộc
Thuộc về
UML/NN 48
Loại bỏ các mối kết hợp không cần thiết
 Mối kết hợp đa phân: là mối kết hợp giữa
ba lớp trở lên, mối kết hợp này phức tạp
trong cách thể hiện Æ Nếu có thể, phát biểu
lại nó dùng mối kết hợp nhị phân
13
UML/NN 49
…Loại bỏ các mối kết hợp không cần thiết
 Mối kết hợp trực tiếp dư thừa: là các mối
kết hợp được định nghĩa trong ngữ nghĩa
của những mối kết hợp khác (còn gọi là mối
kết hợp suy diễn hoặc bắc cầu)
Phiếu đặt hàng
Nhà cung cấp
Phiếu giao hàng
Đặt tới

Liên quan
Từ
0 *
1
0 *
1
0 1
1
UML/NN 50
Xác định bản số cho mối kết hợp: (min, max)
 1; 0 1;
 1 *;
 0 *;
 a * (a là hằng)
Bản Yêu Cầu Phòng Ban
Gởi tới
0 *
1
Bản số
UML/NN 51
Ví dụ
Cầu Thủ Đội Bóng
Là thành phần của
Phòng Toà Nhà
Chứa trong
2 *
1
1 *
1 *
Đơn Hàng Nhà CCấp

Đặt tới
1
0 *
UML/NN 52
Hệ thống ATM
MáyATM
NgânHàng
KháchHàng
TàiKhoản GiaoDịch
1

0 n
1 n
1
Của
Thuộc
Thuộc về
0 *
1
1 *
1
1
1 *
1
1 *
14
UML/NN 53
Lớp kết hợp (Association class)
Hoá Đơn Sản Phẩm
0 *

1 *
Chi Tiết Hoá Đơn
sốLượng
đơnGiá
Sinh Viên Khoá Học
Kết Quả
điểmTB
xếpLoại
0 *
1 *
UML/NN 54
Lớp kết hợp
Hoá Đơn Sản Phẩm
0 *
1 *
Chi Tiết Hoá Đơn
sốLượng
đơnGiá
Hoá Đơn
Sản Phẩm
Chi Tiết Hoá Đơn
sốLượng
đơnGiá
1
1 *
0 *
1
UML/NN 55
Xác định mối quan hệ
 Nâng cấp mối kết hợp:

 Xác định mối kết hợp tổng quát – chuyên biệt
(generalization): Thể hiện quan hệ kế thừa giữa
các lớp và một cấu trúc phân cấp xác định
những dòng kế thừa này
 Tiếp cận top-down:
 Từ một lớp chúng ta tìm kiếm cụm danh từ chứa tên lớp và
tính từ (hoặc danh từ). Đánh giá xem cụm danh từ này có
thể là một trường hợp đặc biệt cần được quản lý trong hệ
thống không
 Tìm kiếm xem có những đặc trưng riêng của lớp
 Xây dựng mối kết hợp chuyên biệt từ lớp này đến lớp ban
đầu
UML/NN 56
…Xác định mối quan hệ …
Hoá đơn
Hoá đơn giao hàng
GiaoDịch
GiaoDịchRút GiaoDịchGởi
Ghi chú: chỉ cần đưa vào các lớp chuyên biệt mà chúng ta xác định được các đặc trưng
riêng (thuộc tính, method, liên kết) của nó trong hệ thống.
15
UML/NN 57
…Xác định mối quan hệ …
Nhân viên
Nhân Viên VP Công Nhân
Trưởng Phòng Thư Ký NV Bán Hàng
UML/NN 58
…Xác định mối quan hệ …
 Nâng cấp mối kết hợp:
 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
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)
 Tạo mối kết hợp tổng quát hoá từ các lớp này
đến lớp tổng quát mới xác định
UML/NN 59
…Xác định mối quan hệ …
Hoá đơn
Đơn đặt hàng
Hàng hoá
Chứng từ
UML/NN 60
…Xác định mối quan hệ …
Khách Hàng
Nhà CCấp
Đối Tác
16
UML/NN 61
…Xác định mối quan hệ …
 Xác định sự tương quan:
Lớp A1 Lớp A2
Lớp A
(complete, disjoint)
(incomplete, disjoint)
(complete, overlapping)
(incomplete, overlapping)

UML/NN 62
…Xác định mối quan hệ …
Khách Hàng
Nhà CCấp
Đối Tác
(incomlete, disjoint)
Nhân Viên VP
Trưởng Phòng Thư Ký NV Bán Hàng
(incomplete, overlapping)
Khách Hàng
Khách Quen
(incomplete)
UML/NN 63
…Xác định mối quan hệ …
 Vấn đề đa thừa kế:
 Phức tạp trong vấn đề kế thừa
 Æ Không nên sử dụng (phiên bản gốc UML
không đưa vào)
Giáo Viên
Nhà Nghiên Cứu
Gviên – Nhà NgCứu
UML/NN 64
…Xác định mối quan hệ …
 Xác định mối kết hợp thành phần (a-part-
of, aggregration)
 Đặc trưng cơ bản
 Tính bắc cầu: Nếu lớp A là một thành phần của lớp B
và lớp B là thành phần của lớp C Æ lớp A là thành
phần của lớp C
 Tính đối xứng: nếu lớp A là thành phần của lớp B thì

lớp B không phải là thành phần của lớp A
Lớp A
Lớp B
Lớp C
17
UML/NN 65
…Xác định mối quan hệ …
 Xác định mối kết hợp thành phần (a-part-
of, aggregration)
 Tập hợp: một đối tượng vật lý được hình
thành từ các đối tượng vật lý thành phần
khác
Toà Nhà
Xe Ô Tô
Phòng
Thùng Xe Bánh Xe Động Cơ
1
1 *
1
1
1
1
4 81
Đơn Hàng
Dòng HĐ
1
1 *
UML/NN 66
…Xác định mối quan hệ …
 Vật chứa: một đối tựơng vật lý chứa

đựng các thành phần nhưng không được
cấu tạo bởi các thành phần
Container
Phòng Học
Hàng Hoá
Bàn Ghế Projector
1
1 *
0 1
0 1
0 1
0 1
0 *0 *
UML/NN 67
…Xác định mối quan hệ …
 Tập hợp – thành viên: một đối tượng
khái niệm chứa các thành phần có thể vật
lý hoặc khái niệm
Phòng Ban
Nhân Viên
1
0 *
Đội Bóng
Cầu Thủ
1
0 *Lớp vật lý
Lớp khái niệm
UML/NN 68
Hệ thống ATM
MáyATM

NgânHàng
KháchHàng
TàiKhoản GiaoDịch
1

0 n
1 n
1
Của
Thuộc
Thuộc
0 *
1
1 *
1
1
1 *
1
1 *
18
UML/NN 69
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
 5.3 Xác định mối quan hệ giữa các lớp
 5.4 Xác định thuộc tính và hành vi của
lớp
UML/NN 70
Xác định thuộc tính
 Câu hỏi:

 Thông tin gì về đối tượng sẽ được quản lý ?
 Nguyên tắc:
 Tên: danh từ; cụm danh từ
 Đơn giản: chỉ dùng đủ thuộc tính để diễn đạt
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 71
Ví dụ: Hệ thống ATM
 Lớp Khách Hàng: Phân tích lần lượt tất cả
các use case có liên quan đến lớp Khách
Hàng như là: “Đăng nhập”, “Xử lý PIN không
hợp lệ”. Các thuộc tính của lớp khách hàng
như sau:
KháchHàng
tênKháchHàng
họKháchHàng
mãPIN
sốThẻ
UML/NN 72
ATM: Thuộc tính
GiaoDịchRút GiaoDịchGởi
MáyATM
địaChỉ
trạngThái
KháchHàng
tênKháchHàng
họKháchHàng

mãPIN
sốThẻ
GiaoDịch
giaoDịchID
ngàyGiaoDịch
thờiGianGiaoDịch
loạiGiaoDịch
sốTiền
sốDư
TàiKhoản
sốTàiKhoản
loạiTàiKhoản
sốDư
1
1
của
0 n1

NgânHàng
sốTiềnHiệnTại
19
UML/NN 73
Xác định method
 Câu hỏi:
 Các đối tượng chịu trách nhiệm xử lý gì về thông
tin của nó để cung cấp dịch vụ cho hệ thống?
 Nguyên tắc:
 Tên: động từ + bổ ngữ
 Chỉ quan tâm đến các method có phạm vi toàn cục
(public), các method có phạm vi cục bộ sẽ được phát

hiện trong giai đoạn thiết kế cài đặt (vd: constructor, ….)
 Các method chịu trách nhiệm về các thao tác lên các
thuộc tính của đối tượng: truy vấn, cập nhật, đọc và ghi
UML/NN 74
Xác định method qua phân tích use case
 Phân tích các dòng message trong sơ đồ
tuần tự để xem có thể chuyển một hoạt
động thành một method không?
 Nếu có, đặt tên cho method ứng với hoạt
động đó
UML/NN 75
Ví dụ…
 lớp TàiKhoản
 Rút Tiền
 Gửi Tiền
 Xem thông
Tin Tài Khoản
: KháchHàng : MáyATM : TàiKhoản
Yêu cầu số tiền
Nhập số tiền
Xử lý giao tác rút
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
TàiKhoản
sốTàiKhoản

loạiTàiKhoản
sốDư
rútTiền()
Use case Rút Tiền
UML/NN 76
…Ví dụ
 Lớp TàiKhoản
 Rút Tiền
 Gửi Tiền
 Xem thông Tin Tài
Khoản
: KháchHàng : MáyATM
: TàiKhoản
Yêu cầu số tiền
Nhập số tiền
Xử lý giao tác gửi
Giao tác thành công
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
TàiKhoản
sốTàiKhoản
loạiTàiKhoản
sốDư
rútTiền()
Use case Rút Tiền
gửiTiền()
xemTàiKhoản()

20
UML/NN 77
ATM: method
GiaoDịchRút GiaoDịchGởi
KháchHàng
tênKháchHàng
họKháchHàng
mãPIN
sốThẻ
kiểmTraMậtKhẩu()
GiaoDịch
giaoDịchID
ngàyGiaoDịch
thờiGianGiaoDịch
loạiGiaoDịch
sốTiền
sốDư
TàiKhoản
sốTàiKhoản
loạiTàiKhoản
sốDư
rútTiền()
gởiTiền()
11
của
0 n
1

NgânHàng
MáyATM

địaChỉ
trạngThái
sốTiềnHiệnTại
khởiĐộngMáy()
đóngMáy()
xemTàiKhoản()
1
Ghi chú
: các method được phát hiện trong giai
đoạn này thường đại diện xử lý cho một use case
UML/NN 78
Tinh chế thuộc tính
 Kiểu thuộc tính
 Thuộc tính đơn trị
 Thuộc tính đa trị: có thể dùng các cấu trúc, list,
array, bag để khai báo cài đặt.
 Ví dụ: thuộc tính sốĐiệnThoại của lớp NhânViên có
thể là đa trị
 địaChỉ[3]: String
 địaChỉ[1 3]: String
UML/NN 79
Hiển thị thuộc tính
 <Phạm vi> <tên> : <kiểu thuộc tính> =
<giá trị khởi tạo>
 + : toàn cục
 # : bảo vệ
 -: cục bộ
Ghi chú: phạm vi mặc định của các thuộc tính là cục bộ
UML/NN 80
GiaoDịchRút GiaoDịchGởi

KháchHàng
#tênKháchHàng:String
#họKháchHàng:String
#mãPIN::String
#sốThẻ:String
GiaoDịch
#giaoDịchID:String
#ngàyGiaoDịch:Date
#thờiGianGiaoDịch:Time
#loạiGiaoDịch:String
#sốTiền:float
#sốDư:float
MáyATM
#địaChỉ:String
#trạngThái:String
TàiKhoản
#sốTàiKhoản:String
#loạiTàiKhoản:String
#sốDư:float
1
1
của
0 n1

NgânHàng
#tàiKhoản:TàiKhoản
#giaoTác:GiaoDịch
#kháchHàng:KháchHàng
#sốTiềnHiệnTại:float
Các thuộc tính

cài đặt liên kết
ATM : thuộc tính lớp
21
UML/NN 81
Hiển thị method
 <phạm vi> <tên> <(danh sách tham số)>:
<kiểu trả về>
 Các method đa số là các method có phạm vi
toàn cục
 Ví dụ:
 +get_Tên(): String
 +get_SốTàiKhoản(vtàiKhoản : TàiKhoản): String
UML/NN 82
Thiết kế nội dung method
Các method được xác
định trong giai đoạn
phân tích
Thiết kế bằng
việc phân tích
sơ đồ use case
Các method được thiết kế Các method vừa phát hiện
UML/NN 83
ATM: kiểmTraMậtKhẩu
 KháchHàng::+ kiểmTraMậtKhẩu(sốThẻ:String,
vPIN:String): vkháchHàng: KháchHàng
: KháchHàng: MáyATM
KiểmTraMậtKhẩu(vSốThẻ, vPIN)
vKháchHàng = lấy_KháchHàng(sốThẻ, vPIN)
Hiển thị thông báo PIN không hợp lệ, vui lòng nhập lại
Cung cấp quyền truy cập cho người dùng

vKháchHàng
Method mới được phát hiện
UML/NN 84
ATM: rútTiền
 TàiKhoản::+ rútTiền(sồTiền: foat )
maTraVe = "So tien
rut vuot qua so du"
soDu = soDu -
soTien
#capNhatTaiKhoan(so
TaiKhoan, soDu)
#taoGiaoTac("Rut",
soTien, soDu)
Cap nhat lai so du tai khoan
Tao mot giao tac rut tien cho tai khoan
soTien > soDu
soTien <= soDu
Các method mới được phát hiện
22
UML/NN 85
Hệ thống ATM
GiaoDịchRút GiaoDịchGởi
KháchHàng
#tênKháchHàng:String
#họKháchHàng:String
#mãPIN::String
#sốThẻ:String
GiaoDịch
#giaoDịchID:String
#ngàyGiaoDịch:Date

#thờiGianGiaoDịch:Time
#loạiGiaoDịch:String
#sốTiền:float
#sốDư:float
MáyATM
#địaChỉ:String
#trạngThái:String
TàiKhoản
#sốTàiKhoản:String
#loạiTàiKhoản:String
#sốDư:float
1
1
của
0 n1

NgânHàng
#tàiKhoản:TàiKhoản
#giaoTác:GiaoTác
#kháchHàng:KháchHàng
#sốTiềnHiệnTại:float
+kiểmTraMậtKhẩu()
#lấy_KháchHàng()
+khởiĐộngMáy()
+đóngMáy()
+kếtNối()
+đóngKếtNối()
#tắtMáy()
+gửiTiền()
+rútTiền()

#cậpNhậtTàiKhoản()
#tạoGiaoTác()
+gánThôngTinGiaoDịch()
#cậpNhậtSốTiền()

×