VBのヘルプなどによく出てくる「インスタンス」という言葉の意味をもっとわかりやすく教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

もっと噛み砕いちゃいましょう。



例えばMac/VというパソコンをGrapeという会社が発売するとしましょう。
Grape社が用意する仕様に従って、製品が出来上がるわけですが、私が買ったMac/Vとあなたの買ったMac/Vは全く同じ仕様ですが、別々に存在するので全く同じ物では有りません。

というお話の中の「仕様」がクラスで、「私のMac/V」や「あなたのMac/V」がインスタンスです。
    • good
    • 13
この回答へのお礼

回答ありがとうございました。とてもわかりやすい回答でした。どうやら今まで私は「インスタンス」に対して少し間違った解釈をしていたようです。VBのヘルプを読んでいても理解できないはずです。しかし特にプログラミングに関する用語は抽象的な単語ばかりで、自分で本などを読んでいても納得のいく理解ができないことが多々あるものです。

お礼日時:2000/12/19 18:19

オブジェクト指向のプログラミング言語でよく出てくる用語です。



オブジェクト指向言語では、オブジェクトというのが自律的に動い
て他のオブジェクトにメッセージを送る(そのオブジェクトのメソッ
ドを呼び出す)ことで計算を行います。このオブジェクトの型をク
ラスといい、鋳型みたいなものと理解すればいいと思います。

インスタンスというのは、この鋳型から鋳造された実体です。オブ
ジェクトという用語とほとんど同じ概念ですが、この鋳造されたと
いう意味合いが強いようです。

同じ鋳型を使っても、違う色を塗ったりできるし、たとえ同じ色で
も、鋳造されたそれぞれのインスタンスは別々の実体であるとして
区別されます。
    • good
    • 1
この回答へのお礼

的確な回答を頂いたのにもかかわらず、ちょっとまだ私には説明が少し難しくてピンとくるまで時間がかかってしまいました。オブジェクト指向の概念も未だはっきりと把握しておりませんので、またの機会にオブジェクト指向についても教えてください。ありがとうございました。

お礼日時:2000/12/19 18:27

インスタンスにはさまざまな意味がありますが、


プログラミングにおいては、インスタンスというのは
変数のこと(より適切には、ある型に対する個々の実体とでもいいますか…)
たとえば、
「整数型」に「x」という変数が作り得るように、
「人間型」に「seyatomo」という変数が作れます。
同じ「人間型」に別の「kokucho81」という変数が作れますね。
このように、「型」に対する個々の「実現体」をインスタンスという抽象的な呼び名で表すことが多いようです。

また、プログラム界のわかりにくい3大言葉として、
インスタンス
インタフェイス
インヘリタンスなどがあります。

インターフェイスはいわゆるGUIといわれる視覚的なものを指す場合もありますが、プログラムではむしろ、一つの「機能体」に対してアクセスする「ポイント≒関数」を指すことが多いです。
わかりやすくいうと、
「テレビ」という「機能体」に、
「チャンネルスイッチボタン」という「内部の機能にアクセスするもの=インターフェイス」がついているという考え方です。

インヘリタンスとは、「前のものを引き継ぐ、継承する」という意味で、例えば、先ほどの人間型でいいますと、
「生命型」を引き継いで、少し進化した型にすると、
「人間型」や「爬虫類型」などを作ることができるとわかります。
生命型の進化図などはインヘリタンスの良い例と言えるでしょう。

VBではたしてこのような意味でつかわれているのかどうかは分かりませんが、プログラム一般ではこのように解釈しておけばそれほど間違いはないのではないかと思います。
    • good
    • 1
この回答へのお礼

お礼が遅れて大変申し訳ありませんでした。
最初読んだときは丁寧に説明して頂いてとても感謝していたのですが、
恥ずかしい話、まだkokucho81さんのコメントを十分理解するだけの
知識がありませんでした。ですが今はもう理解することが出来ましたので
また何かありましたら是非詳しい説明を頂きたいと思っております。
本当にありがとうございました。

