
No.6ベストアンサー
- 回答日時:
失礼ですが、クラスをご存知ないのであればCOMは多分
全く理解できないでしょうねぇ
クラスについても、ご自分で勉強が必要だとは思いますが
簡単に説明しておきます。
構造体(属性)に、関数(操作)を加え、カプセル化したものです。
従来のプログラミングでは、変数をばらばらに扱わず、
構造体と呼ばれる型に関係ある変数をまとめて、
プログラム中のデータ構造が明確になるようにしておきました。
そこで、この構造体に専属の関数を加えてしまえば、
その構造体は単独で自分の面倒をみることが出来るようになります。
それがクラスです。
その結果、プログラム中のデータや処理が、クラス単位で整理され、
それぞれ部品のように組み替えが可能になりました。
このように、クラス単位にプログラムを分割することで
巨大なプログラムを明瞭にする言語をオブジェクト指向言語といいます。
また、クラスには親と子があり、「継承」という考えを用いて
どんどんバージョンアップや特化を行うことが容易です。
VBで説明すると、
Dim value as A
として変数を宣言した場合、クラスは「A」です。
valueはオブジェクトや、インスタンスと呼ばれます。
valueを使って、Aに含まれる関数を呼び出して、valueを
操作することが出来ます。
value.Init()
等。
ざっくり説明するとこんな感じです。
詳細については、各言語の書籍を参照してください。
このようにして作ったクラスを、
・他の言語から使いたい
・ネットワーク経由で使いたい
などと言った機能を実現する、Microsoft提供の方法の一つが、
COMやDCOMと呼ばれるものです。
COMは、他のプログラムからの使いまわしに強いので、
一度作っておけば、VB、Delphiは勿論、VBScript、JavaScrips、WSHなどから
呼び出しが可能です。
また、COM自体のバージョンが上がっても、それを呼び出してる
プログラム自体には変更の必要がありません。
ありがとうございました。
非常に丁寧に御回答いただきありがとうございました。
仕事柄プログラムは使わないため、今は分からないことだらけですが、今後ともよろしくお願いします。
(今はASPでWEBアプリを作りたいと思ってます。)
No.5
- 回答日時:
すいません、クラスオブジェクトではありません、
「クラス」でお願いします。
コンピュータが扱うデータは基本的にすべて数値ですが、
アスキーコードなど、ある範囲の数値を人間に見やすい
文字に変換可能なものを「テキスト」といいます。これはご存知の通り。
そして、そうでないものが「バイナリ」です。
つまり、BMPやJPEG,EXEはバイナリファイルです。
HTMLやJavaScript、ソースファイル等はテキストファイルです。
語弊を承知でより簡便に言うなら、「文字」しか書いてないのはテキスト、
文字以外の数値があるならバイナリです。
ソースファイルはテキストから、コンパイル・リンクの過程でバイナリファイルとなります。
COMオブジェクトは、この状態でないとなりませんので、
つまりソースが何の言語であったかなんてことは
どうでもよくなっている、ということです。
因みに、COMではC・C++でいうヘッダファイルの代わりに
IDLというインターフェイス定義言語という専用の簡易な言語を使います。
これは、ただの定義を記述する言語ですので非常に簡単で、どちらかというと
C言語みたいな、設定ファイルです。
No.4
- 回答日時:
ごめんなさい、説明が抜けました。
COMの特徴についてですが・・・
・インターフェイスの統一的な呼び出し手段がある
・参照カウンタを持つ
という重要な二点のことを説明忘れてました。
COMは、クラスオブジェクトですので継承によって
さまざまなインターフェイスが追加されて行きます。
それらを統一的に呼び出す手段として、QueryInterface
メソッドが存在してます。
参照カウンタは、COMが参照されるたびにインクリメントし
解放されるとデクリメントするカウンタ値です。
これが0になった時にメモリから削除されます。
Javaをご存知でしたら、GarbegeCorrectorと考えると分かり易いと
思います。
要するに、C++でも容易にメモリリークを防げる仕組み、と。
実際にCOMを作ってみるのでしたら、やはり書籍があると
助かると思います。
VBだと私はちょっと解りません。(簡単に出来ると思いますが)
No.3
- 回答日時:
ComponentObjectModelの略です。
コンポーネントとは、ソフトウェアの部品として機能する
オブジェクトのことです。
関数との違いは、クラスとしてカプセル化してあるので
保守性・再利用性とともに、ブラックボックス化しているので
利用が簡単、という点もあります。
定義については他の方がおっしゃってる通りなので
COMを使うメリットと特徴について軽く説明しておきます。
また、ActiveXやDCOMなども含めて、COMといってしまうことが
多々有るようです。
CORBAをご存知なら、それに似たものと考えてください。
利点:
言語・処理系に依存しない(バイナリ)コンポーネント
つまり、VC++でCOMを作ってそれをVBやDelphiから自由に呼び出せる。
計量で高速なコンポーネントも設計可能。
実際のCOM作成について:
DLLとの違いは、DLLが関数ベースであるのに対して
COMは基本的にクラスベースなので、独立性・再利用性・保守性の高い
コンポーネントの作成が簡易です。
DLLでも一応クラスの形式を取ることは出来ますが、バージョンアップ時
インターフェイスが変わってしまうと問題があります。
COMではJavaのinterface,implimentに似た仕組みで
インターフェイスを統一できます。
ネットワーク越しに実行出来る(透過性)ものをDCOM、
GUI要素を持つCOMをActiveXなどと呼び分けるのが従来のようです。
これはMicrosoft社の技術の重要なポイントですので
Windows環境でプログラムを作る以上、押さえておかねばならない
ネジクギ的存在になってゆくことでしょう。
No.2
- 回答日時:
COMとはバイナリをどのように作るかを示す規約で、ソフトウェアをコンポーネントで1つの管理単位とし、その中にあるオブジェクトを再利用可能にします。
ですから、COMで開発したソフトウェアは、すべてソフトウェアのバイナリの部品として再利用できます。
これ以上簡単な説明をしようとすると、いろいろと誤解が生じそうなので、とりあえずこんなところでしょうか。
No.1
- 回答日時:
Microsoft Developer Network(MSDN)には、以下の
ように書かれています。
『COMとは』
COMはActiveXコントロールとOLEの土台となる
基本的な"オブジェクトモデル"です。COMによって、
オブジェクトの機能は、ほかのコンポーネントや
ホストアプリケーションに公開されます。COMは
オブジェクトの公開方法と、プロセス間、または
ネットワーク間での公開の動作方法を定義します。
また、COMはオブジェクトのライフサイクルも
定義します。
一応Windowsプログラムでは最近よく使われるように
なってきているようです。
#結構使うのは難しいですが・・・
もっと詳しく勉強したいのであれば、プログラムの
本が置いてある本屋さんに行って、本を購入しても
いいのではないでしょうか。
ではでは☆
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# ActiveXコントロールを.NETにインポートできない??? 2 2023/05/02 02:50
- オープンソース コンクリート CMS について 2 2022/04/29 14:24
- JavaScript useStateの分割代入について 1 2022/05/06 10:02
- PHP 画像ファイルの名前をそのままURLにする 3 2022/10/16 11:18
- Visual Basic(VBA) VBでExcelの表形式の様なデザインを作りDBと連携させる。 4 2023/02/28 11:39
- スポーツサイクル コンポーネントが全てスラムなのですが、スプロケだけをシマノにしても問題はないですか? 1 2022/08/15 13:12
- Microsoft ASP ASP.NETや.NET、C#とかVBとか 2 2022/05/16 21:16
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- その他(プログラミング・Web制作) 掲示板専用スクリプト(http://php365.com/)などを使わなくてもプログラミング言語のみ 4 2022/06/12 20:44
- 宗教学 ところで、街宣右翼の資金源ってどこから出てるの? 1 2022/07/13 21:31
このQ&Aを見た人はこんなQ&Aも見ています
-
DLLとCOMの違い
その他(ソフトウェア)
-
VBの画面サイズについて
Visual Basic(VBA)
-
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
-
4
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
5
VBでイベント処理を追加するには?
Visual Basic(VBA)
-
6
他のアプリケーションとの連携
Visual Basic(VBA)
-
7
OCXって何ですか?
Visual Basic(VBA)
-
8
VS 2008(VB.NET)
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
ActiveXコントロールを.NETにインポートできない???
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vectorを要素とするVector
-
EXCEL VBAにて動的にCheckBOXを...
-
多人数のじゃんけんプログラム
-
VBA 同じ名前のオブジェクトを...
-
パワーポイントのVBAでテキスト...
-
C#でフォームのオブジェクト名...
-
シーケンス図のライフラインと...
-
C++でのクラスオブジェクトの破棄
-
VBAのWindowオブジェクトとWork...
-
3Dの背景とはどういう作り方を...
-
Accessの連結・非連結オブジェ...
-
オブジェクト指向とモジュール設計
-
Strutsのbeanタグについて
-
クラスのインスタンスの生成
-
戻り値がクラスオブジェクト
-
質問すいません。 javascriptの...
-
Object型からDouble型へのキャスト
-
三角形オブジェクト
-
ストリング文字列をDocumentオ...
-
ビジュアルC++でボタンの有...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで =EMBED("Acrobat Docu...
-
パワーポイントのVBAでテキスト...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBA 同じ名前のオブジェクトを...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
ビジュアルC++でボタンの有...
-
COMコンポーネントって何?
-
CoCreateInstanceでエラーになる。
-
ワイルドカード<?>と型パラメー...
-
戻り値がクラスオブジェクト
-
error C2712: オブジェクト ア...
-
Vbで通常使用するプリンターを...
-
質問すいません。 javascriptの...
-
Object型からDouble型へのキャスト
-
Accessの連結・非連結オブジェ...
-
オブジェクトレベルとメタレベル
-
C++でのクラスオブジェクトの破棄
-
時間帯判定をする。
-
VBAでvlookup関数から、別シー...
おすすめ情報