undefined
undefined

Polymorphism I - VB.NET

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

In a console app, write a procedure to process the student account by receiving a base class type polymorphically. The procedure should load up all the properties and use all the methods.



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


0 comments to "Polymorphism I - VB.NET"

Post a Comment

About This Blog

My Blogs

Followers

Web hosting for webmasters