Professional Documents
Culture Documents
ương
Chươ
Ch THIẾT KẾ
ng 9 THIẾ KẾ USE CASE Kiếến trúc ba tầ
Ki tầng (tree-
(tree-layer)
Kiến trúc ba tầng (tree-
(tree-layer) Kiến trúc client – server
Thiết kế các lớp tầng nghiệp vụ
Thiết kế các lớp tầng truy cập dữ liệu
Thiết kê các lớp tầng giao diện
Giao diện Dữ liệu
Mô tả hiện thực hoá nội dung thiết kế use case
Giao diện cài đặt luôn xử lý nghiệp vụ trực
tiếp trong giao diện
Æ Tạo ra một sự phụ thuộc rất lớn giữa giao
diện và CSDL và do đó, rất khó để cải tiến,
bảo trì và tái sử dụng
1 2
Kiếến trúc ba tầ
Ki tầng (tree-
(tree-layer) Kiếến trúc ba tầ
Ki tầng (tree-
(tree-layer)
Kiến trúc ba tầng (tree
(tree--layer) Kiến trúc ba tầng (tree-
(tree-layer)
Tạo ra sự độc lập giữa giao diện và dữ liệu bằng Trả lời tương tác người dùng: chuyển
cách cô lập các chức năng của giao diện với các dịch những hành động của người dùng tới
một tìnhhiện
huống
cácxử lý phù
táchợp
chức năng tác nghiệp (business), và cô lập các chức Thực giao xử lý liên quan
Hiển
đến thị các đối
nghiệp tượng
vụ mà khôngtác quan
nghiệp : trình
tâm đến
năng tác nghiệp với các chi tiết về truy cập CSDL bày một
User interface layer hiển thịhình
chúngảnhnhư
tốt nhất
ốUser các đối
ốVàtượng
ấinterface
thế nào? CSDL
Ánh xạ các đối tượng đại diện các đối tượng hữu tác nghiệp tới
được lấy ở đâu? người dùng
layertrong một giao
diện
hình trong thực tế nhưng hoàn toàn độc lập với cách Business layer Business layer
Chuyển dịch yêu cầu: chuyển dịch tất cả
thức mà các đối tượng này trình bày tới người dùng các yêu cầu liên quanData
đếnlayer
dữ liệu từ tầng
Data layer
hoặc là với cách mà dữ liệu của nó được lưu trữ vật tác nghiệp đến một phương thức truy cập
lý trong CSDL CSDL
dữ liệu thích hợp (dạng SQL, truy xuất
Middleware
file,…)
Chuyển dịch kết System
quả software
3 4
1
4/27/2010
Kiếến trúc ba tầ
Ki tầng (tree-
(tree-layer) ương
Chươ
Ch THIẾT KẾ
ng 9 THIẾ KẾ USE CASE
Ý tưởng thiết kế Kiến trúc ba tầng (tree-
(tree-layer)
diện
Giao diệ
Thiết kế các lớp tầng nghiệp vụ
Giao diện
Thiết kế các lớp tầng truy cập dữ liệu
Xử lý
Thiết kê các lớp tầng giao diện
Mô tả hiện thực hoá nội dung thiết kế use case
Đối tượng mô tả
thế giới thực Truy cập dữ liệu
5 6
Thiếết kế
Thi kế lớp tầ
tầng nghiệ
nghiệp vụ
vụ Thiếết kế
Thi kế lớp tầ
tầng nghiệ
nghiệp vụ
vụ
Nguyên tắc:
Có thể chuyển đổi một lớp tầng nghiệp vụ
Tầng giao diện thành nhiều lớp ứng với những mục đích
khác nhau (*)
Tầngg nghiệp
g p vụ
Hệ thống thực tế
Lớp phân tích Lớp điều khiển Lớp xử lý Lớp cấu trúc
2
4/27/2010
Thiếết kế
Thi kế lớp tầ
tầng nghiệ
nghiệp vụ
vụ Thiếết kế
Thi kế lớp tầ
tầng truy cậ
cập dữ
dữ li
liệệu
Ví dụ: các lớp tầng nghiệp vụ hệ thống ATM Xác định các đối tượng lưu trữ (persistent)
NgânHàng
+kếtNối()
+đóngKếtNối() Chuyển đổi sang mô hình quan hệ
KháchHàng
#tênKháchHàng:String
#họKháchHàng:String
#mãPIN::String
MáyATM
#địaChỉ:String
Xác định các lớp tầng truy cập dữ liệu
# ốThẻ St i
#sốThẻ:String #trạngThái: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
TàiKhoản GiaoDịch
#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 9 10
định các đố
Xác đị đối tượ
tượng lưu trữ
ng lư trữ định các đố
Xác đị đối tượ
tượng lưu trữ
ng lư trữ
Các loại dữ liệu tồn tại trong một hệ thống: Các loại dữ liệu tồn tại trong một hệ thống:
Là kết quả tạm thời để đánh giá một biểu thức
Các biến trong quá trình thực thi một thủ tục (các Dữ liệu
tạm thời
tham số và biến trong phạm vi cục bộ) (transient) Các lớp transient
Các biến toàn cụcụ và các biết cấpppphát một
ộ cách tự
ự
động
Dữ liệu tồn tại giữa các lần thực thi một chương trình
Dữ liệu
Dữ liệu tồn tại giữa các phiên bản của một chương lâu dài
trình (persistent
Dữ liệu tồn tại vượt ngoài phạm vi sống của một )
chương trình
11 12
3
4/27/2010
định các đố
Xác đị đối tượ
tượng lưu trữ
ng lư trữ Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ
Các lớp persistent của hệ thống ATM
KháchHàng Các lớp persistent
#tênKháchHàng:String
#họKháchHàng:String
#mãPIN::String
#sốThẻ:String
#tàiKhoản:TàiKhoản
1
1
GiaoDịch
TàiKhoản
#giaoDịchID:String
#sốTàiKhoản:String #ngàyGiaoDịch:Date
#loạiTàiKhoản:String có
#thờiGianGiaoDịch:Time
#sốDư:float #loạiGiaoDịch:String
#giaoTác:GiaoDịch 1 0..n #sốTiền:float
#kháchHàng:KháchHàng
#sốDư:float
Dữ liệu luận lý
(complete, disjoint)
GiaoDịchRút GiaoDịchGởi
Dữ liệu vật lý
13 14
Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ
Chuyển đổi lớp – bảng (class – table) Chuyển đổi liên kết (association, agregration)
Một lớp Æ một bảng 1-1
Một thuộc tính (persistent) Æ một cột: chỉ có các Bảng KháchHàng
KháchHàng
thuộc tính có nhu cầu lưu trử và được đòi hỏi bởi ứng tênKháchHàng Tên_KH Họ_KH MãPIN Số_Thẻ
d
dụng sẽẽđđược chuyển
h ể thàthànhh cột
ột của
ủ bả
bảng. h Khá hHà
họKháchHàng
mãPIN
sốThẻ
Một đối tượng (thể hiện) Æ một dòng
1
Bảng TàiKhoản (*)
KháchHàng 1
tênKháchHàng Tên_KH Họ_KH MãPIN Số_Thẻ TàiKhoản
họKháchHàng Số_TK Loại_TK Số_Dư_TK Số_Thẻ
sốTàiKhoản
mãPIN loạiTàiKhoản
sốThẻ sốDư
4
4/27/2010
Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ
Chuyển đổi liên kết (association, agregration)
Chuyển đổi liên kết (association, agregration) 1-n GiaoDịch
1-1 TàiKhoản giaoDịchID
ngàyGiaoDịch
sốTàiKhoản có
thờiGianGiaoDịch
loạiTàiKhoản loạiGiaoDịch
KháchHàng sốDư 1 0..n sốTiền
tênKháchHàng sốDư
h Khá hHà
họKháchHàng
mãPIN Bảng KháchHàng_TàiKhoản Bảng TàiKhoản
sốThẻ
1 Tên_KH Họ_KH MãPIN Số_Thẻ Số_TK Loại_TK Số_Dư_TK Số_TK Loại_TK Số_Dư_TK Số_Thẻ
1 (*)
TàiKhoản Bảng GiaoDịch
sốTàiKhoản
loạiTàiKhoản
sốDư GD_ID Ngày_GD Giờ_GD Loại_GD Số_Tiền Số_Dư Số_TK
Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ
Chuyển đổi liên kết (association, agregration) Chuyển đổi liên kết (association, agregration)
n-n n-n ĐơnHàng NguyênLiệu
NhânViên CôngViệc sốĐơnHàng mãSố
mãNhânViên Tham gia côngViệcID ngàyĐơnHàng tênNLiệu
tênNhânViên môTảCôngViệc diễnGiải 1..n 0..n ĐVT
sốĐiệnThoại 0..n 0..n ngàyBắtĐầu
dòngĐH
sốLượng
Mã_NV Tên_NV Số_ĐT đơnGiá
Bảng NhânViên
5
4/27/2010
Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ
NhânViên
Chuyển đổi liên kết kế thừa NhânViên
mãNhânViên
tênNhânViên
Trường hợp 1: mãNhânViên
tênNhânViên
Chuyển đổi liên kết kế thừa sốĐiệnThoại
sốĐiệnThoại
Trường hợp 2:
NhânViênCôngNhật NhânViênBiênChế
lươngNgày lươngTháng
NhânViênCôngNhật NhânViênBiênChế bậcLương
l
lươngNgày
N à l
lươngTháng
Thá
bậcLương
Mã_NV Tên_NV Điện_Thoạ Lương_Ngày Lương_Tháng Bậc_Lương Loại_NV Mã_NV Tên_NV Điện_Thoạ Mã_NV Tên_NV Điện_Thoạ Lương_Tháng Bậc_Lương
i i i
Bảng NhânViênBiênChế
Mã_NV Tên_NV Điện_Thoại Lương_Ngày
Phù hợp cho tất cả các trường hợp: (complete, disjoint), (complete, overlapping),
(incomplete, disjoint), (incomplete, overlapping)
Phù hợp cho tất cả các trường hợp: (complete, disjoint), (complete, overlapping),
21 22
(incomplete, disjoint), (incomplete, overlapping)
Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ
NhânViên NhânViên
mãNhânViên mãNhânViên
tênNhânViên tênNhânViên
Chuyển đổi liên kết kế thừa sốĐiệnThoại Chuyển đổi liên kết kế thừa sốĐiệnThoại
Mã_NV Tên_NV Điện_Thoạ Lương_Tháng Bậc_Lương Mã_NV Tên_NV Điện_Thoạ Mã_NV Lương_Tháng Bậc_Lương
i i
Phù hợp cho tất cả các trường hợp: (complete, disjoint), (complete, overlapping),
Chỉ phù hợp cho: (complete, disjoint) 23 24
(incomplete, disjoint), (incomplete, overlapping)
6
4/27/2010
Chuyểển đổ
Chuy đổi sang mô hình Quan hệ
hệ định lớ
Xác đị lớp tầ
tầng truy cậ
cập dữ
dữ li
liệệu
Tầng nghiệp vụ
Mô hình dữ liệu quan hệ của hệ thống ATM
Bảng KháchHàng
Tên_KH Họ_KH MãPIN Số_Thẻ
Tầng
g truy
y cập
ập dữ liệu
ệ
Bảng TàiKhoản
Số_TK Loại_TK Số_Dư_TK Số_Thẻ
CSDL vật lý
Bảng GiaoDịch Tập tin Bảng Bảng
Bảng
GD_ID Ngày_GD Giờ_GD Loại_GD Số_Tiền Số_Dư Số_TK
25 26
định lớ
Xác đị lớp tầ
tầng truy cậ
cập dữ
dữ li
liệệu định lớ
Xác đị lớp tầ
tầng truy cậ
cập dữ
dữ li
liệệu
Tạo lớp tầng truy cập dữ liệu: Xác định mối kết hợp
1 lớp tầng nghiệp vụ Æ tạo một lớp tương Tạo mối kết hợp giữa lớp nghiệp vụ và lớp
ứng tầng truy cập DL tương ứng truy cập dữ liệu (aggregration)
ClassC
Tạo thuộc tính tham chiếu: lớp nghiệp vụ Æ
ClassA ClassB
lớp truy cập DL ClassA
classDB_A : ClassDB_A
ClassC1 ClassC2
ClassDB_A
ClassDB_A ClassDB_B ClassDB_C
27 28
7
4/27/2010
định lớ
Xác đị lớp tầ
tầng truy cậ
cập dữ
dữ li
liệệu định method
Xác đị
Xác định method Các xử lý về dữ liệu
Đơn giản hoá các lớp: Đọc và lưu các đối tượng persistent
Nếu có hai lớp đều cùng cung cấp các dịch vụ Xoá các đối tượng persistent
giống nhau
nhauÆÆ loại đi một Quản lý giao tác trên các đối tượng persistent
Nếu lớp có <= 2 method Æ kết hợp chung Kiểm soát cơ chế khoá và truy cập đồng hành
vào lớp khác
method_A1() method_A1()
method_A2() method_B() method_A2()
method_B()
29 30
định method
Xác đị định method
Xác đị
Ghi đối tượng persistent Ghi đối tượng persistent
Tạo mới đối tượng Cập nhật trạng thái đối tượng
lấyThôngTinĐơnHàng()
tạoĐơnHàng()
dh:ĐơnHàng
Gán thông tin cho đơn hàng
Sử dụng đối tượng điều khiển để quản lý cập nhật Æ chấp nhật nhận các khoảng
thời điểm thiếu sự nhất quán giữa đối tượng và dữ liệu lưu trữ về đối tượng
31 32
8
4/27/2010
định method
Xác đị định method
Xác đị
Đọc đối tượng persistent Đọc đối tượng persistent
Một đối tượng : ĐơnHàng : ĐơnHàngDB DB : DBMS Đối tượng điều : ĐơnHàng : ĐơnHàngDB : DBMS
khiển Đơn hàng
Lấy thông tin về đơn hàng
Lấy thông tin các Đơn hàng
Truy vấn cơ sở dữ liệu Thi hành SQL truy vấn đơn hàng
Dữ liệu đơn hàng
tạoĐơnHàng()
tạoĐơnhàng()
33 34
định method
Xác đị định method
Xác đị
Xoá đối tượng persistent Xoá đối tượng persistent
Đối tượng điều : ĐơnHàng : ĐơnHàngDB : DBMS
Một đốii tượng : ĐơnHàng : ĐơnHàngDB : DBMS
khiển Đơn hàng
lấyThôngTinĐơnHàng()
huỷĐơnHàng()
xoáĐơnHàng()
Thực hiện SQL xoá dh:ĐơnHàng
35 36
9
4/27/2010
định method
Xác đị định method
Xác đị
Quản lý giao tác (transaction) Quản lý giao tác (transaction)
Một đối tượng : HoáĐơn : KháchHàng : HoáĐơnDB : KháchHàngDB : DBMS Một đối tượng : HoáĐơn : KháchHàng : HoáĐơnDB : KháchHàngDB Quản lý giao tác
: DBMS
thêmHoáĐơn( Bắt đầu giao tác
Bắt đầu giao tác (Begin transaction)
)
thêmHoáĐơn() cậpNhậtHoáĐơn()
cậpNhậtHoáĐơn() Thực hiện SQL thêm mới
Thực hiện SQL thêm mới
cậpNhậtCôngNợ() cậpNhậtCôngNợ()
cậpNhậtKháchHàng() Thực hiện SQL cập nhật
cậpNhậtKháchHàng() Thực hiện SQL cập nhật
Kết thúc giao tác (end transaction) Kết thúc giao tác
37 38
định method
Xác đị định method
Xác đị
Quản lý giao tác (transaction) Xác định lớp truy cập dữ liệu hệ thống ATM
Đối tượng điều : HoáĐơn : KháchHàng : HoáĐơnDB : KháchHàngDB : DBMS
khiển Hoá đơn
Bắt đầu giao tác
TàiKhoản TàiKhoảnDB
cậpNhậtCôngNợ() cậpNhậtKháchHàng()
Thực hiện SQL cập nhật
GiaoDịch
GiaoDịch GiaoDịch
39 40
10
4/27/2010
định method
Xác đị định method
Xác đị
Xác định lớp truy cập NgânHàng
dữ liệu hệ thống ATM
+kếtNối()
+đóngKếtNối()
Xác định lớp truy cập dữ liệu hệ thống ATM
KháchHàng
#tênKháchHàng:String MáyATM KháchHàngDB TàiKhoảnDB GiaoDịchDB
#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
+kiểmTraMậtKhẩu()
+khởiĐộngMáy()
+đóngMáy()
+đọcKháchHàng() +cậpNhậtTàiKhoản() +cậpNhậtGiaoDịch()
#lấy_KháchHàng() #cậpNhậtSốTiền() +đọcTàiKhoản()
1 #ắ
#tắtMáy()
()
của KháchHàngDB::+đọcKháchHàng()
1 KháchHàngDB::+đọcTàiKhoản()
GiaoDịch
TàiKhoản
#sốTàiKhoản:String #giaoDịchID:String
#loạiTàiKhoản:String có #ngàyGiaoDịch:Date NgânHàngDB
#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() +đọcKháchHàng()
#cậpNhậtTàiKhoản()
#tạoGiaoTác() +đọcTàiKhoản()
GiaoDịchDB::+cậpNhậtGiaoDịch() +cậpNhậtTàiKhoản()
TàiKhoảnDB::+cậpNhậtTàiKhoản() +cậpNhậtGiaoDịch()
GiaoDịchRút GiaoDịchGởi
41 42
NgânHàng
định method
Xác đị
+kếtNối()
+đóngKếtNối()
định method
Xác đị
KháchHàng
#tênKháchHàng:String MáyATM
NgânHàngDB::+đọcKháchHàng
#họKháchHàng:String
#mãPIN::String
#sốThẻ:String
#địaChỉ:String
#trạngThái:String
#sốTiềnHiệnTại:float
(vSốThẻ:String, vMãPIN:String): KháchHàng
#tàiKhoản:TàiKhoản
#ngHàngDB:NgânHàngDB +khởiĐộngMáy()
+đóngMáy() Một đối tượng : KháchHàng : NgânHàngDB
#cậpNhậtSốTiền() giao diện
+kiểmTraMậtKhẩu() #tắtMáy()
#lấy_KháchHàng()
kiểmTraMậtKhẩu(vSốThẻ, vPIN)
1
của
1
1..n vKháchHàng = lấy
lấy_KháchHàng(sốThẻ,
KháchHàng(sốThẻ vPIN)
GiaoDịch
TàiKhoản
#giaoDịchID:String đọcKháchHàng(vSốThẻ, vMãPIN)
#sốTàiKhoản:String
có #ngàyGiaoDịch:Date
#loạiTàiKhoản:String
#thờiGianGiaoDịch:Time Gọi xử lý của use case Đăng nhập
#sốDư:float
#giaoTác:GiaoTác #loạiGiaoDịch:String
1 0..n #sốTiền:float không hợp lệ”
#kháchHàng:KháchHàng
#sốDư:float
#ngHàngDB:NgânHàngDB
+gánThôngTinGiaoDịch()
NgânHàngDB +gửiTiền()
+rútTiền()
#cậpNhậtTàiKhoản()
+đọcKháchHàng() #tạoGiaoTác()
+đọcTàiKhoản()
+cậpNhậtTàiKhoản() GiaoDịchRút GiaoDịchGởi
+cậpNhậtGiáoTác()
43 44
11
4/27/2010
định method
Xác đị định method
Xác đị
NgânHàngDB::+đọcKháchHàng NgânHàngDB::+đọcTàiKhoản(sốThẻ
NgânHàngDB::+đọcTàiKhoản(sốThẻ::String)
String)::
(vSốThẻ:String, vMãPIN:String): KháchHàng TàiKhoản
Một đối tượng giao : KháchHàng : TàiKhoản : NgânHàngDB
diện gửi tiền
KháchHàng::#lấy_KháchHàng(sốThẻ:String, mãPIN:String): KháchHàng lấy_TàiKhoản()
vNgânHàngDB: NgânHàngDB đọcTàiKhoản()
tạoTàiKhoản()
return vNgânHàngDB.đọcKháchHàng (sốThẻ, mãPIN)
tk:TàiKhoản
tk:TàiKhoản
45
Usecase Giao Dịch 46
định method
Xác đị định method
Xác đị
Một đối tượng giao : KháchHàng : TàiKhoản : GiaoDịch : NgânHàngDB
Một đối tượng giao : KháchHàng : TàiKhoản : NgânHàngDB diện rút tiền
diện gửi tiền
lấy_TàiKhoản()
lấy_TàiKhoản() đọcTàiKhoản()
đọcTàiKhoản()
tạoTàiKhoản()
tạoTàiKhoản()
tk:TàiKhoản
tk:TàiKhoản tk:TàiKhoản
tk:TàiKhoản
Bắt đầ
đầu giao
i tác
tá
rútTiền()
Bắt đầu giao tác cậpNhậtTàiKhoản()
gửiTiền()
cậpNhậtTàiKhoản() tạoGiaoTác()
tạoGiaoTác() Rút thành công Nếu sốDư >=
sốTiền thì cho phép
thực hiện rút tiền
Rút không thành công
12
4/27/2010
định method
Xác đị định method
Xác đị
NgânHàngDB::
NgânHàngDB ::+đọcTàiKhoản(vSốThẻ
+đọcTàiKhoản(vSốThẻ::String) NgânHàngDB::
NgânHàngDB ::+đọcTàiKhoản(vSốThẻ
+đọcTàiKhoản(vSốThẻ::String)
: TàiKhoản : TàiKhoản
KháchHàng::-lấy_TàiKhoản(sốThẻ:String): TàiKhoản
vNgânHàngDB: NgânHàngDB
return vNgânHàngDB.đọaTàiKhoản(sốThẻ) TàiKhoản::+rútTiền(sốTiền:float): String
g g
vNgânHàngDB: NgânHàngDB
g g
NgânHàngDB::+đọcTàiKhoản(vSốThẻ:String): TàiKhoản if sốDư < sốTiền
-- kết nối cơ sở dữ liệu ở đây return “Số tiền rút vượt quá số dư tài khoản”
Return else
SELECT * FROM TàiKhoản NgânHàngDB.cậpNhậtTàiKhoản (sốTàiKhoản, sốDư + sốTiền)
WHERE Số_Thẻ = vSốThẻ tạoGiaoTác(“gửi”, sốTiền, sốDư + sốTiền)
return “”
TàiKhoản::+gửiTiền(sốTiền:float) endif
vNgânHàngDB: NgânHàngDB
NgânHàngDB.cậpNhậtTàiKhoản (sốTàiKhoản, sốDư + sốTiền)
tạoGiaoTác(“gửi”, sốTiền, sốDư + sốTiền)
49 50
định method
Xác đị định method
Xác đị
NgânHàngDB::
NgânHàngDB::+câpNhậtGiaoDịch()
+câpNhậtGiaoDịch() NgânHàngDB::
NgânHàngDB::+câpNhậtGiaoDịch()
+câpNhậtGiaoDịch()
Một đối tượng giao : KháchHàng : TàiKhoản : GiaoDịch : NgânHàngDB
diện gửi tiền TàiKhoản::#tạoGiaoTác(loạiGD:String, sốTiền:float, sốDư: float)
lấy_TàiKhoản()
đọcTàiKhoản()
vNgânHàngDB: NgânHàngDB
tạoTàiKhoản()
vGiaoDịch = tạoMới(GiaoDịch)
tk:TàiKhoản
vGiaoDịch.gánThôngTin(Date(today), Time(now), loạiGD, sốTiền,
tk:TàiKhoản sốDư, sốTàiKhoản)
vNgânHàngDB cậpNhậtGiaoDịch(sốTàiKhoản loạiGD
vNgânHàngDB.cậpNhậtGiaoDịch(sốTàiKhoản, loạiGD, sốTiền
sốTiền,
Bắt đầu giao tác
gửiTiền() sốDư)
cậpNhậtTàiKhoản()
tạoGiaoTác()
NgânHàngDB::+cậpNhậtGiaoDịch(vSốTàiKhoản:String, vLoạiGD:String,
tạoMới()
vSốDư:float)
gánThôngTin() --kết nối cơ sở dữ liệu ở đây
vGD_ID: String
cậpNhậtGiaoDịch()
vGD_ID = Tạo_GD_ID()
Kết thúc giao tác INSERT INTO GiaoDịch (GD_ID, Ngày_GD, Giờ_GD, Loại_GD, Số_Tiền,
Số_Dư, Số_TK) VALUES (vGD_ID, Date(today), Time(now), vLoạiGD,
vSốTiền, vSốDư, vSốTàiKhoản)
51 52
13
4/27/2010
ương
Chươ
Ch THIẾT KẾ
ng 9 THIẾ KẾ USE CASE Thiếết kế
Thi kế lớp tầ
tầng giao diệ
diện
Kiến trúc ba tầng (tree-
(tree-layer) Xác định các đối tượng ở tầng giao diện:
Thiết kế các lớp tầng nghiệp vụ Xây dựng sơ đồ lớp mô tả các đối tượng giao
diện của hệ thống
Thiết kế các lớp tầng truy cập dữ liệu
Tạo mẫu giao diện (prototype)
Thiết kê các lớp tầng giao diện
Xác định hành vi và thuộc tính cho các lớp
Mô tả hiện thực hoá nội dung thiết kế use case
giao diện
Thử nghiệm giao diện
53 54
Thiếết kế
Thi kế lớp tầ
tầng giao diệ
diện Thiếết kế
Thi kế lớp tầ
tầng giao diệ
diện
Xác định các đối tượng ở tầng giao diện:
Xác định các đối tượng ở tầng giao diện:
Use case
Tác
nhân con
người
Có một hoặc nhiều đối tượng tầng giao
diện được xác định dựa trên sự tương tác
giữa tác nhân và use case
<<boundary>>
55 56
14
4/27/2010
Thiếết kế
Thi kế lớp tầ
tầng giao diệ
diện Thiếết kế
Thi kế lớp tầ
tầng giao diệ
diện
Xác định các đối tượng ở tầng giao diện: Tạo mẫu giao diện
Xác định sự liên kết giữa các đối tượng giao Tạo các đối tượng giao diện (như là các
diện Lớp ở tầng giao diện button, các vùng nhập liệu,…)
Liên kết và gán các hành vi hoặc hành động
thích hợp tới các đối tượng giao diện này và
các sự kiện của nó
Sử dụng một công cụ thiết kế giao diện cụ thể
Lớp ở tầng nghiệp vụ
57 58
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống ATM
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống ATM
Xác định các lớp Xác định các lớp đối tượng giao diện điều
KháchHàngGD Biểu diễn giao diện tương tác giữa khách hàng và use case khiển: toobar, menu, form điều khiển,…
Đăng nhập, Đăng nhập không hợp lệ
Ví dụ:
GiaoDịchGD Biểu diễn tương tác giữa khách hàng và use case Rút tiền, MáyATM_GD Đối tượng giao diện điều khiển chính hoạt động
Gửi tiền giao
i diện
diệ của
ủ máyá ATM
TàiKhoảnGD Biểu diễn tương tác giữa khách hàng và use case Truy vấn Xác định liên kết tới các lớp giao diện đang
thông tin tài khoản
tồn tại MáyATM_GD
Liên kết gọi giao diện
Liên kết gọi giao diện thực hiện Truy vấn
MáyATMKhởiĐộngGD Biểu diễn tương tác giữa nhân viên vận hành và use case thực hiện Rút tiền, Gửi thông tin tài khoản
Khởi động hệ thống tiền
GiaoDịchGD TàiKhoảnGD
59 60
15
4/27/2010
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống ATM
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống ATM
Thiết kế mẫu giao diện: Thiết kế mẫu giao diện:
KháchHàngGD MáyATM_GD
61 62
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống ATM
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống ATM
Thiết kế mẫu giao diện: Thiết kế mẫu giao diện:
GiaoDịchGD (Rút tiền) GiaoDịchGD (Gửi tiền)
63 64
16
4/27/2010
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống ATM
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống ATM
Thiết kế mẫu giao diện: Thiết kế mẫu giao diện:
TàiKhoảnGD MáyATMKhởiĐộngGD
65 66
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống ATM
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống
ATM
Xác định method Xác định method
Bằng cách xác định các sự kiện của hệ thống Use case Đăng nhập
phải đáp ứng tương ứng tới các thao tác
Sự kiện Hành đồng
người dùng trên giao diện và các hành động
Đưa thẻ vào máy hiển thị giao diện đăng nhập (KháchHàngGD)
khi sự
ự kiện
ệ xảy
y ra
Khách hàng chọn đồng ý -kiểm tra mật khẩu (KháchHàng)
Sự kiện ÅÆ hành động hệ thống phải đáp -hiển thị giao diện điều khiển chính (MáyATM_GD)
ứng -thông báo nếu đăng nhập không thành công (KháchHàngGD)
-đóng giao diện đăng nhập (KháchHàngGD)
Khách hàng chọn huỷ bỏ đóng giao diện đăng nhập (KháchHàngGD)
KháchHàngGD::+hiểnThị()
KháchHàngGD::--thôngBáo(thôngBáo:String)
KháchHàngGD::
KháchHàngGD::+đóng()
67
MáyATM_GD::+hiểnThị() 68
17
4/27/2010
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống ATM
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống ATM
Xác định method : KháchHàng
: KháchHàngGD : KháchHàng : NgầnHàngDB : MáyATM_GD
đọcKháchHàng()
lệ Sự kiện Hành đồng
Kết quả kiểm tra Chọn nút rút tiền (1) hiển thị giao diện rút tiền (GiaoDịchGD)
thôngBáo() Chọn nút gửi tiền (2) hiển thị giao diện gửi tiền (GiaoDịchGD)
Mật khẩu không hợp lệ
hiểnThị()
Chọn nút xem tài khoản hiển thị giao diện xem thông tin tài khoản
đóng() (3) (TàiKhoảnGD)
Chọn nút thoát (4) đóng giao diện chính (MáyATM_GD)
Chọn huỷ bỏ
đóng()
GiaoDịchGD::+hiểnThị(loạiGD:String)
TàiKhoản::+hiểnThị()
69
MáyATM_GD::+đóng() 70
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống ATM
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống ATM
MáyATM_GD::+đóng() GiaoDịchGD::--thôngBáo(thôngBáo:String)
GiaoDịchGD::
GiaoDịchGD::-
GiaoDịchGD::-inHoáĐơn()
71
GiaoDịchGD::+đóng() 72
18
4/27/2010
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống ATM
thố
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống
Use case
Rút tiền : KháchHàng : MáyATM_GD
Chọn nút rút tiền
: GiaoDịchGD : KháchHàng : TàiKhoản : GiaoDịch : NgânHàngDB
ATM
Use case Khởi động hệ
hiểnThị("Rút")
Nhập số tiền rút
rútTiền()
tạoGiaoTác() Sự kiện Hành đồng
t Mới()
tạoMới()
gánThôngTin() Khởi động máy hoàn hiện thị giao diện khởi động máy
Rút thành công
CậpNhậtGiaoDịch() thành (MáyATMKhởiĐộngGD)
Rút không thành công
thôngBáo() Nhân viên chọn đóng -cập nhật số tiền cho hiện hành cho máy (MáyATM)
Kết quả thông báo cho khách hàng
inHoáĐơn() -thực hiện kết nối tới mạng ngân hàng (NgânHàng)
Hoá đơn rút tiền
đóng() -đóng giao diện khởi động (MáyATMKhởiĐộngGD)
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống ATM
ATM Sử dụng lớp điều khiển
Use case Khởi động hệ thống
: KháchHàng : TàiKhoản : GiaoDịch : NgânHàngDB
: KháchHàng : MáyATM_GD : GiaoDịchGD : ĐiềuKhiểnGiaoDịch
hiểnThị()
Chọn đồng ý rút tiền
rútTiền()
lấ TàiKh ả ()
lấy_TàiKhoản()
đọcTàiKhoản()
Nhập số tiền khởi động cho máy tạoTàiKhoản()
tk:TàiKhoản
tạoMới()
kếtNối()
gánThôngTin()
Thực hiện kết nối tới mạng ngân hàng
thôngBáo()
75 Kết quả thông báo cho khách hàng 76
inHoáĐơn()
19
4/27/2010
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ thống
thố Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống
ATM ATM
Xác định thuộc tính (thuộc tính tham chiếu) Các thuộc tính tham chiếu xác định được
Lớp MáyATM_GD
MáyATM_GD giaoDịchGD:GiaoD
giaoDịchGD:GiaoDịịchGD
tàiKhoảảnGD:TàiKho
tàiKho nGD:TàiKhoảảnGD
Lớp KháchHàngGD
GiaoDịchGD TàiKhoảnGD KháchHàngGD MáyATMKhởiĐộngGD kháchHàng:KháchHàng
Lớp GiaoDịchGD
tàiKhoản:TàiKho
tàiKhoản:TàiKhoảản
MáyATM
kháchHàng:KháchHàng
TàiKhoản KháchHàng
Lớp TàiKhoảnGD
tàiKhoản:TàiKho
tàiKhoản:TàiKhoảản
kháchHàng:KháchHàng
Lớp MáyATMKhởiĐộngGD
máyATM:MáyATM
77 78
Thiếết kế
Thi kế tầng giao diệ
diện hệ
hệ th
thốống ATM
ương THIẾT KẾ
KẾ USE CASE
MáyATM_GD
-giaoDịchGD:GiaoDịchGD
-tàiKhoảnGD:TàiKhoảnGD
+hiểnThị()
Tầng giao diện
Chươ
Ch ng 9 THIẾ
+đóng()
20
4/27/2010
tả hi
Mô tả hiệện thự
thực hoá Use case tả hi
Mô tả hiệện thự
thực hoá Use case
Mô tả hiện thực hoá use case “Truy
“Truy vấn thông
tin tài khoản”
khoản”
Sơ đồ lớp KháchHàng
#tênKháchHàng:String
Sơ đồ lớp +lấy_TàiKhoản()
1 NgânHàngDB
TàiKhoản
1..n
Sơ đồ tuần tự #sốTàiKhoản:String +đọcKháchHàng()
#loạiTàiKhoản:String
+đọcTàiKhoản()
Sơ đồ hợp tác
#sốDư:float
#giaoTác:GiaoTác +cậpNhậtTàiKhoản()
TàiKhoảnGD
#kháchHàng:KháchHàng
-tàiKhoản:TàiKhoản #ngHàngDB:NgânHàngDB +cậpNhậtGiáoTác()
+hiểnThị() +gửiTiền()
+đóng() +rútTiền()
-hiểnThịThôngTin() #cậpNhậtTàiKhoản()
81 #tạoGiaoTác() 82
tả hi
Mô tả hiệện thự
thực hoá Use case tả hi
Mô tả hiệện thự
thực hoá Use case
Mô tả hiện thực Mô tả hiện thực
1: Chọn xem thông tin
hoá use case : KháchHàng
: MáyATM_GD : TàiKhoảnGD : KháchHàng : TàiKhoản : NgânHàngDB hoá use case :
MáyATM_GD
“Truy vấn Chọn xem thông tin hiểnThị()
lấy_TàiKhoản()
đọcTàiKhoản()
“Truy vấn
: KháchHàng
thông tin tài tạoTàiKhoản() thông tin tài 9: Chọn đóng giao diện xem thông tin
khoản””
khoản tk:TàiKhoản
tk:TàiKhoản
khoản””
khoản 10: đóng() 8: hiểnThịThôngTin() 2: hiểnThị()
3:
Sơ tuần tự Sơ hợp tác : TàiKhoảnGD lấy_TàiKhoản() :
hiểnThịThôngTin( KháchHàng
) 7: tk:TàiKhoản
6: tk:TàiKhoản
4: đọcTàiKhoả
5: tạoTàiKhoản()
83 84
21