• ベストアンサー

モジュールとクラスの違いってなんなんですか?

モジュールとクラスの違いってなんなんですか? 本などをみてもいまいち分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

端的かつ正確に言うと、クラスはオブジェクトで、標準モジュール(質問内でモジュールと呼んでいるのは標準モジュールのことだと思いますが)はオブジェクトではありません。 (もし、質問内でモジュールと呼んでいるのが、本当にモジュールという意味で言っているのであれば、クラスはクラスモジュールですし、フォームはフォームモジュールです。クラスはモジュールの一種です、という答えです) 使用方法で言うと、クラスはインスタンス作成時、破棄時にそれぞれイベントが発生するため、変数等の初期化や終了処理などをオブジェクト内で自動化できます。 オブジェクト内で自動化されるため、初期化手続き、参照の開放などクラスを使用する際には内部の動作を意識することなく使用することができます。 つまり、再利用性が高いと言いかえることができます。 また、VB5/6ではAddressOf演算子が標準モジュール内の関数以外には使用できないという制限があるが、それを使用しない前提では、標準モジュールで実現できることはクラスで書きかえることができます。 逆に、クラスではできる事でも、標準モジュールではできないことは山のようにあります。 #1さんが書いたように、複数のインスタンスを作成することもそうですが、当方の利用方法では、コレクションに追加できるという点を挙げたいと思います。他には、自己再起定義(造語)です。ClassA内でClassAオブジェクトを作成するような動作です。ClassA内でClassAを定義した場合、中に作成されたClassAの中にさらにClassAが定義可能で、さらにその内部にClassAが、さらにその内部に・・・と、スタックの許す限り無限に定義されます。 ポリモーフィズム、関数の引数や返り値にクラスを渡すなど、いろいろと標準モジュールには不可能な点が多くあります。

lucky_123
質問者

お礼

皆様 ご回答・アドバイス等ありがとうございます。

その他の回答 (1)

noname#7749
noname#7749
回答No.1

標準モジュールもクラスの1種ですが、任意のタイミングでインスタンスの生成/破棄ができない点、複数のインスタンスを生成できない ( = 常に一つしか存在しないことが保障されている) 点が異なります。 つまり、標準モジュールはデザインパターンで言うところのシングルトンに相当する機能を提供するものと言えます。 詳細はこちら↓を熟読するとよいでしょう。 http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/ やや古い (1998~99年頃?) 内容ですが、参考になるはと思います。 # この記事を書いた当時、執筆者は高校生ぐらい?だったはず。 # 現在はどうされているのでしょうか......?

参考URL:
http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/

関連するQ&A

  • 標準モジュールとクラスモジュールの違い

    マイクロソフトのAccess2000でVBAプログラミングを行なっておりますが、 基本的なことを教えてください。 「標準モジュール」と「クラスモジュール」の違いはなんですか? 例えば、どこからでも使えるプロシージャ Public Function getSum( i1 as integer, i2 as interger ) getSum = i1 + i2 End Function を定義したとして、標準モジュール内に書くのとクラスモジュール内に 書くのとでは、何が違ってきますか?その他とにかく「標準モジュール」 とクラスモジュールの違いを教えてください。

  • クラスモジュールについて

    VBを勉強し始めた初心者です。 標準モジュールについては何とかわかるようになってきましたが、クラスモジュールについては、ほとんどわかりません。 クラスモジュールの意味や、プログラム法について初心向けにわかりやすく書いた本等がありましたら、ご紹介下さい。

  • クラスモジュールについて

    はじめまして。 クラスモジュールと標準モジュールの大きな違いは何なんでしょうか?基本的な質問で申し訳ありません。どなたか教えてください。 ma-ki

  • クラスとモジュールの違い

    VB2005を勉強中です。 申し訳ありませんが、色々教えていただきたいです。 1、クラスとモジュールは何が違うのでしょうか? 2、項目としてクラスを追加してクラスの宣言(Public Class class1)を消して、モジュールの宣言(Module class)を書けばモジュールになるのでしょうか? 3、「Visual Studio にインストールされたテンプレート」の説明がされたいるサイトがありましたら紹介してほしいです。 情報ボックス、ログインフォーム、スプラッシュスクリーンとかの説明が読みたいです。 よろしくお願いします。

  • クラスモジュール

    クラスモジュールについて詳しく使い方を知りたいのですが 様々な本を見ましたが、ほとんどの本が1~2ページ程度の軽い説明で終わらせているのがほとんどです。(特にVBA系は) これについて詳しく書かれた本をお知りの方がいましたら教えていただけないでしょうか?VBAはないと思うのですがVBで大丈夫です 特に配列(行列)を渡したりして計算させるやり方が知りたいです。コントロールなどを使ったものではなく(基本的には同じかとも思いますが) よろしくお願いします。

  • クラスモジュール

    私は5年位vbaをやっていますが 標準モジュールとフォームモジュールしか使った事が有りません。 エクセルだったらシートモジュールはあります。 クラスモジュールの存在は知って、 学ぼうと思ったのですが 意味がよくわからない為挫折しました。 でも今自分がやりたい事はクラスモジュールがなくても出来ています。 クラスモジュールを学んで使うと もっと作業が捗るのでしょうか? クラスモジュールを使う事のメリットを教えていただけますか?

  • Python クラスとモジュールの違いについ

    プログラミング初心者です。※初めてのプログラミングでPythonの勉強中です。開始2週間程度です!! Pythonにおける(プログラム一般における?)クラスとモジュールの違いが分かりません。 ■現状の認識 ・モジュール 「***.py」といったような一つのファイル 他のモジュールからimportすることによって使用できる ・クラス 「***.py」といった一つのファイルの中に「class」として宣言できる 他のモジュールからインスタンスを生成して使用できる ■疑問点 上記を使い分ける意味 上記を使い分けた時のメリット、デメリット ※すべてモジュールとして作成して、使用したいときにimportすればいいのでは?と考えています。 現状Pythonの知識しかありませんが、プログラミング一般の知識のような気がしています。 プログラムに詳しい方よろしくお願い致します。

  • クラスモジュールを使いたい

    VBで、クラスモジュールを使いたいのですが、どうやらホストアプリケーションがクラスをサポートしていないらしく、クラスのモジュールを作成しようとするだけでエラーになります。 ホストアプリケーションにクラスを使用できるようにするには、何をどう設定すればよいのでしょうか? お願い致します。

  • クラスモジュールを使わないとできないこと

    エクセル、アクセスでvbaを利用しています。 現在はすべて標準モジュールに記載しているのですが 「クラスモジュールを使わないとできないこと」もあるのでしょうか? クラスモジュールの使い方、必要性がいまいちわかりません。 まだ初心者な為複雑なコードは作っていません。 よろしくお願いします。

  • クラスモジュールについて

    笑われてしまうかもしれませんが、クラスモジュールはどんな時に使用するべき なのかが分かりません。 標準モジュールとどう使い分けていけば良いのか教えてください。 また、DLLとOCXも、どう使い分けたら言いか教えてください。 よろしくお願いします。

専門家に質問してみよう