• ベストアンサー

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

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

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

  • ベストアンサー
  • oshi810
  • ベストアンサー率33% (1/3)
回答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が無ければオークションなどで安く手に入るかもしれません。

satoshi777
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

noname#79209
noname#79209
回答No.5

私が理解している、と言うよりイメージしている「オブジェクト」の概念は、文字通り「物」です。 現実の世界でいえば、人も動物もテレビも車もオブジェクト。 つまり、「お母さん」も「女房」もオブジェクト。 因みに、「お母さん」オブジェクトの「性格」プロパティは「優しい」ですが、「女房」オブジェクトの「性格」プロパティは「キツイ」ですかね。(ナイショのハナシ)

satoshi777
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • rheda
  • ベストアンサー率30% (3/10)
回答No.3

データ型には、int,float,char,byteなどのほかに、 それらの集まりである、 オブジェクトがあると思っていいと思います。 このばあい、オブジェクトとは、変数の集まり、 と理解できるのでは無いでしょうか。 (実際は、変数と、関数(メソッド)の集まり)。 ADODB.Connectionも変数、関数の集まりで、 Cn.Excute()なら、その中の、Excute()関数を 使っているわけです。 (ボタンなどのコントロールも、コードとしては、 たて、横のサイズ、色などの変数の集まりとして、 どっかに定義されているはずです)。 オブジェクトは、VB6以外なら、自分で作れますが、 そのとき、一般に class MyButton{ 内容(変数たち、関数) } などとなるので、クラス、とも呼ばれてしまいます。

satoshi777
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • todo36
  • ベストアンサー率58% (728/1234)
回答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/csabc2_003/cs2_003_01.html でなんとなく分かるかな?

satoshi777
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 めちゃめちゃ簡単に言います。 オブジェクト=IntegerとLongとFloatとDoubleとCurrencyとDateとStringとBooleanで無いもの  だ。もっと現実的な話をすると、「Setするもの」がオブジェクトで「Letするもの」がIntergerとLongと・・・・Booleanだ。  つまり、変数に代入する時にSetをつけないとコンパイルエラーになるものがオブジェクトだ。  ところで、この「VBで言うオブジェクト」とは、コントロールとそうでないものに二分される。簡単な見分け方は、「フォームに貼り付けるのがコントロールで、貼り付けないのがそうでないもの」だ。ADODB.Connectionは、「そうでないもの」だな。  オブジェクト=コントロール+そうでないもの  コントロールと、そうでないものの違いに興味があるなら「ActiveX」というキーワードで検索してみると良いだろう。