お礼日時:2001/10/16 08:50

ASCIIのデジタル用語辞典(参考URL参照)によれば、


Windows環境におけるマルチタスクのプログラムのひとつ
を指すとあります。

VBのヘルプというものを見たことがないので的確な答えにはなっていませんが、
英語的には、具体的な例という意味ですから、
「実行中のとあるプログラム」という解釈で意味は通じませんか?

参考URL:http://www.ascii.co.jp/ghelp/05/000573.html
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qヘルプましんで作成したヘルプファイルをVBで

ヘルプましんでコンパイルしたヘルプファイルをVBに組み込むことはできるのでしょうか??

Aベストアンサー

はい。
HTMLヘルプですよね。
http://www.microsoft.com/japan/developer/library/VBCon98/vbconaddinghelptoyourapplication.htm

参考URL:http://www.microsoft.com/japan/developer/library/VBCon98/vbconaddinghelptoyourapplication.htm

Qvb2005 インスタンスの生成について

vb2005で質問です

Data.vbというグローバル変数を宣言しているモジュールファイルに以下の記述をします。
  public x As SortedList(Of Integer, Integer)() = New SortedList(Of Integer, Integer)(1) {}

次にForm1.frmというファイルに、あるイベントのたび、呼び出される処理の中に
以下の記述をします。
 x(0) = New SortedList(Of Integer,Integer)
 x(1) = New SortedList(Of Integer,Integer)


この場合、何度も x(0) = New SortedList(Of Integer,Integer) が
生成されることになりますが、メモリエラーを引き起こす原因に
なりえますか

すいませんが、教えていただけないでしょうか

Aベストアンサー

メモリリークを問題視しているのであれば,これだけでは発生しません。

x(0)がNothingでない場合,代入によって以前のオブジェクトは強参照がなくなり,Garbage Collection (GC)の対象になります。
メモリが不足してきた段階で,GCが走り,参照されなくなったオブジェクトのメモリを回収します。
# FinalizeメソッドなどがあるとF-reachable Queueとかいろいろ面倒な話がでますが割愛。

メモリに関しては,無駄に参照を持ち続けたりしない限り,.NET Frameworkが面倒をみてくれます。
気をつけなければいけないのは,

・Sharedな配列やListなどから参照されたオブジェクトはそのままだと参照が生き続けること
この場合は対応する要素をRemoveしたりNothingを代入したりすることで回避可能
・デリゲートのインスタンスは呼び出す先のオブジェクトへの参照を保持すること
これは主にイベントで発生するが,確実にRemoveHandlerすることで回避可能

といったことでしょうか。

QVB6:クラス名(文字列)からインスタンス

VB6でクラス名から実体化させることは可能でしょうか。

たとえば、clsTestというクラスがあったとして

Dim objTest as Object
Set objTest = New ("clsTest")

のような感じです。
.NetであればGetTypeでいけそうなのですが・・
よろしくお願いいたします

Aベストアンサー

Eval関数はどうですか?
Set obj = Eval("new clsTest")

QVB6のAttribute VB_Nameの意味について

VB6のAttribute VB_Nameの意味について

VB6のAttribute VB_Nameの意味がわかりません。
例えばAttribute VB_Name = "AAA"とした場合、このAAAは何を意味するのでしょうか。

Aベストアンサー

仮に添付画像のようなプロジェクトの時、

Form1.frmをテキストエディタで開くと
→Attribute VB_Name = "Form2"

Form1.frmをテキストエディタで開くと
→Attribute VB_Name = "Form2"

Module1.basをテキストエディタで開くと
→Attribute VB_Name = "Module2"

となります。


Attribute VB_Name = "オブジェクト名"
という事です。

Q[VB.NET] インスタンス生成とインテリセンス

