G.10. Class BalanceInquiry

Class BalanceInquiry (Figs. G.17G.18) derives from abstract base class TRansaction and represents a balance-inquiry ATM transaction. BalanceInquiry does not have any data members of its own, but it inherits TRansaction data members accountNumber, screen and bankDatabase, which are accessible through transaction's public get functions. Note that line 6 #includes the definition of base class transaction. The BalanceInquiry constructor (declared in line 11 of Fig. G.17 and defined in lines 813 of Fig. G.18) takes arguments corresponding to the transaction data members and simply forwards them to TRansaction's constructor, using base-class initializer syntax (line 10 of Fig. G.18). Line 12 of Fig. G.17 contains the function prototype for member function execute, which is required to indicate the intention to override the base class's pure virtual function of the same name.

Figure G.17. BalanceInquiry class definition.

(This item is displayed on page 1307 in the print version)

 1 // BalanceInquiry.h
 2 // BalanceInquiry class definition. Represents a balance inquiry.
 6 #include "Transaction.h" // Transaction class definition
 8 class BalanceInquiry : public Transaction
 9 {
10 public:
11 BalanceInquiry( int, Screen &, BankDatabase & ); // constructor
12 virtual void execute(); // perform the transaction
13 }; // end class BalanceInquiry
15 #endif // BALANCE_INQUIRY_H

Figure G.18. BalanceInquiry class member-function definitions.

(This item is displayed on pages 1307 - 1308 in the print version)

 1 // BalanceInquiry.cpp
 2 // Member-function definitions for class BalanceInquiry.
 3 #include "BalanceInquiry.h" // BalanceInquiry class definition
 4 #include "Screen.h" // Screen class definition
 5 #include "BankDatabase.h" // BankDatabase class definition
 7 // BalanceInquiry constructor initializes base-class data members
 8 BalanceInquiry:: BalanceInquiry( int userAccountNumber, Screen &atmScreen,
 9 BankDatabase &atmBankDatabase )
10 : Transaction( userAccountNumber, atmScreen, atmBankDatabase )
11 {
12 // empty body
13 } // end BalanceInquiry constructor
15 // performs transaction; overrides Transaction's pure virtual function
16 void BalanceInquiry::execute()
17 {
18 // get references to bank database and screen
19 BankDatabase &bankDatabase = getBankDatabase();
20 Screen &screen = getScreen();
22 // get the available balance for the current user's Account
23 double availableBalance =
24 bankDatabase.getAvailableBalance( getAccountNumber() );
26 // get the total balance for the current user's Account
27 double totalBalance =
28 bankDatabase.getTotalBalance( getAccountNumber() );
30 // display the balance information on the screen
31 screen.displayMessageLine( "
Balance Information:" );
32 screen.displayMessage( " - Available balance: " );
33 screen.displayDollarAmount( availableBalance );
34 screen.displayMessage( "
 - Total balance: " );
35 screen.displayDollarAmount( totalBalance );
36 screen.displayMessageLine( "" );
37 } // end function execute

Class BalanceInquiry overrides TRansaction's pure virtual function execute to provide a concrete implementation (lines 1637 of Fig. G.18) that performs the steps involved in a balance inquiry. Lines 1920 get references to the bank database and the ATM's screen by invoking member functions inherited from base class transaction. Lines 2324 retrieve the available balance of the account involved by invoking member function getAvailableBalance of bankDatabase. Note that line 24 uses inherited member function getAccountNumber to get the account number of the current user, which it then passes to getAvailableBalance. Lines 2728 retrieve the total balance of the current user's account. Lines 3136 display the balance information on the ATM's screen. Recall that displayDollarAmount takes a double argument and outputs it to the screen formatted as a dollar amount. For example, if a user's availableBalance is 700.5, line 33 outputs $700.50. Note that line 36 inserts a blank line of output to separate the balance information from subsequent output (i.e., the main menu repeated by class ATM after executing the BalanceInquiry).

Introduction to Computers, the Internet and World Wide Web

Introduction to C++ Programming

Introduction to Classes and Objects

Control Statements: Part 1

Control Statements: Part 2

Functions and an Introduction to Recursion

Arrays and Vectors

Pointers and Pointer-Based Strings

Classes: A Deeper Look, Part 1

Classes: A Deeper Look, Part 2

Operator Overloading; String and Array Objects

Object-Oriented Programming: Inheritance

Object-Oriented Programming: Polymorphism


Stream Input/Output

Exception Handling

File Processing

Class string and String Stream Processing

Web Programming

Searching and Sorting

Data Structures

Bits, Characters, C-Strings and structs

Standard Template Library (STL)

Other Topics

Appendix A. Operator Precedence and Associativity Chart

Appendix B. ASCII Character Set

Appendix C. Fundamental Types

Appendix D. Number Systems

Appendix E. C Legacy Code Topics

Appendix F. Preprocessor

Appendix G. ATM Case Study Code

Appendix H. UML 2: Additional Diagram Types

Appendix I. C++ Internet and Web Resources

Appendix J. Introduction to XHTML

Appendix K. XHTML Special Characters

Appendix L. Using the Visual Studio .NET Debugger

Appendix M. Using the GNU C++ Debugger


C++ How to Program
C++ How to Program (5th Edition)
ISBN: 0131857576
EAN: 2147483647
Year: 2004
Pages: 627

Flylib.com © 2008-2020.
If you may any questions please contact us: flylib@qtcs.net