satoshi777
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESS フォームやコントロールはクラス?

    オブジェクト志向を勉強し始めた者です。 今まで特に意識していなかったのですが、 ACCESSのフォームやテキストボックス等のコントロールは、 クラスなんじゃないか、と思ったんですが これは正しいでしょうか? レコードセットをopenする時に使用する宣言の Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset でいうと ADODBがクラスなのでしょうか? ADODB.Connection、 ADODB.Recordsetがクラスなのでしょうか? ご教授の程、よろしくお願いします。

  • ADO オブジェクトの渡し方

    こんにちは。ADOについてお教えください。 フォームをロード時に接続プロシージャと切断プロシージャを走らせたいと思います。 ConnectDatabaseを呼び出しは成功しますが、CloseDatabase呼び出しには失敗します。 スコープの問題で、rs、cnのオブジェクトが無い為だと思います。 ConnectDatabaseで作成されたcn、rsオブジェクトを別の関数で処理するにはどのようにコードをかけばよろしいでしょうか?宜しくお願い致します。 Private Sub Form_Load() Call ConnectDatabase Call CloseDatabase End Sub Module1 ------------------ sub ConnectDatabase() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordset 処理~~~~ end sub sub CloseDatabase() rs.Close cn.Close Set rs = Nothing Set cn = Nothing end sub

  • ACCESS VBA

    ACCESSで検索フォームを作りたいと思っています。 VBAを使って行きたいと思うのですが、うまくいきません。 希望としては、該当するレコードのデータを抽出したいです。 よろしくお願いいたします。 ※現段階でのソースを書いてみました。 最終的に行いたい処理とは違うのですが、根本的に間違っているようなので簡略化しました。 /------------------------------------------------/ Private Sub コマンド1_Click() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim sql As String '接続 Set cn = CurrentProject.Connection 'レコードセットを取得 Set rs = New ADODB.Recordset sql = "SELECT * FROM 従業員データ " & _ "WHERE 年齢=30" rs.Open sql, cn, adOpenDynamic, adLockReadOnly rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub /------------------------------------------------/

  • ADO 「Set」は使ったほうがいいのでしょうか?

    Sub test1() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordse End Sub Sub test2() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset End Sub この二つは同じ意味ですか? 「Set」は使ったほうがいいのでしょうか? よろしくお願いします。

  • ADOでRecordsetオブジェクトをレコードソースに設定したい

    Access2000を使っています。リンクテーブルを使わずに、ODBCで繋いだDBのテーブルをフォームのレコードソースにセットしたいのですが、可能でしょうか。 宜しくお願いします。 Private Sub FormNoKansu() Dim cn as New ADODB.Connection Dim rs as New ADODB.Recordset Dim strSql as String 'ODBCでサーバーに接続 cn.ConnectionString = "ODBCでMySQLに..." ... strSql = "SELECT * FROM ..." rs.Open strSql, cn 'ここに[rs]を入れられたらと思っています Me.Recordset = "" End Sub

  • recordsetが取得できなかった場合

    Access2003のVBAについて質問です。 recordsetが取得できなかった場合、どういった値が返されるのでしょうか? やりたい事は、recordsetが取得できた時、できなかった時でメッセージの表示を変えたいです。 ご教授よろしくおねがいします。 Public Sub Exsample() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String '接続 Set CN = CurrentProject.Connection 'レコードセットを取得 Set RS = New ADODB.Recordset SQL = "SELECT * FROM 生徒名簿 WHERE クラス = 'TS'" RS.Open SQL, CN, adOpenKeyset, adLockOptimistic

  • DataGridに表示されない

    VB6でMySQL4.1に接続して MySQL内にあるデータベース"sample"の テーブル"総合"をDataGridに表示したいのですが できません。 エラーメッセージは "実行時エラー '7004': 行セットにはブックマークを設定できません" とでます。 どうしたら表示されるのでしょうか? Private Sub form_load() Dim cn As ADODB.Connection 'オブジェクト Dim rs As ADODB.Recordset 'データベースに接続 Set cn = New ADODB.Connection 'データベース:Sheet1 cn.ConnectionString = "Provider=MSDASQL.1;" _ & "Data Source=sample" cn.Open 'レコードセットの取得 Set rs = New ADODB.Recordset rs.ActiveConnection = cn rs.Source = "総合" rs.CursorType = adOpenStatic rs.LockType = adLockOptimistic rs.Open Set DataGrid1.DataSource = rs End Sub

  • VBAのデバックをどなたかお手伝いください。

    もちろん自分でも調べてはいるのですが、急いでいるため、もしどなたか教えてくだされば大変助かります。 この(下記の)Then 以降からがわかりません。 Do Until rs.EOF '該当レコードあり If rs!MCD = "3162" Then '--------------------------------------------- strcriteria = "CAT = '" & rs!CAT & "'" ' --- A rs2.Find strcriteria, 0, adSearchForward If rs2.EOF Then ' Else rs!仕入単価世代1 = rs!仕入単価 rs!仕入単価 = rs2!discount End If '--------------------------------------------- rs!更新日 = Now() rs.Update End If 情報が不足していればお答えします。どうぞ宜しくお願いいたします。 (補足)これより前に入力されているのは以下のものです。 Dim cn As ADODB.Connection Dim cn2 As ADODB.Connection Dim rs As ADODB.Recordset Dim rs2 As ADODB.Recordset Dim strmsg As String Dim lngRet As Long Dim strcriteria As String Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset Set cn2 = CurrentProject.Connection Set rs2 = New ADODB.Recordset rs.Open "商品2_T", cn, adOpenKeyset, adLockOptimistic rs2.Open "商品2_T25discountてすと", cn2, adOpenKeyset, adLockOptimistic

  • MSFlexGridでデータの追加の方法は?

    VB6.0 WINXP DB:Oracle10g  よろしくお願いします。 SELECT文でデータベースからデータを取ってきてMSFlexGridにデータを送ったのですが、そのデータに更に追加したいと思います。 ' ADOのオブジェクト変数を宣言する Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim STRSQL As String 'Oracleとの接続 cn.Open "Provider=MSDAORA;" & _ "Data Source=NT;", "scott", "tiger" ' SQLステートメントを指定してレコードセットを作成する re.Open STRSQL = "select * from TOKUI WHERE A01 = 100" rs.CursorLocation = adUseClient rs.Open STRSQL, cn, adOpenDynamic, adLockBatchOptimistic 'グリッドに送る Set MSFlexGrid1.DataSource = rs 'ここからのSELECT文を追加したいと思います。 STRSQL = "SELECT TOKUI FROM WHERE A01 = 200" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open STRSQL, cn, adOpenDynamic, adLockBatchOptimistic よろしくお願いします。

  • Access ADOについて質問です。

    Access ADOについて質問です。 以下コードでレコードセットを返す関数を使用しています。 動作的には問題ないのですが、標準モジュール内のレコードセットをClose及びNothingしていないのが気になります。 Private Sub Form_Open(Cancel As Integer) Dim rs2 As ADODB.Recordset Set rs2 = New ADODB.Recordset Set rs2 = CreateRecordSet("SELECT * FROM T_Standard;") Set Me.Recordset = rs2 rs2.Close: Set rs2 = Nothing end sub '標準モジュール Public Function CreateRecordSet(strSQL As String) As ADODB.Recordset Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=O:\標準DB\StandardBackEnd.mdb" cn.Open Set rs = New ADODB.Recordset rs.Open strSQL, cn, adOpenStatic, adLockReadOnly Set CreateRecordSet = rs ' rs.Close: Set rs = Nothing   ←この部分 ' cn.Close: Set cn = Nothing   ←この部分 End Function 標準モジュール内ではCloseやNothingしなくてもメモリの開放は行われているのでしょうか? アドバイスよろしくお願いいたします。