プロが教える店舗&オフィスのセキュリティ対策術

いつも習ってばかりで申し訳ありません。
質問なのですが、本でVB6を勉強していて、疑問が出ました。
コマンドボタンや、ラベルなどは、コントロールと言います、
と書いてあります。しかし、進んでいくにつれて、いつの間にか
それらをオブジェクトと書いてあります。これはコントロール=オブジェクト
と考えて問題ないのでしょうか?さらに進んでいくと、
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
というので、アクセスに接続するためのものだというのは漠然とわかるのですが、
深く考えていったら、最初の方にはasの後はデータ型を指定しますと
あるのですが、ADODB~はデータの型なんでしょうか?
さらに、これをレコードセットオブジェクトと言いますとあります。
えぇ!これがオブジェクト!?オブジェクトって一体何なんだろうと
悩み始めました(>_<)調べても、明確には理解できませんでした。
どうか、こんな僕に教えて下さい、よろしくお願いします<(_ _)>

A 回答 (5件)

 めちゃめちゃ簡単に言います。



オブジェクト=IntegerとLongとFloatとDoubleとCurrencyとDateとStringとBooleanで無いもの

 だ。もっと現実的な話をすると、「Setするもの」がオブジェクトで「Letするもの」がIntergerとLongと・・・・Booleanだ。
 つまり、変数に代入する時にSetをつけないとコンパイルエラーになるものがオブジェクトだ。

 ところで、この「VBで言うオブジェクト」とは、コントロールとそうでないものに二分される。簡単な見分け方は、「フォームに貼り付けるのがコントロールで、貼り付けないのがそうでないもの」だ。ADODB.Connectionは、「そうでないもの」だな。

 オブジェクト=コントロール+そうでないもの

 コントロールと、そうでないものの違いに興味があるなら「ActiveX」というキーワードで検索してみると良いだろう。
    • good
    • 0
この回答へのお礼

今、はっきりわかったのは"オブジェクト=コントロール+そうでないもの"
ってことだけです(>_<)あとは、言葉の意味を調べていけばって感じです。
ありがとうございます<(_ _)>

お礼日時:2005/09/22 18:26

VBではクラスのインスタンスのことをオブジェクトといいます。



> コントロール=オブジェクトと考えて問題ないのでしょうか?

TextBoxがクラスで、Text1がオブジェクトです。
コントロールという言葉は両方に使われます。

Dim Cn As ADODB.Connection
cn = new ADODB.Connection

ADODB.Connection がクラスで、new ADODB.Connectionがオブジェクトです。

クラスとインスタンスの概念を説明するのは難しいけど、

http://www.atmarkit.co.jp/fdotnet/csharp_abc2/cs …

でなんとなく分かるかな?

この回答への補足

これはまたよくわからない言葉が出てきました(/_;)
すごい漠然としてますが、なんとなく雰囲気的にはつかめてきたって感じです。異なる質問かと思いますが、いろいろとプログラム言語がありますが、
どれも考え方は同じということでしょうか?VB6をこのまま勉強していったら、他の言語もある程度理解できるようになるのでしょうか?
っていつの日に?って感じもあるんですが(~_~)

補足日時:2005/09/22 18:27
    • good
    • 0

データ型には、int,float,char,byteなどのほかに、


それらの集まりである、
オブジェクトがあると思っていいと思います。
このばあい、オブジェクトとは、変数の集まり、
と理解できるのでは無いでしょうか。
(実際は、変数と、関数(メソッド)の集まり)。

ADODB.Connectionも変数、関数の集まりで、
Cn.Excute()なら、その中の、Excute()関数を
使っているわけです。
(ボタンなどのコントロールも、コードとしては、
たて、横のサイズ、色などの変数の集まりとして、
どっかに定義されているはずです)。

オブジェクトは、VB6以外なら、自分で作れますが、
そのとき、一般に
class MyButton{
内容(変数たち、関数)
}
などとなるので、クラス、とも呼ばれてしまいます。
    • good
    • 0
この回答へのお礼

少しずつわかってきました。皆さんのおかげです、ありがとうございます<(_ _)>

お礼日時:2005/09/26 09:11

