いつも習ってばかりで申し訳ありません。
質問なのですが、本でVB6を勉強していて、疑問が出ました。
コマンドボタンや、ラベルなどは、コントロールと言います、
と書いてあります。しかし、進んでいくにつれて、いつの間にか
それらをオブジェクトと書いてあります。これはコントロール=オブジェクト
と考えて問題ないのでしょうか?さらに進んでいくと、
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
というので、アクセスに接続するためのものだというのは漠然とわかるのですが、
深く考えていったら、最初の方にはasの後はデータ型を指定しますと
あるのですが、ADODB~はデータの型なんでしょうか?
さらに、これをレコードセットオブジェクトと言いますとあります。
えぇ!これがオブジェクト!?オブジェクトって一体何なんだろうと
悩み始めました(>_<)調べても、明確には理解できませんでした。
どうか、こんな僕に教えて下さい、よろしくお願いします<(_ _)>
No.1
- 回答日時:
めちゃめちゃ簡単に言います。
オブジェクト=IntegerとLongとFloatとDoubleとCurrencyとDateとStringとBooleanで無いもの
だ。もっと現実的な話をすると、「Setするもの」がオブジェクトで「Letするもの」がIntergerとLongと・・・・Booleanだ。
つまり、変数に代入する時にSetをつけないとコンパイルエラーになるものがオブジェクトだ。
ところで、この「VBで言うオブジェクト」とは、コントロールとそうでないものに二分される。簡単な見分け方は、「フォームに貼り付けるのがコントロールで、貼り付けないのがそうでないもの」だ。ADODB.Connectionは、「そうでないもの」だな。
オブジェクト=コントロール+そうでないもの
コントロールと、そうでないものの違いに興味があるなら「ActiveX」というキーワードで検索してみると良いだろう。
今、はっきりわかったのは"オブジェクト=コントロール+そうでないもの"
ってことだけです(>_<)あとは、言葉の意味を調べていけばって感じです。
ありがとうございます<(_ _)>
No.2
- 回答日時:
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をこのまま勉強していったら、他の言語もある程度理解できるようになるのでしょうか?
っていつの日に?って感じもあるんですが(~_~)
No.3
- 回答日時:
データ型には、int,float,char,byteなどのほかに、
それらの集まりである、
オブジェクトがあると思っていいと思います。
このばあい、オブジェクトとは、変数の集まり、
と理解できるのでは無いでしょうか。
(実際は、変数と、関数(メソッド)の集まり)。
ADODB.Connectionも変数、関数の集まりで、
Cn.Excute()なら、その中の、Excute()関数を
使っているわけです。
(ボタンなどのコントロールも、コードとしては、
たて、横のサイズ、色などの変数の集まりとして、
どっかに定義されているはずです)。
オブジェクトは、VB6以外なら、自分で作れますが、
そのとき、一般に
class MyButton{
内容(変数たち、関数)
}
などとなるので、クラス、とも呼ばれてしまいます。
No.4ベストアンサー
- 回答日時:
「コントロール=オブジェクト?」は分かりません。
>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が無ければオークションなどで安く手に入るかもしれません。
すごく丁寧な説明をありがとうございます<(_ _)>すごく漠然としていたものがある程度、自分の中で細かく分割され、理解できてきました、ありがとうございます<(_ _)>少し、C++の方を触ってみたいと考えております。またわからないことが出てきたら、教えてください<(_ _)>
No.5
- 回答日時:
私が理解している、と言うよりイメージしている「オブジェクト」の概念は、文字通り「物」です。
現実の世界でいえば、人も動物もテレビも車もオブジェクト。
つまり、「お母さん」も「女房」もオブジェクト。
因みに、「お母さん」オブジェクトの「性格」プロパティは「優しい」ですが、「女房」オブジェクトの「性格」プロパティは「キツイ」ですかね。(ナイショのハナシ)
おはようございます。家にPCなく連休中は見れませんで、お礼が遅くなりました。申し訳ありません<(_ _)>こう考えるとわかりやすいですねぇ。ありがとうございます<(_ _)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- Visual Basic(VBA) 配列にしたセル範囲でのコメントがあるかどうかを取得するコードの書き方 2 2022/09/17 05:09
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Illustrator(イラストレーター) Illustratorでオブジェクトの色が勝手に変わって困っています。 4 2022/09/04 18:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
多人数のじゃんけんプログラム
-
COMコンポーネントって何?
-
VBA 同じ名前のオブジェクトを...
-
ワイルドカード<?>と型パラメー...
-
VBAのWindowオブジェクトとWork...
-
文字列でクラス型名を取得したい
-
Listに格納されているオブジェ...
-
オブジェクト名をforループ内で...
-
ArrayLsitのデータ取得
-
LISTBOXの内容が更新されま...
-
Visual Studioでのbmpファイル...
-
パワーポイントのVBAでテキスト...
-
.getElementById()のエラーにつ...
-
C#でフォームのオブジェクト名...
-
Listに格納されたオブジェクト...
-
Vbで通常使用するプリンターを...
-
Excelで =EMBED("Acrobat Docu...
-
VBAからノーツを起動
-
Java認定試験3級の問題です。 ...
-
BufferedWriterのcloseメソッド
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
EXCEL VBAにて動的にCheckBOXを...
-
ワイルドカード<?>と型パラメー...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
vb.net オブジェクト指向につい...
-
COMコンポーネントって何?
-
オブジェクトレベルとメタレベル
-
ビジュアルC++でボタンの有...
-
時間帯判定をする。
-
LISTBOXの内容が更新されま...
-
VBA 同じ名前のオブジェクトを...
-
オブジェクト名をforループ内で...
-
Object型からDouble型へのキャスト
-
ADO オブジェクトの渡し方
-
bmp画像をjpegやpng画像に圧縮...
-
Vbで通常使用するプリンターを...
-
戻り値がクラスオブジェクト
-
VBAでvlookup関数から、別シー...
おすすめ情報