VBAでアブストラクトクラス/インターフェースクラス(ポリモーフィズム)

最近、VBAポリモーフィズムをできることに気づきました。


こんな感じ


TestModule

Option Explicit

Sub UnitTest_interface()
    Dim trades As New Cls_IRSwap
    Call trades.Inf_Trade_setTradeID("IR0001")
    Call UniteTest_SubRoutine_interface(trades)
End Sub

Sub UniteTest_SubRoutine_interface(ByRef ins As Inf_Trade)
    Debug.Print ins.getTradeID()
End Sub

Cls_IRSwap

Option Explicit

Implements Inf_Trade


' ========================================================================
' Implementation of Inf_Trade
' ========================================================================
Private mTradeID As String
Public Function Inf_Trade_getTradeID() As String: Inf_Trade_getTradeID = mTradeID: End Function
Public Function Inf_Trade_setTradeID(ByRef RHS As String): mTradeID = RHS: End Function


Inf_Trade

Option Explicit

' Caution !!
' This class is Interface class

Private mTradeID As String
Public Function getTradeID() As String:  End Function


VBAで長いコードを書くと、どうしてもだらだらしがちなのですが(じゃぁVBA使うなって感じですが・・・・・・)、C++のような書き方ができると結構コードをすっきりさせれそうです。