「コントロール=オブジェクト?」は分かりません。



>Dim Cn As ADODB.Connection

については、

Cnがオブジェクトです。

>オブジェクトとは、わかりやすくいうと何なのでしょうか?

変数と関数のセットをメモリ上にロードしたもの、でしょうか。
分かりにくく言うとクラスを実体化したものかと。

No3さんの仰るとおり、オブジェクトは変数と関数の集まりです。

Windowsの開発環境をお持ちでしたら、C#やVC++でクラスを作ってみると理解が速いとおもいます。

C++で例えると、まず、クラスというもの(変数と関数のあつまり)を定義します。

class Connection
{
  string ConnectionString = "" // コネクションストリングを格納する変数

  void Open() // オープン関数
  {
    // コネクションストリングで指定されたDBを開く処理(省略)
  }

  void Close() // クローズ関数
  {
    // 開いたDBを閉じる処理(省略)
  }
};

ADODBもクラスで、Connectionクラスを包含していると考えられます。(推測です。)

このConnectionクラス(定義)を元に、Cnオブジェクト(Cnインスタンス)を作成(メモリ上に領域を確保)します。

VBでいうと、

Dim Cn As ADODB.Connection 'Connectionクラス型のオブジェクトCnを宣言
Set CN = New ADODB.Connection ' Cnオブジェクトをメモリ上に確保(実体化)

という書き方になります。
上記はNo2さんのご指摘にあります。

Connectionクラス(定義)からCnオブジェクト(=インスタンス、実体)が作成されました。

これにより、クラスConnectionの定義をもとに、Cnという実体(オブジェクト)
がメモリ上にロードされ、Open()関数や、Close()関数を使うことが出来ます。
またConnectionStringに値をセットすることも出来ます。

C++で書いたのはあくまで例えで、そのまま書いてVBから呼び出せる訳ではないです。

No1さんのご指摘のように、ActiveXについて調べて、
ご自分でActiveXを作成したり、C++等のオブジェクト指向言語を少しかじってみると理解が深まると思います。

といいつつ自分もActiveXとか作ったこと無い勉強中の身なので、おかしい所あったらご指摘くださいませ。
(クラスの話は厳密なコードではなく、適当なたとえ話と捉えて下さい)

>VB6をこのまま勉強していったら、他の言語も
>ある程度理解できるようになるのでしょうか?

ある程度は理解しやすくなると思います。
ただ、VB6では他の言語のクラスの概念の理解が難しいと思います。
個人的にはC++を浅くかじることをお勧めします。(深入りすると大変そうです。)
人間クラスとか、猫クラスとか、適当なクラスを書いていくと理解できると思います。
こちらからの言葉で理解してもらうのは大変ですが、ご自分で実際にコードを書くことでより身に付いた理解が得られると思います。

Visual Studio.net2005のサンプル版でC++のコードをコンパイルできるかもしれないので、調べてみてください。
古いPCにLinuxをインストールしてGCC使えばほぼ無料で勉強できます。
セカンドPCが無ければオークションなどで安く手に入るかもしれません。
    • good
    • 0
この回答へのお礼

すごく丁寧な説明をありがとうございます<(_ _)>すごく漠然としていたものがある程度、自分の中で細かく分割され、理解できてきました、ありがとうございます<(_ _)>少し、C++の方を触ってみたいと考えております。またわからないことが出てきたら、教えてください<(_ _)>

お礼日時:2005/09/26 09:16

私が理解している、と言うよりイメージしている「オブジェクト」の概念は、文字通り「物」です。


現実の世界でいえば、人も動物もテレビも車もオブジェクト。
つまり、「お母さん」も「女房」もオブジェクト。
因みに、「お母さん」オブジェクトの「性格」プロパティは「優しい」ですが、「女房」オブジェクトの「性格」プロパティは「キツイ」ですかね。(ナイショのハナシ)
    • good
    • 0
この回答へのお礼

おはようございます。家にPCなく連休中は見れませんで、お礼が遅くなりました。申し訳ありません<(_ _)>こう考えるとわかりやすいですねぇ。ありがとうございます<(_ _)>

お礼日時:2005/09/26 09:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!