• ベストアンサー

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

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

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

Rubyのclassとmoduleの違いなら説明ならできるんですが、VBはよくわかりません。 ただ、#1の方の訳は部分的に間違ってます。 X rather than Y は、YではなくX という意味ですし may never の may は推量や可能性ではなく許可です。 名前空間云々はよくわかりませんが、instansiate というのは class では var = new ClassMoge(...) のようにインスタンスを生成して変数に代入できるけれども var = new ModuleHoge() のようなモジュールのインスタンス生成はできないということでしょう。 あとたぶん、 ・classは継承できるけどmoduleはできない ・moduleの中にclassを置けるけど逆は不可 ・プログラムのエントリポイント(Sub Main())はModuleの中にしか置けない ぐらいはいえると思います。 >2、項目としてクラスを追加してクラスの宣言(Public Class class1)を消して、モジュールの宣言(Module class)を書けばモジュールになるのでしょうか? おおざっぱに言って、 Module と End Nodule で挟めばそれはモジュールです。

その他の回答 (1)

回答No.1

1,2だけ解るので Visual Basic Language Specification 9.0 http://www.microsoft.com/downloads/details.aspx?FamilyID=39de1dd0-f775-40bf-a191-09f5a95ef500&displaylang=en 86ページ >7.7 Standard Modules 標準モジュール A standard module is a type whose members are implicitly Shared and scoped to the declaration space of the standard module's containing namespace, rather than just to the standard module declaration itself. 標準モジュールとは,そのメンバが暗黙的にSharedとされ,そのモジュールだけでなく,モジュール自体が属する名前空間がスコープとなる型のことである。 Standard modules may never be instantiated. It is an error to declare a variable of a standard module type. 標準モジュールは生成されることはないだろう。標準モジュール型の変数を宣言するとエラーとなる。 #クラスで十分。

