C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: クラスのインスタンスについて


(過去ログ 15 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■5569 / inTopicNo.1)  クラスのインスタンスについて
  
□投稿者/ モンタ (1回)-(2007/07/18(Wed) 15:49:06)

分類:[VB.NET] 

初めて投稿します。WindowsXP VB2005 Express Edition を使用している初心者です。
クラスをインスタンス(実体)してオブジェクトを生成について、アイコンのオブジェクト生成を下に例示して質問します。
Dim SS As Icon
SS = New Icon("Leaf.icon")

1.宣言のデータ型について
第一行目の宣言文で「クラスライブラリのデータ型で宣言する」とほとんどの参考書にはさらっと
流して説明していますが、参照型変数の宣言に使用するデータ型(ここではIcon)は、どこから
参照するのですか。
2.Newキーワードで呼び出されるコントラクタ(特殊なメソッド)について
第2行目のNewキーワードに続くコンストラクタ(ここではIcon("Leaf.icon"))はどこから参照する
のでしょうか
オブジェクトを生成について、ここ1ヶ月ほど前から気になって、前に進めない状況で悩んでいます。
教える方の立場からすると、この段階で新たなデータ型や「New」の説明をするのは大変なので、さらっと
流して済ませたいところでしょうが、書店や図書館で参考書を見ても、過去ログにもこのことの体系的な
解説がなくもやもやしています。どうぞよろしくお願いします。



引用返信 編集キー/
■5572 / inTopicNo.2)  Re[1]: クラスのインスタンスについて
□投稿者/ まどか (335回)-(2007/07/18(Wed) 16:01:15)
> 1.宣言のデータ型について
> 第一行目の宣言文で「クラスライブラリのデータ型で宣言する」とほとんどの参考書にはさらっと
> 流して説明していますが、参照型変数の宣言に使用するデータ型(ここではIcon)は、どこから
> 参照するのですか。

何を参照するかは
プロジェクトのプロパティ→参照タブ、またはソリューションエクスプローラ→すべて表示→参照設定ノード
です。
プロジェクトのプロパティ→参照タブの下のインポートされた名前空間でチェックされているもの
または
Importsステートメントで指定された名前空間のパスは
省略することができます。というかそこから探し出してくれます。

> 2.Newキーワードで呼び出されるコントラクタ(特殊なメソッド)について
> 第2行目のNewキーワードに続くコンストラクタ(ここではIcon("Leaf.icon"))はどこから参照する
> のでしょうか

↑の「どこから」はちょっと期待するものがわかりませんでした。
引用返信 編集キー/
■5642 / inTopicNo.3)  Re[2]: クラスのインスタンスについて
□投稿者/ モンタ (2回)-(2007/07/19(Thu) 13:28:06)
まどかさん
質問の仕方が悪くて申し訳ありません。具体的に例で説明させてください。

1.宣言のデータ型について
Dim SS As Icon に記された「Icon」はデータ型との事ですが、どこを見て(あるいは何を転記して)Icon と記述したので
しょうか。クラス名を記述しあのでしょうか。逆に言いますとIcona や Iconb と記述しいても問題ないのでしょうか。

2.Newキーワードの記述方法について
SS = New Icon("Leaf.icon") に記述されている「Icon("Leaf.icon")」は、どこを見て転記したのでしょうか。

以上、宣言文で「Dim SS As _____ 」とNewキーワードの文で「SS = New _____________ 」の________ 線部分に何を記述すれば
いいのか、文法的な決まりがあると思いますが、教えていただければと質問した次第です。
よろしくお願いします。

引用返信 編集キー/
■5646 / inTopicNo.4)  Re[3]: クラスのインスタンスについて
□投稿者/ よねKEN (57回)-(2007/07/19(Thu) 14:16:20)
よねKEN さんの Web サイト
2007/07/19(Thu) 14:37:11 編集(投稿者)

> 1.宣言のデータ型について
> Dim SS As Icon に記された「Icon」はデータ型との事ですが、どこを見て(あるいは何を転記して)Icon と記述したので
> しょうか。クラス名を記述しあのでしょうか。逆に言いますとIcona や Iconb と記述しいても問題ないのでしょうか。

Asの後ろに書けるものは何でどういうルールで決まるのか?ということですよね?

厳密さはおいといて簡単に言えば、
(1) VBで用意されている型(Integer、Stringなど)
(2) 自分で定義したクラスのクラス名
(3) .NET Frameworkで用意されているクラスライブラリのクラス名
のどれかを指定できると考えてもらえばよいかと思います。

※上記でクラスと書いているものは構造体やインタフェースなども含まれますが、
 とりあえずクラス名だという理解でも今は十分だと思います。

---- もう少し詳細に ----
Iconは指定できます。IconaやIconbはモンタさんがIconaやIconbといった名前のクラスを
独自に定義していなければ指定できません。
ここからはまどかさんの説明への補足です。

Iconを何故指定できるか?という前に押さえておきたいポイントがあります。
ここでのIconという指定はSystem.Drawing.Iconクラスを指定したものと見なされます。
つまり、Dim SS As System.Drawing.Iconと表記していること同じ意味としてVBは解釈します。
そして、このことに対するまどかさんの説明が

