Student Ktlt Chapter1 Oop Casestudy

  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Student Ktlt Chapter1 Oop Casestudy as PDF for free.

More details

  • Words: 1,594
  • Pages: 65
Nhập môn KTLT (tiếp) Nguyễn Diệu Hương [email protected] [email protected]

5. Case Study: Phần mềm máy ATM

5.1. Xác định yêu cầu bài toán

Bà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 dịch tài chính cơ bản Mỗi người dùng chỉ có 1 tài khoản (account) Người dùng được phép: ‰ ‰ ‰

Xem số dư tài khoản Rút tiền mặt Nạp tiền vào tài khoản

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

Một phiên giao dịch ATM xác thực người dùng, thông qua:

1. „ „ Æ

2.

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)

Thực hiện giao dịch xem số dư tài khoản/nạp tiền/rút tiền

Xác thực người dùng Màn hình nhắc người dùng nhập số tài khoản Người dùng nhập số TK (5 kí tự) Màn hình nhắc người dùng nhập số PIN Người dùng nhập số PIN Nếu số TK và PIN:

1.

2. 3. 4. 5. „ „

Đúng: hiện menu chính Sai: thông báo và lặp lại bước 1

Menu chính

Giao dịch rút tiền

Giao dịch rút tiền Người dùng nhập lựa chọn (1-6) Nếu số tiền muốn rút so với số tiền trong TK:

1. 2. „ „ „

Nếu khay đựng tiền (Cash Dispenser):

3. „ „

4. 5. 6.

> : 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) Có đủ tiền: thực hiện 4. Không đủ tiền: hiện thông báo yêu cầu nhập ít hơn và quay lại 1.

Trừ số tiền rút trong số dư tài khoản của người dùng trong CSDL Máy phát tiền ra khay Màn hình hiện thông báo nhắc người dùng rút tiền khỏi khay.

Giao dịch nạp tiền Màn hình nhắc người dùng nhập số tiền muốn nạp Người dùng nhập:

1. 2.

Số tiền: thực hiện 3. 0: hoãn giao dịch và hiện menu chính

„ „

Hiện thông báo yêu cầu đặt tiền vào khay (deposit slot) Nếu khay đút tiền:

3.

4.

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.

User’s Use case diagram

5.2. Thiết kế hệ thống ATM

Thiết kế hệ thống ATM 1. 2. 3.

4. 5.

Nhận dạng các lớp Nhận dạng các thuộc tính của lớp Nhận dạng các trạng thái và hành động của đối tượng Nhận dạng các thao tác của lớp Nhận dạng sự tương tác giữa các đối tượng trong hệ thống

1. Nhận dạng các lớp

Các lớp 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

ATM Screen Keypad CashDispenser DepositSlot Account BankDatabase BalanceInquiry Withdrawal Deposit.

Mối quan hệ giữa các lớp

Mô hình mối quan hệ giữa các lớp cho hệ thống ATM

2. Nhận dạng thuộc tính của lớp

Mô tả lớp

ATM

người dùng được xác thực BalanceInquiry số tài khoản Withdrawal số tài khoản, số tiền Deposit số tài khoản, số tiền BankDatabase (không có) Account số tài khoản, PIN, số dư tài khoản Screen (không có) Keypad (không có) CashDispenser 500 tờ 20$ DepositSlot (không có)

Mô hình hóa các thuộc tính

3. Nhận dạng trạng thái và hành động của đối tượng

Sơ đồ trạng thái cho đối tượng ATM

Sơ đồ hành động của giao dịch BalanceInquiry

Sơ đồ hành động của giao dịch Withdrawal

4. Nhận dạng các thao tác/hành vi của lớp

Danh sách các động từ/ngữ động từ ATM BalanceInquiry Withdrawal Deposit BankDatabase

Account

Thực hiện các giao dịch tài chính [không có] [không có] [không có] 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 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

Danh sách các động từ/ngữ động từ (tiếp) Screen

Hiện thông báo cho người dùng

Keypad

Nhận một giá trị số đầu vào từ người dùng

CashDispenser Phát tiền, quyết định liệu có đủ tiền so với yêu cầu rút tiền DepositSlot

Nhận tiền

Mô hình hóa hành vi

Nhận dạng các tham số của hành vi

