Classes and Objects
Objectives
In this lab assignment, students will learn:
- How to design and define class
- How to create object
- How to define a tester program to test the object
Goals
In this lab assignment, students will demonstrate the abilities to:
- Design and define class
- Create object
- Define a tester program to test the object
Grading
- Design and create a GUI (20 pts)
- Design and define class (40 pts)
- Define tester program (40 pts)
Develop a "BankAccount" windows form project, which will allow user to
- Enter amount of money to deposit, withdraw or move
- Deposit money in checking or savings account.
- Withdraw money from checking or savings account.
- Move money between checking account and saving account.
- View the new balance on the form after each transaction.
Here is sample input/output:
When start to run project, initial balances for both checking and saving accounts ($1000.00) should be displayed on the form.
After deposit $500.00 to checking account.
After move $800.00 from saving to checking account.
If user attempts to withdraw $4000.00 from checking account at this moment, a MessageBox should be displayed with an error message.
Project specifications --------
1. This project should perform object-oriented programming. Add a class file "Account.vb" to define class "Account", rename "Form1.vb" file as "AccountTesterForm.vb" which will create account object and test the object's attributes and behaviors.
2. This is the GUI for the bank. The amount of money need to be entered from the textbox, each button represents a type of transaction. The new balance will be displayed on the form after each transaction. Please use the same control names in order to use the tester program code below.
balanceLabel
amountTextBox
moveStoCButton
withdrawSavingButton
depositSavingButton
moveCtoSButton
depositCheckingButton
withdrawCheckingButton
3. Here is the definition of class Account, some codes are missing, you may copy the code to your project in Visual Studio and complete the missing code.
Public Class Account
Private savingBalance As Decimal 'instance variable for balance in saving account
Private checkingBalance As Decimal 'instance variable for balance in checking account
'constructor which initialize balances in both accounts to 1000.00
Public Sub New()
savingBalance = 1000.0
checkingBalance = 1000.0
End Sub
'property for savingBalance
Public Property Saving() As Double
Get
Return savingBalance
End Get
Set(ByVal value As Double)
If value < 0 Then
savingBalance = 0
Else
savingBalance = value
End If
End Set
End Property
'property for checkingBalance
Public Property Checking() As Double
'write your code here
End Property
'define how to deposit money to checking account
Public Sub depositChecking(ByVal amount As Decimal)
'write your code here
End Sub
'define how to deposit money to saving account
Public Sub depositSaving(ByVal amount As Decimal)
'write your code here
End Sub
'define how to withdraw money from checking account
Public Sub withdrawChecking(ByVal amount As Decimal)
If amount > Checking Then
Throw New ArgumentOutOfRangeException(
"Withdrawal amount must be less than or equal to balance.")
ElseIf amount <= 0D Then
Throw New ArgumentOutOfRangeException(
"Withrawal amount must be positive.")
End If
Checking -= amount
End Sub
'define how to withdraw money from saving account
Public Sub withdrawSaving(ByVal amount As Decimal)
'write your code here
End Sub
'define how to move money from checking to saving account
Public Sub moveMoneyCheckingtoSaving(ByVal amount As Double)
'write your code here
End Sub
'define how to move money from saving to checking account
Public Sub moveMoneySavingtoChecking(ByVal amount As Double)
'write your code here
End Sub
End Class
4. Here is the code for accountTesterForm.vb, some codes are missing, you may copy the code to your project in Visual Studio and complete the missing code (The header of event handler methods can NOT be copied, they need to be created by double clicking the corresponding buttons).
Option Strict On
Public Class AccountTesterForm
Dim account As New Account()
Private Sub AccountTesterForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
displayBalance()
End Sub
Private Sub DepositCheckingButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
DepositCheckingButton.Click
Try
account.depositChecking(Convert.ToDecimal(AmountTextBox.Text))
displayBalance()
Catch ex As ArgumentOutOfRangeException
MessageBox.Show("Deposit amount must be positive.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
AmountTextBox.Clear() ' clear the inputTextBox
AmountTextBox.Focus()
End Sub
Private Sub DepositSavingButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DepositSavingButton.Click
'write your code here
End Sub
Private Sub withdrawCheckingButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
withdrawCheckingButton.Click
'write your code here
End Sub
Private Sub withdrawSavingButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles withdrawSavingButton.Click
'write your code here
End Sub
Private Sub movectosButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles movectosButton.Click
'write your code here
End Sub
Private Sub moveStoCButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles moveStoCButton.Click
'write your code here
End Sub
Private Sub displayBalance()
balanceLabel.Text = "Checking balance: " & String.Format("{0:C}", account.Checking) & vbCrLf & "Saving balance: " & String.Format("{0:C}", account.Saving)
End Sub
End Class