>プロジェクトのプロパティ→参照タブの下のインポートされた名前空間でチェックされているもの
>または
>Importsステートメントで指定された名前空間のパスは
>省略することができます。というかそこから探し出してくれます。

の部分です。
(1)「プロジェクトのプロパティ→参照タブの下のインポートされた名前空間」という説明部分は、
VisualStudio(Express Editionでも同様)での設定箇所についての指摘です。
(2)「Importsステートメントで指定された名前空間のパス」はプログラム上で
「Imports 〜」という記述をしてあった場合についての指摘です。

(1)の設定にたいていの場合、System、System.Drawing、System.Windows.Formsなどが登録されています。
このような設定がある場合、「As Icon」という指定を見つけたら、VBはそれを
Icon、System.Icon、System.Drawing.Icon、System.Windows.Forms.Iconのどれかだろうと解釈します。

そして、Icon、System.Icon、System.Drawing.Icon、System.Windows.Forms.Iconのどれが指定されているのか?
をVBが判断するために、次に行うのはこれらのクラスがどこに存在するか探します。

VBは"Icon"クラスの定義を探すために、
・まずモンタさんが独自に定義したクラスの中に"Icon"という名前のクラスがないかを探します。
・そこに無ければ、今度は「参照設定」で指定されているdllなどに含まれるクラスの中に
Iconという名前のクラスがないかを探します。
・System.dllの中にSystem.Drawing.IconクラスがあるのでAsの後ろにある"Icon"というのは、
このクラスだと判断します。

> 何を参照するかは
> プロジェクトのプロパティ→参照タブ、またはソリューションエクスプローラ→すべて表示→参照設定ノード
> です。

というまどかさんの回答は、この探す場所となるdllはどうやって決まっているか?ということに
対する説明ですね。

System.dllやSystem.Windows.Forms.dllなどのDLLは.NET Frameworkのクラスライブラリのdllのため、
最初から使えるようなっています。
(String型などの基本的な型はmscorlib.dllに入っていますが、これはVisualStudioで特に
参照設定をしなくても暗黙に参照されます)

ちなみに「As Integer」のようなVBの言語仕様で規定されている型が指定できるのは、
例えばこのIntegerは.NET FrameworkクラスライブラリのSystem.Int32の別名で、
VBが内部的にInteger → System.Int32だと解釈してくれるようになっているからです。

引用返信 編集キー/
■5648 / inTopicNo.5)  Re[3]: クラスのインスタンスについて
□投稿者/ 通りすがり (5回)-(2007/07/19(Thu) 14:34:23)
No5642 (モンタ さん) に返信
> まどかさん
> 質問の仕方が悪くて申し訳ありません。具体的に例で説明させてください。
>
> 1.宣言のデータ型について
> Dim SS As Icon に記された「Icon」はデータ型との事ですが、どこを見て(あるいは何を転記して)Icon と記述したので
> しょうか。クラス名を記述しあのでしょうか。逆に言いますとIcona や Iconb と記述しいても問題ないのでしょうか。
>
> 2.Newキーワードの記述方法について
> SS = New Icon("Leaf.icon") に記述されている「Icon("Leaf.icon")」は、どこを見て転記したのでしょうか。
>
> 以上、宣言文で「Dim SS As _____ 」とNewキーワードの文で「SS = New _____________ 」の________ 線部分に何を記述すれば
> いいのか、文法的な決まりがあると思いますが、教えていただければと質問した次第です。
> よろしくお願いします。
>

転記って・・・丸暗記テストじゃないんだから頭使った方がいいよ。
引用返信 編集キー/
■5650 / inTopicNo.6)  Re[4]: クラスのインスタンスについて
□投稿者/ 通りすがり~2 (1回)-(2007/07/19(Thu) 15:02:02)
>> (あるいは何を転記して)
>
> 転記って・・・丸暗記テストじゃないんだから頭使った方がいいよ。
>
日本語が苦手みたいだから、言葉尻とらえても意味がないよ。
引用返信 編集キー/
■5654 / inTopicNo.7)  Re[5]: クラスのインスタンスについて
□投稿者/ モンタ (3回)-(2007/07/19(Thu) 16:05:24)
よねKEN さん
ご親切なご指導ありがとうございました。
値型変数の宣言や自分で作成したクラスを使う場合以外は「.NET Frameworkで用意されているクラスライブラリのクラス名」
であるということが判らずに、もやもやしていました。なお、構造体やインタフェースなども含まれる事も覚えておきます。
さらに、VBが"Icon"クラスの定義を探す方法には下の2つがあることも理解できました。
1.プロジェクトのプロパティのインポートされた名前空間
2.「Importsステートメントで指定された名前空間のパス」
また最初に優先して自分が作成した独自のクラスの中に"Icon"という名前のクラスがないかを探すことも覚えておきます。
大変ご親切にありがとうございました。

引用返信 編集キー/
■5656 / inTopicNo.8)  Re[6]: クラスのインスタンスについて
□投稿者/ モンタ (4回)-(2007/07/19(Thu) 16:46:40)
解決済み似るのを忘れましたので再投稿しました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -