You are on page 1of 22

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
Chương 6 „ 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
Nguyên lý thiết kế,
Phương pháp xác định lớp

UML/NN 1
UML/NN 2

6.1. Các tiên đề trong Thiết kế Coupling (Liên kết)


„ 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ế
A B D

Coupling mạnh

C
Coupling yếu

Tính độc lập của các thành


Tinh độc lập của các thành
phần cao
phần không cao
UML/NN 3 UML/NN 4

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

Stamp coupling Control 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 „ Control coupling: một thành phần gởi
bộ cấu trúc 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
„ Ví dụ:
integer Operation_A() coupling.
{
int x,y; + sub(x, dk)
+ A()
Class_B cB; Class_C c; {
{ =1 =2
…. int x = 1; dk
y = cB.Operation_B(c); sub(x, dk)
… …
} }
}
UML/NN 7 UML/NN 8

2
Common và Content coupling Mức độ liên kết

„ Common couping: hai thành phần cùng


tham chiếu đến một cấu trúc toàn cục Tên coupling Xếp hạng phụ thuộc
(hoặc biến toàn cục) thì có liên hệ gọi là Data coupling Rất thấp
Common coupling. Stamp coupling Thấp
Control coupling Trung bình
„ Content coupling: nếu một thành phần
Common coupling Cao
tham khảo trực tiếp đến nội dung scủa Content coupling Rất cao
một thành phần khác thì được gọi là
content coupling.

UML/NN 9 UML/NN 10

Coupling kế thừa Tiên đề 2: tiên đề thông tin


„ Giảm tối đa thông tin các đối tượng thiết kế
„ Là coupling giữa lớp tổng quát và lớp
Tách thành nhiều đối tượng đơn giản hơn
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 „ 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

Hàng hoá Hoá đơn

Hoá đon
Thẻ thư viện
Hàng hoá

UML/NN 17 UML/NN Thẻ thư viện 18

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

Tiếp cận theo cụm danh từ (noun phrase) ATM

Tài khoản Bao thư


Số dư tài khoản Bốn ký số
Số tiền Ngân quỹ
X ác đị
Xác ịnh cá
đđịnh ác danh
ccác danh Danh
Danh từừ, cụ
ttừ, ụm
ccụm Tiến trình đăng nhập Tiền
ttừ,
ừ, cụ ụm danh
ccụm danh từừ
ttừ danh
danh từ ừ
ttừ Thẻ ATM PIN

Mô tảả use
ttả use case,
case,
yêu
yêu cầ ầu
ccầu Máy ATM PIN không hợp lệ
Ngân hàng Thông điệp
Danh
Danh từ ừ, cụ
ttừ, ụm
ccụm Khách hàng ngân hàng Mật khẩu
Đ ồng nhấ
Đồng nhất cá
nhất ác
ccác Loạ
Lo ại bỏ
Loại ỏ ccác
bbỏ ác danh
danh
class
class trù
trùng nghĩ
trùng ngh
nghĩaĩa danh
danh từừứ
ttừ ng viên
ứng viên ttừ
ừ mô
mô tả ả class
ttả class giả
giả
giả Thẻ Mã PIN
Tiền mặt Mẫu tin
Khách hàng Bước
Loạ
ại cáác danh Danh
Danh sáách cá
ssách ác
ccác Tài khoản khách hàng Hệ thống
Lo
Loại ccác danh từ ừ
ttừ Loạ
Loại cá
Loại ác class
ccác class
thuộ
thu ộc tí
thuộc ính
ttính không
không có
ccóóm ục tiêu
mục tiêu class
class VND Giao dịch
Lịch sử giao dịch

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

Tài khoản Bao thư


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

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

ATM: các lớp 3. Tiếp cận theo phân loại


„ Máy ATM: cung cấp một giao diện tới ngân hàng „ Tiếp cận theo phân loại: phân loại các lớp của
„ Thẻ ATM: cung cấp một khách hàng với một khoá hệ thống dựa trên các mẫu chung.
tới một tài khoản
„ Lớp khái niệm (concept): Một khái niệm là một
„ 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. 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 để
„ 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ý tổ chức hoặc để lưu trữ các hoạt động và các trao
các giao dịch tài khoản. đổi về mặt quản lý.
„ Tài khoản: nó mô hình hoá một tài khoản của „ 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…
khách hàng và cung cấp các dịch vụ về tài khoản
cho khách hàng „ Lớp sự kiện (event):
„ Giao dịch: mô tả một giao tác của khách hàng khi „ Lớp sự kiện là các điểm thời gian cần được lưu trữ. Các sự
sử dụng thẻ ATM. Một giao tác được lưu trữ với thời việc xảy ra tại một thời điểm, hoặc một bước trong một dãy
gian, ngày, loại, số tiền, và số dư tuần tự các bước
„ Ví dụ: đăng ký, hoá đơn, đơn hàng, phiếu nhập,…
UML/NN 31 UML/NN 32

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

Ví dụ: hệ thống ATM Hệ thống ATM


„ Các lớp con người:
„ Các lớp khái niệm: TàiKhoản KháchHàng

„ 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

Đối tượng nào tiếp theo :Đối tượng :Đối tượng


được chuyển giao trách
nhiệm ?

:Hồ sơ độc giả :Sách


Độc giả Thủ thư

Tác nhân Yêu cầu mượn sách
Kiểm tra thẻ
Từ chối thẻ
không hợp lệ
Kiểm tra điều kiện
Đối tượng nào của hệ [Không thoả]Từ chối
thống sẽ trực tiếp tương Hệ thống Cập nhật hồ sơ độc giả
tác với tác nhân?
Kết thúc mô tả kịch bản của use case cho phép Sách gởi đọc giả Cập nhật lại trạng thái sách
xác định tất cả các lớp liên tham gia
Use case Mượn sách
UML/NN 37 UML/NN 38

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

Các mối kết hợp… …Các mối kết hợp…


„ Mối kết hợp vị trí (location): liên kết
„ Mối kết hợp sở hữu: của, có, thuộc,…
tới, thành phần của, làm việc tại, ….
„ Ví dụ:

Làm việc tại Chi Nhánh Là thành phần của


Nhân Viên Cầu Thủ Đội Bóng

Phòng Chứa trong Toà Nhà


Buổi Học Học tại Phòng Học

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

Quản lý Chứa trong


Bản Yêu Cầu Gởi tới Phòng Ban

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

„ 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
NgânHàng Mối kết hợp sở hữu
Thuộc về
lại nó dùng mối kết hợp nhị phân
Thuộc

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)

„ Mối kết hợp trực tiếp dư thừa: là các mối „ 1; 0..1;


kết hợp được định nghĩa trong ngữ nghĩa „ 1..*;
0..*;
của những mối kết hợp khác (còn gọi là mối „

a..* (a là hằng)
kết hợp suy diễn hoặc bắc cầu)
„

Bản Yêu Cầu Gởi tới 1 Phòng Ban


0..* Phiếu đặt hàng 1 0..*

Đặt tới Liên quan


1 0..1
Nhà cung cấp Từ Bản số
Phiếu giao hàng
1 0..*

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..*

Chi Tiết Hoá Đơn Chi Tiết Hoá Đơn


sốLượng sốLượng
đơnGiá đơnGiá

Sinh Viên 0..* Khoá Học


1..* Chi Tiết Hoá Đơn
Kết Quả 1 sốLượng 0..* Sản Phẩm
Hoá Đơn
điểmTB đơnGiá
1..* 1
xếpLoại
UML/NN 53 UML/NN 54

Xác định mối quan hệ … 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
Hoá đơn
(generalization): Thể hiện quan hệ kế thừa giữa GiaoDịch

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: GiaoDịchRút GiaoDịchGởi
Hoá đơn giao hàng
„ 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ệ 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.
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 55 UML/NN 56

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

đến lớp tổng quát mới xác định

UML/NN 57 UML/NN 58

… Xác định mối quan hệ … … Xác định mối quan hệ …

Chứng từ
Đối Tác

Hoá đơn Đơn đặt hàng


Khách Hàng Nhà CCấp

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)

