ATM xác thực người dùng, thông qua: Số tài khoản account number Số PIN personal identification number Æ Tương tác với cơ sở dữ liệu về thông tin tài khoản của ngân hàng số tài khoản,
Trang 1Kỹ thuật lập trình
Chương 1 (tiếp)
Nguyễn Diệu Hương
huongnd@it-hut.edu.vn huongnd-fit@mail.hut.edu.vn
Trang 25 Case Study: Phần mềm máy ATM
Trang 35.1 Xác định yêu cầu bài
toán
Trang 4Bài toán
Một ngân hàng muốn cài đặt một máy ATM
mới cho phép người dùng thực hiện các giao
Trang 5Giao diện của máy ATM
Trước mỗi ngày, khay đựng tiền được nạp vào 500 tờ $20.
Trang 6Một phiên giao dịch
1. ATM xác thực người dùng, thông qua:
Số tài khoản (account number)
Số PIN (personal identification number)
Æ Tương tác với cơ sở dữ liệu về thông tin tài
khoản của ngân hàng (số tài khoản, PIN, số dư tài khoản)
2. Thực hiện giao dịch xem số dư tài
khoản/nạp tiền/rút tiền
Trang 8Menu chính
Trang 9Giao dịch rút tiền
Trang 101. Người dùng nhập lựa chọn (1-6)
2. Nếu số tiền muốn rút so với số tiền trong TK:
> : hiện thông báo và lặp lại 1.
<= : thực hiện 3.
(Nếu chọn 6-Cancel: Quay trở lại menu chính)
3. Nếu khay đựng tiền (Cash Dispenser):
5. Máy phát tiền ra khay
6. Màn hình hiện thông báo nhắc người dùng rút tiền
khỏi khay
Trang 11Giao dịch nạp tiền
1. Màn hình nhắc người dùng nhập số tiền muốn nạp
2. Người dùng nhập:
Số tiền: thực hiện 3.
0: hoãn giao dịch và hiện menu chính
3. Hiện thông báo yêu cầu đặt tiền vào khay (deposit
slot)
4. Nếu khay đút tiền:
Nhận được tiền trong vòng 2 phút: hệ thống cộng số tiền
nạp vào số dư TK của người dùng trong CSDL
(Sau khi ngân hàng đã kiểm chứng khoản tiền, lượng tiền nạp vào này mới được phép rút)
Không nhận được tiền: hiện thông báo hoãn giao dịch và
hiện menu chính.
Trang 12User’s Use case diagram
Trang 135.2 Thiết kế hệ thống ATM
Trang 151 Nhận dạng các lớp
Trang 17Mối quan hệ giữa các lớp
Trang 18Mô hình mối quan hệ giữa các lớp cho hệ thống ATM
Trang 202 Nhận dạng thuộc tính của lớp
Trang 21số tài khoản, PIN, số
dư tài khoản
ATM
Trang 22Mô hình hóa các thuộc tính
Trang 233 Nhận dạng trạng thái và hành động của đối tượng
Trang 24Sơ đồ trạng thái cho đối tượng ATM
Trang 25Sơ đồ hành động của giao dịch BalanceInquiry
Trang 26Sơ đồ hành động của giao dịch
Withdrawal
Trang 274 Nhận dạng các thao tác/hành vi của lớp
Trang 28Danh sách các động từ/ngữ động từ
Truy cập số dư tài khoản, cộng thêm tiền muốn nạp vào tài khoản, trừ đi tiền muốn rút trong tài khoản
Account
Xác thực người dùng, truy cập số
dư tài khoản, cộng thêm tiền muốn nạp vào tài khoản, trừ đi tiền muốn rút trong tài khoản
Trang 29Danh sách các động từ/ngữ động từ (tiếp)
Nhận tiền
DepositSlot
Phát tiền, quyết định liệu có đủ tiền
so với yêu cầu rút tiền
Trang 30Mô hình hóa hành vi
Trang 31Nhận dạng các tham số của hành vi
Trang 32BankDatabase – Tham số
Trang 33Account – Tham số
Trang 34Screen – Tham số
Trang 35CashDispenser – Tham số
Trang 36BalanceInquiry, Withdrawal và Deposit, Keypad, DepositSlot – Tham số
BalanceInquiry, Withdrawal và Deposit::execute
Keypad::getInput
DepositSlot::isEnvelopeReceived
Trang 375 Nhận dạng sự tương tác giữa các đối tượng trong hệ thống
Tương tác (collaboration): 2 đối tượng giao tiếp với nhau để thực hiện công việc
Trang 38Liệt kê các tương tác - ATM
Depositexecute
Withdrawalexecute
BalanceInquiryexecute
BankDatabaseauthenticateUser
KeypadgetInput
ScreendisplayMessage
ATM
Đối tượng nhậnThông báo
Đối tượng gửi
Trang 39Liệt kê các tương tác –
BalanceInquiry
ScreendisplayMessage
BankDatabasegetTotalBalance
BankDatabasegetAvailableBalance
BalanceInquiry
Đối tượng nhậnThông báo
Đối tượng gửi
Trang 40Liệt kê các tương tác - Withdrawal
Đối tượng gửi Thông báo Đối tượng nhận
Trang 41Liệt kê các tương tác - Deposit
Đối tượng gửi Thông báo Đối tượng nhận
Trang 42Liệt kê các tương tác
Trang 44Lược đồ giao tiếp của ATM thực hiện truy cập số dư tài khoản
Trang 45Lược đồ giao tiếp thực hiện truy cập
số dư tài khoản
Trang 46Hãy vẽ các lược đồ giao tiếp
Xác thực người dùng
Giao dịch rút tiền
Giao dịch nhận tiền
Trang 47Lược đồ
tuần tự mô hình hóa
thực hiện giao dịch Withdrawal
Trang 48Vẽ lược đồ tuần tự mô hình hóa giao dịch Deposit
Trang 495.3 Cài đặt hệ thống ATM
Trang 50Xác định quyền điểu khiển
Trang 51Phối hợp lược đồ lớp và lược đồ tương tác
Trang 54Hướng dẫn cài đặt - 2
Dữ liệu thành viên = thuộc tính trong lược đồ lớp
Trang 55Ví dụ - Lớp Withdrawal
// Withdrawal.h
// Definition of class Withdrawal that
// represents a withdrawal transaction
int accountNumber ; // account to withdraw funds from
double amount ; // amount to withdraw
}; // end class Withdrawal
#endif // WITHDRAWAL_H
Trang 56Hướng dẫn cài đặt - 3
Quan hệ phối hợp = tham chiếu/con trỏ tới các đối tượng khác.
Trang 57int accountNumber ; // account to withdraw funds from
double amount ; // amount to withdraw
// references to associated objects
Screen &screen; // reference to ATM's screen
Keypad &keypad; // reference to ATM's keypad
CashDispenser &cashDispenser; // ref to cash dispenser
BankDatabase &bankDatabase; // ref to the account db }; // end class Withdrawal
#endif // WITHDRAWAL_H
Trang 59#ifndef WITHDRAWAL_H
#define WITHDRAWAL_H
class Screen; // forward declaration of class Screen
class Keypad; // forward declaration of class Keypad
class CashDispenser; // forward declaration of CashDispenser
class BankDatabase; // forward declaration of BankDatabase
class Withdrawal
{
private :
// attributes
int accountNumber ; // account to withdraw funds from
double amount ; // amount to withdraw
// references to associated objects
Screen &screen; // reference to ATM's screen
Keypad &keypad; // reference to ATM's keypad
CashDispenser &cashDispenser; // ref to cash dispenser
BankDatabase &bankDatabase; // ref to the account db
}; // end class Withdrawal
#endif // WITHDRAWAL_H
Trang 60Hướng dẫn cài đặt - 5
Khuôn mẫu hàm thành viên = thao tác trong lược đồ
Trang 61#ifndef WITHDRAWAL_H
#define WITHDRAWAL_H
class Screen; // forward declaration of class Screen
class Keypad; // forward declaration of class Keypad
class CashDispenser; // forward declaration of CashDispenser
class BankDatabase; // forward declaration of BankDatabase
int accountNumber ; // account to withdraw funds from
double amount ; // amount to withdraw
// references to associated objects
Screen &screen; // reference to ATM's screen
Keypad &keypad; // reference to ATM's keypad
CashDispenser &cashDispenser; // ref to cash dispenser
BankDatabase &bankDatabase; // ref to the account db
}; // end class Withdrawal
#endif // WITHDRAWAL_H
Trang 62Bài tập: cài đặt lớp Account
Trang 65Bài tập
Hoàn thành cài đặt toàn bộ chương trình cho
hệ thống ATM theo thiết kế