VB.NETの勉強をしつつ業務開発をしております。
現在、作成したクラスをインスタンス化した際、インテリセンスが表示されず、困っております。
メソッド内で生成したインスタンスからは、インテリセンスが表示されるのですが、クラス直下で生成したインスタンスでは、インテリセンスが表示されないのです。

Namespace MyName
  Public Class Class1
    Public Sub test1()
      Debug.Print("test1呼び出し")
    End Sub
  End Class
End Namespace

Public Class Form1
  Dim MyCls = New MyName.Class1 ←○MyNameのインテリセンスでClass1が表示
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    MyCls.test1() ←×MyNameのインテリセンスでtest1が表示されない

    Dim MyCls2 = New MyName.Class1
    MyCls2.test() ←○MyNameのインテリセンスでtest1が表示
  End Sub
End Class

インテリセンスは表示されなくても、エラーにはなりません。自分で打ち込めば動作するのですが、共有利用したいので、インテリセンスの説明は表示させたいのです。

インテリセンスとは?というレベルから勉強している超初心者のため、拙い言葉遣いご容赦ください。お知恵をお借りしたく、宜しくお願いします。

VB.NETの勉強をしつつ業務開発をしております。
現在、作成したクラスをインスタンス化した際、インテリセンスが表示されず、困っております。
メソッド内で生成したインスタンスからは、インテリセンスが表示されるのですが、クラス直下で生成したインスタンスでは、インテリセンスが表示されないのです。

Namespace MyName
  Public Class Class1
    Public Sub test1()
      Debug.Print("test1呼び出し")
    End Sub
  End Class
End Namespace

Public Class Form1
  Dim MyCls ...続きを読む

Aベストアンサー

VBのバージョンが書かれていないようですが、試された状況から推測すると
VB2010 かと思うのですが、VB.NET のように書かれると VB.NET 2002 VB.NET 2003 を指す
事になり変に誤解を招きます。
VB2005 以降は、製品名に“.NET”の名を冠さないようになっています。
因みに、現在[.NET対応のバージョン]は下記のようなものがあります。
VB10: Visual Basic 2010 / Visual Studio 2010
VB9 : Visual Basic 2008 / Visual Studio 2008
VB8 : Visual Basic 2005 / Visual Studio 2005
VB7.1:Visual Basic .NET 2003 / Visual Studio .NET 2003
VB7 : Visual Basic .NET(2002)/ Visual Studio .NET(2002)

本題ですが、結論から言いますと変数の型を宣言されていないからインテリセンス機能が働かない。

Option Strict Off の状態で使用されているのでしょうか?
それなら On で使用されるようお勧めします。(勉強のためにもなるし)
原因は、Dim MyCls = New MyName.Class1 ←○MyNameのインテリセンスでClass1が表示
では、MyCls の変数の型が宣言されていません。
Private MyCls As New MyName.Class1 のように宣言し直して見て下さい。

>Dim MyCls2 = New MyName.Class1
こちらはローカルで宣言されていますので、VB2008 からだったかVB2010からだったかチョット
確認しておりませんが、型が書いていないと自動で型を認識するようです。

因みに下記を試して見て下さい。
Option Strict On の状態で
ローカルで
Dim i = 0 'と宣言して見て下さい。
又、Private で
Private i = 0 'と宣言して見て下さい。

又、ループ用変数等は宣言しなくても使用できるようになったりしていますが、基本は踏まえて
おいて下さい。

VBのバージョンが書かれていないようですが、試された状況から推測すると
VB2010 かと思うのですが、VB.NET のように書かれると VB.NET 2002 VB.NET 2003 を指す
事になり変に誤解を招きます。
VB2005 以降は、製品名に“.NET”の名を冠さないようになっています。
因みに、現在[.NET対応のバージョン]は下記のようなものがあります。
VB10: Visual Basic 2010 / Visual Studio 2010
VB9 : Visual Basic 2008 / Visual Studio 2008
VB8 : Visual Basic 2005 / Visual Studio 2005
VB7.1:Visual Basic...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報