1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 9 Thiết kế Use Case

86 564 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 86
Dung lượng 2,45 MB

Nội dung

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 1

PHÂN TÍCH & THI T Ế

Trang 2

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 3

Ki 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 4

Ki 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 5

User 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 7

Ch ươ 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 9

L 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 11

Thi 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 12

Xá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 13

Xá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 14

0 n1

Trang 15

Chuy 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 17

Chuy 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 19

Chuy 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 20

Chuy 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 21

Chuy 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 22

Chuy 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 23

NhânViênBiênChếlươngTháng

Trang 24

NhânViênBiênChếlươngTháng

Trang 25

NhânViênBiênChếlươngTháng

Trang 27

Xá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 28

Xá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 29

Xá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 30

Xá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 31

Xá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 32

Xá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 33

Xá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 34

Xá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 35

Xá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 36

Xá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 37

Xá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 39

Xá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 40

Xá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 45

vKhá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 46

Ngâ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 47

Mộ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 48

Một đối tượng giao

diện gửi tiền

cậpNhậtTàiKhoản()tạoGiaoTác()

tk:TàiKhoản

Trang 49

Xá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 52

diệ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 53

vGiaoDị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 54

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 55

Thi 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 56

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

Trang 57

Thi 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 58

Thi 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 59

Thi 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 60

Biể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 61

Thi 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 65

Thi 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 68

ngườ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 70

Xử lý của use case Đăng nhập không hợp lệ

Trang 71

Chọ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 73

Khá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 74

Thi 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 75

Khở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 77

Thi 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 80

Thi 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 81

Ch ươ 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 82

Mô t hi n th c hoá Use case ả ệ ự

Các sơ đồ hiện thực hoá use case

Trang 83

Mô 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 84

Mô 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 85

Mô 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()

Ngày đăng: 13/05/2014, 19:23

HÌNH ẢNH LIÊN QUAN

Bảng KháchHàng - Chương 9 Thiết kế Use Case
ng KháchHàng (Trang 17)
Bảng TàiKhoản - Chương 9 Thiết kế Use Case
ng TàiKhoản (Trang 19)
Bảng NhânViên - Chương 9 Thiết kế Use Case
ng NhânViên (Trang 20)
Bảng ĐơnHàng - Chương 9 Thiết kế Use Case
ng ĐơnHàng (Trang 21)
Bảng NhânViên Bảng NhânViênCôngNhật - Chương 9 Thiết kế Use Case
ng NhânViên Bảng NhânViênCôngNhật (Trang 23)
Bảng NhânViênBiênChế - Chương 9 Thiết kế Use Case
ng NhânViênBiênChế (Trang 24)
Bảng NhânViên Bảng NhânViênBiênChế - Chương 9 Thiết kế Use Case
ng NhânViên Bảng NhânViênBiênChế (Trang 25)
Bảng KháchHàng - Chương 9 Thiết kế Use Case
ng KháchHàng (Trang 26)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w