関連するQ&A

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

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

  • 【ASP.NET】 独自で作成したクラスが認識されない

    お世話になります。ASP.NETに関する質問です。 Visual Studio 2008の開発環境において、 画面右側のソリューションエクスプローラより 右クリックして[新しい項目の追加]をクリックして 新規にクラスファイル(Class1.vb)の作成(言語: Visual Basic)を 行いました。 別のソースファイルより、上記で作成したクラスをインスタンス化 しようとしたところ、コンパイル時に下記エラーが出力されます。 ------------------------------------------------------ 型 'Class1' が定義されていません。 ------------------------------------------------------ クラスをインスタンス化しているソースの記述は以下の通りです。 (test.vb)--------------------------------------------- '変数宣言 Dim cl1 as Class1 = Session.Contents("クラス1") ------------------------------------------------------ Class1.vbの内容は以下の通りです。 (Class1.vb)------------------------------------------- Public Class Class1 Protected _LoginTime As String Public Property LoginTime() As String Get Return _LoginTime End Get Set(ByVal Value As String) _LoginTime = Value End Set End Property End Class ------------------------------------------------------ どなたか原因と対処方法についてご教授願えますでしょうか? 以上、よろしくお願いいたします。

  • クラスモジュール

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

  • モジュールからルート名前空間を取得する方法

    VB2008を使っています。 モジュールからルート名前空間を取得する方法はありますか? まだ、MeやClass,Moduleの違いがようやくわかってきたところです。

  • モジュール間のデータ受け渡し

    初心者質問で申し訳ございませんが、 ご教授、お願いできませんでしょうか? 環境は XP, VB,net2005を使用しています。 言葉が適切かどうかわかりませんが、 別ファイルのモジュール同士でのデータの受け渡しはどのように行えばいいのでしょうか? たとえば、Form1.vbに定数宣言してある「定数1」を 別で作成したModule.vbには定数を読み込むにはどのように行ったらよいのでしょうか? パブリック変数の位置で宣言したのですが、参照できないようで… ご回答いただけましたら幸いです。

  • ComboBox1で何を選んだかの情報を標準モジュールで使いたい

    Visual Basic 6 にて簡単なプログラミング中です。 フォームfrmMainでコントロールComboBox1があり、インデックスを3つ持っております。 また、標準モジュールModule1ではある処理Aをさせております。 図示すると、 ----Module1 | --frmMain -- ComboBox1 -- インデックス(赤、青、黄) ComboBox1では3つのインデックスより、赤、青、黄を選びます。 問題点: どれを選んだかの情報をModule1の処理A(Subプロシージャ)の中で取得したいのですが、うまくいきません。 (x=ComboBox1.Textのように取得して、処理の中で(赤、青、黄)どれを選んだかの情報を使いたい) これまでにやったこと: 1.Module1内で宣言無し→エラー発生 2.Module1の処理AでDim ComboBox1 as Controlと宣言→エラー発生 自分自身の予想:どこかで宣言をすればうまくいくのかもしれない??それとも何か別の原因か??本を読むとグローバル変数とかいうのがあるがこれと関係するのだろうか?? よくわからない事(独り言です): ComboBox1からクリックして「コードの表示」を出すと、frmMainに属するコードが出てくるが、Module1で処理させている事をfrmMainに属するコードの中でやらせればよいのか??? VB素人レベルです。どうぞよろしくお願いします。

  • 【EXCEL VBA】Visual Basic Editorについて

    お世話になります。 EXCELで「Visual Basic Editor」を開くと、 左側に下記が表示されます。 Microsoft Excel Objects > Sheet1、Sheet2、Sheet3、ThisWorkBook フォーム > UserForm1 標準モジュール > Module1 クラス モジュール > Class1 Sheet1やUserForm1、Module1、Class1にそれぞれコードを 入力できますが、違い、使い分けについて教えてほしいです。 どれにコードを書いていけばいいか分からず困っています。 よろしくお願いします。

  • C++のテンプレート関数やテンプレートクラスをC#で利用するには?

    C++で作成したテンプレート関数やテンプレートクラス をC#で利用したいと考えております。 テンプレート関数やクラスを明示的実体化してコンパイルし、 C++/CLIでラップすればC#でも使えるという話を聞きました。 テンプレートでない通常の関数やクラスの場合は、 http://www.atmarkit.co.jp/fdotnet/special/vcppinvista01/vcppinvista01_01.html で紹介されているのを見つけたのですが、 テンプレート関数やクラスの場合 具体的にC++/CLI側でどのように記述すればよいか分かりません。 例えば、 ---- [test.h] template <class Type1> class Test{ public:   Type1 x;   template <class Type2>   Type1 func(Type2 y){ ... } }; ----- のようなクラスがあった場合、どうすればよいでしょうか。 明示的な実体化の方法とC++/CLIで明示的実体化した関数やクラスが どのような名前になるのかが分かれば上記サイトの方法で いけるのではないかと思っているのですが…。 環境はVisual Studio2005(or 2008)です。 よろしくお願いいたします。

  • あるクラスの派生クラスと、その他の型で処理を振り分

    ■環境 Windows7 Visual Studio 2010 Visual C++(C++11) 大抵の型は共通処理を行いたいが、ある特定の型だけは特別な処理を行いたい、 そんなケースでは、テンプレートの明示的な特殊化が利用出来るかと思います。 しかし、『ある特定の抽象クラスの派生クラス』だけは特別な処理を行いたい、 これを実現するには、どのようにするのがよろしいでしょうか? 以下のコードは、意図した通りに動作しません。 良い方法があれば、ご教授いただけますでしょうか? // 抽象クラス class AbstractClass { public: virtual void MustOverides() = 0; }; // 派生クラス class ChildClass : public AbstractClass { public: virtual void MustOverides(){}; }; template<typename AnyType> void CommonFunc(const AnyType& target) { // 呼ばれる } template<> void CommonFunc<AbstractClass>(const AbstractClass& target) { // 呼ばれない、呼ばせたい } void CommonFunc(AbstractClass& target) { // 呼ばれない、呼ばせたい } void CommonFunc(const AbstractClass& target) { // 呼ばれない、呼ばせたい } void main() { ChildClass Child; CommonFunc(Child); } よろしくお願いいたします。

  • スプラッシュスクリーンを表示するコードを書きたい

    Visual Studio 2005 のVC++ で、スプラッシュスクリーンを表示するコードを書きたいのですが、やりかたを教えていただけないでしょうか? VC++ 6.0の場合には、コンポーネントギャラリにスプラッシュスクリーンがあったようですが、VS 2005にはコンポーネントギャラリさえありません。

専門家に質問してみよう