Exercise on Polymorphism
This exercise uses a variety of access types.
The base class BankAccount is abstract. The job of the base class is to generate a new account number each time a derived class is instantiated. The maximum single debit is $50. NextNumber is a shared propery. The Balance property in the Student class returns the balance + the student's overdraftamount.
The PrintStatement prints the account number and the balance.
The PrintSpecialComments identifies the Student's overdraft limit.
| Class Diagram |
Public MustInherit Class BankAccount
Private mBalance As Double
Private mNextNumber As Integer
Private mNumber As Integer
Protected ReadOnly Property Balance As Double
Get
Return mBalance
End Get
End Property
Public MustOverride Property MaxSingleDebit As Double
Public Shared Property NextNumber As Integer
Public Sub Credit(Amount As Double)
mBalance += Amount
End Sub
Public Function Debit(Amount As Double) As Boolean
If Amount > MaxSingleDebit Then
Throw New ArgumentException("The amount exceeds the Maximum single debit amount")
Else
mBalance -= Amount
Return True
End If
End Function
Protected Sub New(Balance As Double)
NextNumber += 1
mNumber = NextNumber
mBalance = Balance
End Sub
Public MustOverride Sub PrintSpecialComments()
Public Overridable Sub PrintStatement()
Console.WriteLine("Account number: " & mNumber)
Console.WriteLine("Balance: " & mBalance.ToString("C"))
End Sub
End Class
Public Class StudentAccount
Inherits BankAccount
Private mOverdraftLimit As Double
Protected Shadows ReadOnly Property Balance As Double
Get
Return MyBase.Balance
End Get
End Property
Public Overrides Property MaxSingleDebit As Double
Public Sub IncreaseLimit(Amount As Double)
_MaxSingleDebit += Amount
End Sub
Public Sub New(Balance As Double, OverdraftLimit As Double)
MyBase.New(Balance)
mOverdraftLimit = OverdraftLimit
MaxSingleDebit = 50
End Sub
Public Overrides Sub PrintSpecialComments()
Console.WriteLine("Overdraft limit: " & mOverdraftLimit.ToString("c"))
Console.WriteLine("Student overdraft limit: " & mOverdraftLimit.ToString("c"))
Console.WriteLine("Maximum single withdrawal: " & MaxSingleDebit.ToString("c"))
End Sub
Public Overrides Sub PrintStatement()
MyBase.PrintStatement()
End Sub
End Class
Public Class MyApp
Public Sub Main()
Try
Dim x As BankAccount = New StudentAccount(3050, 310)
Dim y As BankAccount = New StudentAccount(5050, 510)
x.Credit(100)
x.Debit(50)
y.Credit(100)
y.Debit(50)
UseAnyKindOfAccount(x)
Console.WriteLine()
UseAnyKindOfAccount(y)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
Public Sub UseAnyKindOfAccount(anAccount As BankAccount)
Dim x As StudentAccount
x = TryCast(anAccount, StudentAccount)
x.PrintStatement()
x.PrintSpecialComments()
End Sub
End Class
Imports ClassLib
Module Module1
Sub Main()
Dim x As New MyApp
x.Main()
Console.ReadLine()
End Sub
End Module
So this is my first post of this blog. What my plans are with this blog is to post examples of programming code that I have done along the way. I am currently going through college learning all kinds of nifty thing to do with coding and I thought I could share it.
Currently my coding skills are somewhat limited to Visual Basic, T-SQL, JavaScript, and HTML. Over time I would like to be able to place here all the useful code compiled into a giant compilation of everything I covered over the 2 year course.
As well if there are any requests for tutorials or anything let me know and maybe I can see what I can come up with.
