Ch ươ ng 9 THI T K USE CASE Ế Ế Kiến trúc ba tầng tree-layer 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 Mô tả hiện t
Trang 1PHÂN TÍCH & THI T Ế
Trang 2Ch ươ ng 9 THI T K USE CASE Ế Ế
Kiến trúc ba tầng (tree-layer)
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
Mô tả hiện thực hoá nội dung thiết kế use case
Trang 3Ki n trúc ba t ng (tree-layer) ế ầ
Ki n trúc ba t ng (tree-layer) ế ầ
Kiến trúc client – server
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
Dữ liệu Giao diện
Trang 4Ki n trúc ba t ng (tree-layer) ế ầ
Kiến trúc ba tầng (tree-layer)
Tạo ra sự độc lập giữa giao diện và dữ liệu bằng cách
cô lập các chức năng của giao diện với các chức
năng tác nghiệp (business), và cô lập các chức năng tác nghiệp với các chi tiết về truy cập CSDL
Ánh xạ các đối tượng đại diện các đối tượng hữu hình trong thực tế nhưng hoàn toàn độc lập với cách thức
mà các đối tượng này trình bày tới người dùng hoặc
là với cách mà dữ liệu của nó được lưu trữ vật lý
trong CSDL
Trang 5User interface
layer
Trả lời tương tác người dùng : chuyển dịch những hành động của người dùng tới một tình huống xử lý phù hợp
Hiển thị các đối tượng tác nghiệp : trình bày một hình ảnh tốt nhất các đối tượng tác nghiệp tới người dùng trong một giao diện
Thực hiện các giao tác xử lý liên quan đến nghiệp vụ mà không quan tâm đến hiển thị chúng như thế nào? Và CSDL được lấy ở đâu?
Chuyển dịch yêu cầu: chuyển dịch tất
cả các yêu cầu liên quan đến dữ liệu từ tầng tác nghiệp đến một phương thức truy cập dữ liệu thích hợp (dạng SQL, truy xuất file,…)
Chuyển dịch kết quả
Trang 7Ch ươ ng 9 THI T K USE CASE Ế Ế
Ch ươ ng 9 THI T K USE CASE Ế Ế
Kiến trúc ba tầng (tree-layer)
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
Mô tả hiện thực hoá nội dung thiết kế use case
Trang 9L p phân tích ớ L p đi u khi n ớ ề ể L p x lý ớ ử L p c u trúc ớ ấ
HoáĐ n ơ
+thêmHĐ()
-s HĐ ố -ngàyHĐ -s Ti n ố ề
Trang 10+kếtNối() +đóngKếtNối()
Trang 11Thi t k l p t ng truy c p d ế ế ớ ầ ậ ữ
Thi t k l p t ng truy c p d ế ế ớ ầ ậ ữ
li u ệ
li u ệ
Xác định các đối tượng lưu trữ (persistent)
Chuyển đổi sang mô hình quan hệ
Xác định các lớp tầng truy cập dữ liệu
Trang 12Xác đ nh các đ i t ị ố ượ ng l u tr ư ữ
Xác đ nh các đ i t ị ố ượ ng l u tr ư ữ
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
tham số và biến trong phạm vi cục bộ)
Các biến toàn cục và các biết cấp phá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 tồn tại giữa các phiên bản của một chương
D li u ữ ệ lâu dài (persistent )
Trang 13Xác đ nh các đ i t ị ố ượ ng l u tr ư ữ
Xác đ nh các đ i t ị ố ượ ng l u tr ư ữ
Các loại dữ liệu tồn tại trong một hệ thống:
Các l p transient ớ
Trang 140 n1
Trang 15Chuy n đ i sang mô hình Quan h ể ổ ệ Chuy n đ i sang mô hình Quan h ể ổ ệ
Dữ liệu luận lý
Các lớp persistent
Dữ liệu vật lý
Trang 17Chuy n đ i sang mô hình Quan h ể ổ ệ Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuyển đổi liên kết (association, agregration)
Trang 19Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuyển đổi liên kết (association, agregration)
1-n
Số_TK Loại_TK Số_Dư_TK Số_Thẻ
GiaoDịchgiaoDịchIDngàyGiaoDịchthờiGianGiaoDịchloạiGiaoDịchsốTiền
sốDư
TàiKhoảnsốTàiKhoảnloạiTàiKhoản
Trang 20Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuyển đổi liên kết (association, agregration)
n-n
Mã_NV Tên_NV Số_ĐT
NhânViênmãNhânViêntênNhânViênsốĐiệnThoại 0 n 0 n
Tham gia
CôngViệccôngViệcIDmôTảCôngViệcngàyBắtĐầu
Trang 21Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuyển đổi liên kết (association, agregration)
NguyênLiệumãSố
tênNLiệuĐVT
dòngĐHsốLượngđơnGiá
Bảng DòngĐH
Bảng Nguyên Liệu
Trang 22Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuy n đ i sang mô hình Quan h ể ổ ệ
Chuyển đổi liên kết kế thừa
Trường hợp 1:
NhânViênmãNhânViêntênNhânViênsốĐiệnThoại
NhânViênCôngNhậtlươngNgày
NhânViênBiênChếlươngTháng
bậcLương
Mã_NV Tên_NV Điện_Thoạ
i Lương_Ngày Lương_Tháng Bậc_Lương Loại_NV
Phù h p cho t t c các tr ợ ấ ả ườ ng h p: (complete, disjoint), (complete, overlapping), ợ (incomplete, disjoint), (incomplete, overlapping)
Trang 23NhânViênBiênChếlươngTháng
Trang 24NhânViênBiênChếlươngTháng
Trang 25NhânViênBiênChếlươngTháng
Trang 27Xác đ nh l p t ng truy c p d li u ị ớ ầ ậ ữ ệ Xác đ nh l p t ng truy c p d li u ị ớ ầ ậ ữ ệ
Trang 28Xác đ nh l p t ng truy c p d li u ị ớ ầ ậ ữ ệ Xác đ nh l p t ng truy c p d li u ị ớ ầ ậ ữ ệ
Tạo lớp tầng try cập dữ liệu:
1 lớp tầng nghiệp vụ tạo một lớp tương
Trang 29Xác đ nh l p t ng truy c p d li u ị ớ ầ ậ ữ ệ Xác đ nh l p t ng truy c p d li u ị ớ ầ ậ ữ ệ
Xác định mối kết hợp
Tạo mối kết hợp giữa lớp nghiệp vụ và lớp
tương ứng truy cập dữ liệu (aggregration)
Tạo thuộc tính tham chiếu: lớp nghiệp vụ
lớp truy cập DL
ClassA
ClassDB_A
classDB_A : ClassDB_A
Trang 30Xác đ nh l p t ng truy c p d li u ị ớ ầ ậ ữ ệ Xác đ nh l p t ng truy c p d li u ị ớ ầ ậ ữ ệ
Xác định method
Đơn giản hoá các lớp:
Nếu có hai lớp đều cùng cung cấp các dịch vụ giống nhau loại đi một
Nếu lớp có <= 2 method kết hợp chung vào lớp khác
LớpDB_C
Trang 31Xác đ nh method ị
Xác đ nh method ị
Các xử lý về dữ liệu
Đọc và lưu các đối tượng persistent
Xoá các đối tượng persistent
Quản lý giao tác trên các đối tượng persistent
Kiểm soát cơ chế khoá và truy cập đồng hành
Trang 32Xác đ nh method ị
Ghi đối tượng persistent
Tạo mới đối tượng
: ĐơnHàng : ĐơnHàngDB DB : DBMSMột đối tượng
tạoĐơnHàng()
Gán thông tin cho đơn hàng
ghiĐơnHàng()cậpNhậtĐơnHàng() Thực thi SQL cập nhật
Trang 33Xác đ nh method ị
Xác đ nh method ị
Ghi đối tượng persistent
Cập nhật trạng thái đối tượng
Đối tượng điều
khiển Đơn hàng : ĐơnHàng : ĐơnHàngDB DB : DBMS
Trang 34Xác đ nh method ị
Đọc đối tượng persistent
Một đối tượng : ĐơnHàng : ĐơnHàngDB DB : DBMS
Lấy thông tin các Đơn hàng
Truy vấn cơ sở dữ liệutạoĐơnHàng()
Trang 35Xác đ nh method ị
Xác đ nh method ị
Đọc đối tượng persistent
Đối tượng điều
khiển Đơn hàng
: ĐơnHàng : ĐơnHàngDB : DBMSLấy thông tin về đơn hàng
Thi hành SQL truy vấn đơn hàng
Dữ liệu đơn hàngtạoĐơnhàng()
Trang 36Xác đ nh method ị
Xoá đối tượng persistent
Một đốii tượng : ĐơnHàng : ĐơnHàngDB : DBMS
huỷĐơnHàng()
xoáĐơnHàng()
Thực hiện SQL xoá
Trang 37Xác đ nh method ị
Xác đ nh method ị
Xoá đối tượng persistent
Đối tượng điều
khiển Đơn hàng
: ĐơnHàng : ĐơnHàngDB : DBMSlấyThôngTinĐơnHàng()
dh:ĐơnHàng
xoáĐơnHàng(dh) Thực hiện SQL xoá
Trang 39Xác đ nh method ị
Xác đ nh method ị
Quản lý giao tác (transaction)
Một đối tượng : HoáĐơn : KháchHàng : HoáĐơnDB : KháchHàngDB Quản lý giao tác
: DBMSthêmHoáĐơn
Trang 40Xác đ nh method ị
Quản lý giao tác (transaction)
Đối tượng điều
khiển Hoá đơn
Trang 42+khởiĐộngMáy()+đóngMáy()
+kếtNối()+đóngKếtNối()
#tắtMáy()
+gửiTiền()+rútTiền()
TàiKho nDB::+c pNh tTàiKho n() ả ậ ậ ả
GiaoD chDB::+c pNh tGiaoD ch() ị ậ ậ ị
Trang 44+kếtNối() +đóngKếtNối()
#tắtMáy()
+gửiTiền() +rútTiền()
#ngHàngDB:NgânHàngDB
#ngHàngDB:NgânHàngDB
#cậpNhậtSốTiền()
Trang 45vKháchHàng = lấy_KháchHàng(sốThẻ, vPIN)
Gọi xử lý của use case Đăng nhập không hợp lệ”
đọcKháchHàng(vSốThẻ, vMãPIN)
Trang 46NgânHàngDB::+đọcKháchHàng (vSốThẻ:String, vMãPIN:String): KháchHàng kết nối cơ dữ liệu ở đây
return
SELECT * FROM KháchHàng WHERE Số_Thẻ = vSốThẻ AND Mã_PIN = vMãPIN
Trang 47Một đối tượng giao
diện gửi tiền
lấy_TàiKhoản()
đọcTàiKhoản()
tạoTàiKhoản()
tk:TàiKhoảntk:TàiKhoản
[Nếu khách hàng chọn rút tiền] rútTiền()[Nếu khách hàng chọn gửi tiền] gửiTiền()[Chọn xem thông tin tài khoản] Xem thông tin tài khoản
Usecase Giao Dịch
Trang 48Một đối tượng giao
diện gửi tiền
cậpNhậtTàiKhoản()tạoGiaoTác()
tk:TàiKhoản
Trang 49Xác đ nh method ị
Xác đ nh method ị
Usecase Rút tiền
Một đối tượng giao
diện rút tiền : KháchHàng : TàiKhoản : GiaoDịch : NgânHàngDB
Nếu sốDư >=
sốTiền thì cho phép thực hiện rút tiềnRút thành công
Nếu sốDư < sốTiền thì không cho thực hiện rút tiền
Rút không thành công
lấy_TàiKhoản()
rútTiền()tk:TàiKhoản
Trang 52diện gửi tiền
Bắt đầu giao tác
Kết thúc giao tác
đọcTàiKhoản()
tạoTàiKhoản()tk:TàiKhoản
cậpNhậtGiaoDịch()
cậpNhậtTàiKhoản()tạoGiaoTác()
Trang 53vGiaoDịch.gánThôngTin(Date(today), Time(now), loạiGD, sốTiền, sốDư, sốTàiKhoản)
vNgânHàngDB.cậpNhậtGiaoDịch(sốTàiKhoản, loạiGD, sốTiền, sốDư)
NgânHàngDB::+cậpNhậtGiaoDịch(vSốTàiKhoản:String, vLoạiGD:String, vSốDư:float)
kết nối cơ sở dữ liệu ở đây
vGD_ID: String vGD_ID = Tạo_GD_ID()
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)
Trang 54Ch ươ ng 9 THI T K USE CASE Ế Ế
Kiến trúc ba tầng (tree-layer)
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
Mô tả hiện thực hoá nội dung thiết kế use case
Trang 55Thi t k l p t ng giao di n ế ế ớ ầ ệ
Thi t k l p t ng giao di n ế ế ớ ầ ệ
Xác định các đối tượng ở tầng giao diện:
Xây dựng sơ đồ lớp mô tả các đối tượng giao diện của hệ thống
Tạo mẫu giao diện (prototype)
Xác định hành vi và thuộc tính cho các lớp giao diện
Thử nghiệm giao diện
Trang 56Có 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>>
Trang 57Thi t k l p t ng giao di n ế ế ớ ầ ệ
Thi t k l p t ng giao di n ế ế ớ ầ ệ
Xác định các đối tượng ở tầng giao diện:
Trang 58Thi t k l p t ng giao di n ế ế ớ ầ ệ
Thi t k l p t ng giao di n ế ế ớ ầ ệ
Xác định các đối tượng ở tầng giao diện:
Xác định sự liên kết giữa các đối tượng giao diện
Lớp ở tầng nghiệp vụLớp ở tầng giao diện
Lớp ở tầng truy cập dữ liệu
Trang 59Thi t k l p t ng giao di n ế ế ớ ầ ệ
Thi t k l p t ng giao di n ế ế ớ ầ ệ
Tạo mẫu giao diện
Tạo các đối tượng giao diện (như là các
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ể
Trang 60Biểu diễn giao diện tương tác giữa khách hàng và use case
Đăng nhập , Đăng nhập không hợp lệ
Biểu diễn tương tác giữa khách hàng và use case Rút tiền ,
Trang 61Thi t k t ng giao di n h th ng ế ế ầ ệ ệ ố
Thi t k t ng giao di n h th ng ế ế ầ ệ ệ ố
ATM
Xác định các lớp đối tượng giao diện điều khiển:
toobar, menu, form điều khiển,…
Ví dụ:
Xác định liên kết tới các lớp giao diện đang
tồn tại
MáyATM_GD Đối tượng giao diện điều khiển chính hoạt động
giao diện của máy ATM
MáyATM_GD
GiaoDịchGD TàiKhoảnGD
Liên kết gọi giao diện
thực hiện Rút tiền, Gửi
tiền
Liên kết gọi giao diện thực hiện Truy vấn thông tin tài khoản
Trang 65Thi t k t ng giao di n h th ng ế ế ầ ệ ệ ố
Thi t k t ng giao di n h th ng ế ế ầ ệ ệ ố
ATM
Thiết kế mẫu giao diện:
GiaoDịchGD (Gửi tiền)
Trang 68người dùng trên giao diện và các hành động khi sự kiện xảy ra
Sự kiện hành động hệ thống phải đáp
ứng
Trang 69Đưa thẻ vào máy hiển thị giao diện đăng nhập (KháchHàngGD)
Khách hàng chọn đồng ý -kiểm tra mật khẩu (KháchHàng)
-hiển thị giao diện điều khiển chính (MáyATM_GD) -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::+đóng()
MáyATM_GD::+hiểnThị()
Trang 70Xử lý của use case Đăng nhập không hợp lệ
Trang 71Chọn nút rút tiền hiển thị giao diện rút tiền (GiaoDịchGD)
Chọn nút gửi tiền hiển thị giao diện gửi tiền (GiaoDịchGD)
Chọn nút xem tài khoản hiển thị giao diện xem thông tin tài khoản
(TàiKhoảnGD) Chọn nút thoát đóng giao diện chính (MáyATM_GD)
(1)
(2) (3) (4)
GiaoDịchGD::+hiểnThị(loạiGD:String)
TàiKhoản::+hiểnThị()
MáyATM_GD::+đóng()
Trang 73Khách hàng chọn rút tiền -thực hiện rút tiền (TàiKhoản)
-thông báo kết quả (GiaoDichGD) -in hoá đơn rút (GiaoDịchGD)
-đóng giao diện rút tiền (GiaoDịchGD) Khách hàng chọn đóng Đóng giao diện rút tiền (GiaoDịchGD)
Trang 74Thi t k t ng giao di n h th ng ATM ế ế ầ ệ ệ ố
Thi t k t ng giao di n h th ng ATM ế ế ầ ệ ệ ố
rútTiền()
tk:TàiKhoản
tạoGiaoTác() tạoMới() gánThôngTin() CậpNhậtGiaoDịch() hiểnThị("Rút")
Chọn không rút
đóng()
Rút thành công Rút không thành công thôngBáo()
Kết quả thông báo cho khách hàng
đóng() inHoáĐơn() Hoá đơn rút tiền
Trang 75Khởi động máy hoàn
thành hiện thị giao diện khởi động máy (MáyATMKhởiĐộngGD)
Nhân viên chọn đóng -cập nhật số tiền cho hiện hành cho máy
(MáyATM)
-thực hiện kết nối tới mạng ngân hàng (NgânHàng)
-đóng giao diện khởi động (MáyATMKhởiĐộngGD) MáyATMKhởiĐộngGD::+hiểnThị()
MáyATM::+cậpNhậtSốTiền(sốTiền:float)
NgânHàng::+kếtNối()
MáyATMKhởiĐộngGD::+đóng()
Trang 77Thi t k t ng giao di n h th ng ATM ế ế ầ ệ ệ ố
Sử dụng lớp điều khiển
Chọn nút rút tiền
Chọn đồng ý rút tiền Nhập số tiền rút
tạoGiaoTác()
tạoMới() gánThôngTin() cậpNhậtGiaoDịch() hiểnThị("Rút")
thôngBáo() Kết quả thông báo cho khách hàng
đọcTàiKhoản()
tạoTàiKhoản() tk:TàiKhoản
lấy_TàiKhoản() rútTiền()
rútTiền()
Rút thành công Rút không thành công Kết quả
Trang 79 giaoD chGD:GiaoD chGD giaoD chGD:GiaoD chGD ị ị ị ị
tàiKho nGD:TàiKho nGD tàiKho nGD:TàiKho nGD ả ả ả ả
Trang 80Thi t k t ng giao di n h th ng ATM ế ế ầ ệ ệ ố
#lấy_KháchHàng()
+khởiĐộngMáy() +đóngMáy()
+kếtNối() +đóngKếtNối()
#tắtMáy()
+gửiTiền()
MáyATM_GD -giaoDịchGD:GiaoDịchGD -tàiKhoảnGD:TàiKhoảnGD +hiểnThị()
+đóng() -hiểnThịThôngTin()
MáyATMKhởiĐộngGD -máyATM:MáyATM +hiểnThị()
+đóng()
KháchHàngGD -kháchHàng:KháchHàng +hiểnThị()
+đóng() -thôngBáo()
T ng giao di nầ ệ
T ng nghi p vầ ệ ụ
+lấy_TàiKhoản() -inHoáĐơn()
#ngHàngDB:NgânHàngDB
#ngHàngDB:NgânHàngDB
#cậpNhậtSốTiền()
+gánThôngTinGiaoDịch()
Trang 81Ch ươ ng 9 THI T K USE CASE Ế Ế
Ch ươ ng 9 THI T K USE CASE Ế Ế
Kiến trúc ba tầng (tree-layer)
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
Mô tả hiện thực hoá nội dung thiết kế use case
Trang 82Mô t hi n th c hoá Use case ả ệ ự
Các sơ đồ hiện thực hoá use case
Trang 83Mô t hi n th c hoá Use case ả ệ ự
Mô t hi n th c hoá Use case ả ệ ự
Mô tả hiện thực hoá use case “ Truy vấn thông tin tài
+hiểnThị()
+đóng()
-hiểnThịThôngTin()
NgânHàngDB +đọcKháchHàng()
+cậpNhậtTàiKhoản() +cậpNhậtGiáoTác() +đọcTàiKhoản()
MáyATM_GD -giaoDịchGD:GiaoDịchGD
-tàiKhoảnGD:TàiKhoảnGD
+hiểnThị()
+đóng()
Trang 84Mô t hi n th c hoá Use case ả ệ ự
Chọn xem thông tin hiểnThị()
lấy_TàiKhoản()
đọcTàiKhoản()
tạoTàiKhoản()
tk:TàiKhoản tk:TàiKhoản
hiểnThịThôngTin(
)
Chọn đóng giao diện xem thông tin
đóng()
Trang 85Mô t hi n th c hoá Use case ả ệ ự
Mô t hi n th c hoá Use case ả ệ ự
lấy_TàiKhoản()
4: đọcTàiKhoản()
5: tạoTàiKhoản()
6: tk:TàiKhoản7: tk:TàiKhoản
8: hiểnThịThôngTin()9: Chọn đóng giao diện xem thông tin
10: đóng()