tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル標準モジュールとクラスモジュール
記事No15154
投稿日: 2011/04/08(Fri) 15:10
投稿者レイ
初めて投稿させて頂きます。
急ぎの内容では御座いませんのでお時間がある際に御回答いただければと思います。
なお、間違い、勘違いなどありましたらご指摘頂けると幸いです。

現在、組み込み製品の試験プログラムを作成しており、
その一部としてメッセージを表示するプログラムを作成しております。
・メッセージ内容一覧
    ・プログラムの終了問合せ
    ・エラーメッセージ
    ・注意メッセージ
    ・問合せメッセージ
    ・その他メッセージ

これらのメッセージを表示する方法として以下の2種類を検討しております。
1.標準モジュールにプロージャを記載。
2.クラスモジュールに記載。

「オブジェクト指向」の観点から、どちらの方法で実装するのが良いのでしょうか?
また、他の方法が良いなどありましたらご教示頂けますようお願い致します。

使用環境
 WindowsXP SP3
 VB6.0
プログラマ暦
 4年

実際に使用していますコードを以下に記載します。
なお、注意、問合せについてはエラーとほぼ同様のため省略させて頂きました。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
1.標準モジュール版

'----------プログラム終了メッセージ----------
Function ProgramEnd() As Integer
Dim Msg1 As String                      'メッセージタイトル
Dim Msg2 As String                      'メッセージ内容
    Msg1 = "プログラムの終了"
    Msg2 = "終了しますか?"
    ProgramEnd = MsgBox(Msg2, vbQuestion Or vbOKCancel, Msg1)
End Function

'----------エラーメッセージ----------
Sub ErrorMessage()
Dim Msg1 As String                      'メッセージタイトル
Dim Msg2 As String                      'メッセージ内容
    Msg1 = "Error"
    Msg2 = "エラーが発生しました。" & vbCrLf & "内容:" & Err.Description
    MsgBox Msg2, vbCritical, Msg1
End Sub

'----------その他メッセージ----------
Sub OtherMessage(ByVal MsgData1 As String, ByVal MsgData2 As String, ByVal MsgType As Integer)
    MsgBox MsgData2, MsgType, MsgData1
End Sub

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
2.クラスモジュール版

'メッセージ構造体
Private Type Msg
    Prompt  As String
    Title   As String
    Buttons As Long
End Type

Private ProEndMsg As Msg  'プログラム終了メッセージ
Private ErrMsg    As Msg  'エラーメッセージ
Private ExcMsg    As Msg  '注意メッセージ
Private QueMsg    As Msg  '問合せメッセージ

'----------クラス初期化----------
Private Sub Class_Initialize()

    ProEndMsg.Prompt = "終了しますか?"                             'プログラム終了メッセージ:内容
    ProEndMsg.Title = "プログラムの終了"                               'プログラム終了メッセージ:タイトル
    ProEndMsg.Buttons = vbQuestion Or vbOKCancel                    'プログラム終了メッセージ:ボタン、アイコン
    ErrMsg.Prompt = "エラーが発生しました。" & vbCrLf & "内容:"    'エラーメッセージ:タイトル
    ErrMsg.Title = "Error"                                          'エラーメッセージ:タイトル
    ErrMsg.Buttons = vbCritical                                     'エラーメッセージ:アイコン

End Sub

'----------プログラム終了メッセージ----------
Function ProgramEnd() As Integer
    ProgramEnd = MsgBox(ProEndMsg.Prompt, ProEndMsg.Buttons, ProEndMsg.Title)
End Function

'----------エラーメッセージ----------
Sub ErrorMessage(ByVal ErrDescription As String)
    MsgBox ErrMsg.Prompt & ErrDescription, ErrMsg.Buttons, ErrMsg.Title
End Sub

'----------その他メッセージ----------
Sub OtherMessage(ByVal MsgPrompt As String, ByVal MsgTitle As String, Optional ByVal Buttons As Long)
    MsgBox MsgPrompt, Buttons, MsgTitle
End Sub

※本来であれば以下のようにすべきだと思うのですが、VB6.0では継承が出来ないので
クラスモジュールにメソッドとして実装しています。
    メッセージクラス------------スーパークラス
        プログラム終了------サブクラス
        エラー--------------サブクラス
        注意----------------サブクラス
        問合せ--------------サブクラス
        その他--------------サブクラス

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

[ツリー表示へ]
タイトルRe: 標準モジュールとクラスモジュール
記事No15155
投稿日: 2011/04/08(Fri) 15:31
投稿者しるふぃん
正直クラスを使ったからといって、処理性能があがるわけでもない。
でも、開発者側から見るとコードが整理しやすく効率よく作ることが出来ます。

ようするに、ダラダラコーディングするよりも、バグの原因が特定しやすくなるし、
分散開発や同じソースを他のプロジェクトでも利用できるようにもなりますよね。

そゆ見方をするならば、クラス化するほうがいいのかもしれません。


というような、個人的な考え方で書いてしまいましたが・・・。

[ツリー表示へ]
タイトルRe^2: 標準モジュールとクラスモジュール
記事No15157
投稿日: 2011/04/08(Fri) 15:45
投稿者レイ
しるふぃん様

御回答ありがとうございます。


> というような、個人的な考え方で書いてしまいましたが・・・。

この内容に関しては個人の見方、考え方などで変わると思い質問致しました。

私としても、再利用やメンテナンスなどを考慮した場合はクラス化すべきと思います。
だた、使用する際の手続き(インスタンス化など)や使い勝手を考慮すると、
標準モジュールに記載しても良いかなと思っています。
※標準モジュール記載の場合、「Call」ですむため。

[ツリー表示へ]
タイトルRe^3: 標準モジュールとクラスモジュール
記事No15160
投稿日: 2011/04/09(Sat) 09:51
投稿者しるふぃん
レイさま

確かにそれはありますね。
仕事でなされているかどうかはわかりませんが
仕事上でのコーディングルール等があるのであれば、統一
しておくのがいいですよね。

[ツリー表示へ]
タイトルRe^4: 標準モジュールとクラスモジュール
記事No15161
投稿日: 2011/04/09(Sat) 23:31
投稿者レイ
しるふぃん様

> 仕事上でのコーディングルール等があるのであれば、統一
> しておくのがいいですよね。

統一してあることがベストですよね。
残念ながら社内テスト用のツールとしての利用が主なため、
VBとしてはコーディングルールがありません。(たぶん)

C言語でのソフト作成を行っている方がおりますが、
そちらも明確なコーディングルール(社内規定として)は無い様に思います。
※プログラミング時に通常行うルール+個人ルールのような感じ。
 社内的な経緯もありますので詳細は割愛します。

[ツリー表示へ]
タイトルRe^5: 標準モジュールとクラスモジュール【解決】
記事No15167
投稿日: 2011/04/13(Wed) 08:54
投稿者レイ
他の回答がなさそうなので終了と致します。

有難う御座いました。

[ツリー表示へ]