BankDatabase – Tham số

Account – Tham số

Screen – Tham số

CashDispenser – Tham số

BalanceInquiry, Withdrawal và Deposit, Keypad, DepositSlot – Tham số „

BalanceInquiry, Withdrawal và Deposit::execute

„

Keypad::getInput

„

DepositSlot::isEnvelopeReceived

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

Liệt kê các tương tác - ATM Đối tượng gửi Thông báo

Đối tượng nhận

ATM

displayMessage

Screen

getInput

Keypad

authenticateUser

BankDatabase

execute

BalanceInquiry

execute

Withdrawal

execute

Deposit

Liệt kê các tương tác – BalanceInquiry Đối tượng gửi Thông báo

Đối tượng nhận

BalanceInquiry getAvailableBalance BankDatabase getTotalBalance

BankDatabase

displayMessage

Screen

Liệt kê các tương tác - Withdrawal Đối tượng gửi Thông báo Withdrawal

Đối tượng nhận

displayMessage

Screen

getInput

Keypad

getAvailableBalance

BankDatabase

isSufficientCashAvailable CashDispenser debit

BankDatabase

dispenseCash

CashDispenser

Liệt kê các tương tác - Deposit Đối tượng gửi Thông báo

Đối tượng nhận

Deposit

displayMessage

Screen

getInput

Keypad

isEnvelopeReceived DepositSlot credit

BankDatabase

Liệt kê các tương tác BankDatabase Đối tượng gửi Thông báo

Đối tượng nhận

BankDatabase validatePIN

Account

getAvailableBalance Account getTotalBalance

Account

debit

Account

credit

Account

validatePIN

Account

Lược đồ tương tác „

„

Mô hình hóa cách các đối tượng tương tác với nhau 2 loại: ‰ ‰

Lược đồ giao tiếp: Lược đồ tuần tự:

Lược đồ giao tiếp của ATM thực hiện truy cập số dư tài khoản

Lược đồ giao tiếp thực hiện truy cập số dư tài khoản

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

Lược đồ tuần tự mô hình hóa thực hiện giao dịch Withdrawal

Vẽ lược đồ tuần tự mô hình hóa giao dịch Deposit

5.3. Cài đặt hệ thống ATM

Xác định quyền điểu khiển

Phối hợp lược đồ lớp và lược đồ tương tác

Hướng dẫn cài đặt - 1 „

„

Tên của header file = tên của lớp trong lược đồ Sử dụng các tiền xử lý: #ifndef, #define và #endif

Ví dụ - Lớp Withdrawal // Withdrawal.h // Definition of class Withdrawal that // represents a withdrawal transaction #ifndef WITHDRAWAL_H #define WITHDRAWAL_H class Withdrawal { }; // end class Withdrawal #endif // WITHDRAWAL_H

Hướng dẫn cài đặt - 2 „

Dữ liệu thành viên = thuộc tính trong lược đồ lớp

Ví dụ - Lớp Withdrawal // Withdrawal.h // Definition of class Withdrawal that // represents a withdrawal transaction #ifndef WITHDRAWAL_H #define WITHDRAWAL_H class Withdrawal { private: // attributes int accountNumber; // account to withdraw funds from double amount; // amount to withdraw }; // end class Withdrawal #endif // WITHDRAWAL_H

Hướ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.

#ifndef WITHDRAWAL_H #define WITHDRAWAL_H #include #include #include #include

"Screen.h" "Keypad.h" "CashDispenser.h" "BankDatabase.h"

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

Hướng dẫn cài đặt - 4 „

#include header_file khi chỉ sử dụng tham chiếu tới đối tượng là không cần thiết.

„

Lan truyền khai báo (forward declaration)

#ifndef WITHDRAWAL_H #define WITHDRAWAL_H class class class class

Screen; // forward declaration of class Screen Keypad; // forward declaration of class Keypad CashDispenser; // forward declaration of CashDispenser 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

Hướng dẫn cài đặt - 5 „

Khuôn mẫu hàm thành viên = thao tác trong lược đồ

#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 { public: // operations void execute(); // perform the transaction 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

Bài tập: cài đặt lớp Account

Bà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ế

Related Documents

Ktlt
May 2020 5
Ktlt
June 2020 6
Casestudy
November 2019 25