Khách Hàng Nhà CCấp Khách Quen


(incomplete, disjoint)

(complete, overlapping) Nhân Viên VP


Lớp A1 Lớp A2
(incomplete, overlapping) (incomplete, overlapping)

Trưởng Phòng Thư Ký NV Bán Hàng

UML/NN 61 UML/NN 62

… Xác định mối quan hệ … … Xác định mối quan hệ …


„ Vấn đề đa thừa kế: „ Xác định mối kết hợp thành phần (a-part-
„ Phức tạp trong vấn đề kế thừa of, aggregration)
„ Æ Không nên sử dụng (phiên bản gốc UML „ Đặ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
không đưa vào) „

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
Giáo Viên Nhà Nghiên Cứu

Lớp A Lớp B

Gviên – Nhà NgCứu

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

… Xác định mối quan hệ … Hệ thống ATM

„ Tập hợp – thành viên: một đối tượng 1


khái niệm chứa các thành phần có thể vật 1
NgânHàng
Thuộc
lý hoặc khái niệm Thuộc

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

Ví dụ: Hệ thống ATM ATM: Thuộc tính

„ Lớp Khách Hàng: Phân tích lần lượt tất cả NgânHàng

các use case có liên quan đến lớp Khách


KháchHàng
Hàng như là: “Đăng nhập”, “Xử lý PIN không tênKháchHàng
họKháchHàng
MáyATM
địaChỉ
hợp lệ”. Các thuộc tính của lớp khách hàng mãPIN
sốThẻ
trạngThái
sốTiềnHiệnTại

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

„ Câu hỏi: „ Phân tích các dòng message trong sơ đồ


„ Các đối tượng chịu trách nhiệm xử lý gì về thông tuần tự để xem có thể chuyển một hoạt
tin của nó để cung cấp dịch vụ cho hệ thống? động thành một method không?
„ Nguyên tắc:
„ Nếu có, đặt tên cho method ứng với hoạt
„ Tên: động từ + bổ ngữ
„ Chỉ quan tâm đến các method có phạm vi toàn cục động đó
(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 73 UML/NN 74

Ví dụ… …Ví dụ
: KháchHàng : MáyATM : TàiKhoản : KháchHàng : MáyATM : TàiKhoản

„ lớp TàiKhoản „ Lớp TàiKhoản


Yêu cầu số tiền Yêu cầu số tiền
„ Rút Tiền Nhập số tiền
„ Rút Tiền Nhập số tiền
„ Gửi Tiền Xử lý giao tác rút „ Gửi Tiền Xử lý giao tác gửi
Giao tác thành công Giao tác thành công
„ Xem thông Phân phối tiền mặt „ Xem thông Tin Tài
Tin Tài Khoản Yêu cầu lấy thẻ Khoản Yêu cầu lấy thẻ
Lấy thẻ Lấy thẻ
Yêu cầu tiếp tục Yêu cầu tiếp tục
Kết thúc Kết thúc

In hoá đơn In hoá đơ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()

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 GiaoDịchRút GiaoDịchGởi

UML/NN 77 UML/NN 78

Hiển thị thuộc tính ATM : thuộc tính lớp

„ <Phạm vi> <tên> : <kiểu thuộc tính> = NgânHàng

<giá trị khởi tạo> KháchHàng


#tênKháchHàng:String MáyATM
+ : toàn cục
#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
„ # : bảo vệ Các thuộc tính
1
„ - : cục bộ cài đặt liên kết 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:GiaoDịch #loạiGiaoDịch:String
1 0..n #sốTiền:float
#kháchHàng:KháchHàng
#sốDư:float

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

„ +get_SốTàiKhoản(vtàiKhoản : TàiKhoản): String


Các method được thiết kế Các method vừa phát hiện

UML/NN 81 UML/NN 82

ATM: kiểmTraMậtKhẩu ATM: rútTiền


KháchHàng::+ kiểmTraMậtKhẩu(sốThẻ:String,
„
„ TàiKhoản::+ rútTiền(sồTiền: foat )
vPIN:String): vkháchHàng: KháchHàng

: 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

You might also like