• 締切済み

クラス・メソッド・プロパティについて

質問の閲覧ありがとうございます、是非回答お願い致します。 前々からプロミングに興味があったのですが、敷居が高そうという勝手な思い込みから、手を出せずにいましたが 先週ごろからVB.netの方を少しずつではありますが勉強し始めました。 色々なサイトを参考に実際キーボードを叩きながら四苦八苦している最中なのですが、クラス(インスタンシング)・メソッド・プロパティで壁にぶち当たりました TextBox1.AppendText("Hello!!") PictureBox1.Image = Image.FromFile(File1) 上記のコードでいう「AppendText」はメソッド「Image」はプロパティ だと思うのですが、 1:クラス名(orインスタンス)+メソッド 2:何らかの値+メソッド 3:特殊なパターン(MsgBoxなど) これは上記のどのパターンにあてはまるのでしょうか (TextBoxやPictureBoxはクラスとして扱われる・・・?) また、インスタンス化しないと使用できないもの、またその逆の判別が中々付きません 共有・非共有メンバと書かれていたりするのですが、明確な意味がわからず頭を悩ませています 例として、 Graphicsのdrawlineを使用する時にはインスタンス化しなくても描画が可能であるのに、乱数を範囲指定で出したい時にはインスタンス化が必要 など、どちらも値を指定して・・・という内容なのに・・と思ってしまいます 文がわかりにくく、質問の内容も幼稚で申し訳ありませんが、 馴染みのない私にとっては難関なので是非とも 質問内容も含め、クラス(インスタンス)、メソッド、プロパティについてご教授ください、よろしくお願い致します

みんなの回答

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.1

オブジェクト指向プログラミングの基本となりますが 端的に言えばクラスというのは型でインスタンスがその実体です。 例えば「車」をオブジェクト指向で捉えると 「車」がクラスです。 「車」には質問者様が所有されている「車」もありますし、 隣人が所有する「車」もあるでしょう。 このように実体のある「車」がインスタンスです。 「車」には「ナンバープレート」や「色」「車種」などインスタンス毎に様々な情報を持ちます。これが「プロパティ」です。 「車」は「走る」ことができます。どんな車でも走らない車なんて無いでしょう。 このようにクラスの行うことができる操作を表したのが「メソッド」です。 >上記のコードでいう「AppendText」はメソッド「Image」はプロパティ だと思うのですが、 >(TextBoxやPictureBoxはクラスとして扱われる・・・?) その理解で概ね良いです。 >1:クラス名(orインスタンス)+メソッド 「クラス名.メソッド名」で呼び出せるメソッドは共有メンバです。 また、「クラス名.プロパティ」で呼び出せるプロパティも共有メンバです。 「インスタンス.メソッド名」で呼び出せるメソッドは非共有メンバです。 また、「インスタンス.プロパティ」で呼び出せるプロパティも非共有メンバです。 >2:何らかの値+メソッド メソッドを持つ以上、「何らかの値」というのは上記で示した通り必ずクラスまたはインスタンスになります。 >3:特殊なパターン(MsgBoxなど) 特殊なパターンをどう捉えるかですが 少なくともMsgBoxはMicrosoft.VisualBasic.Interactionクラスのメンバであり、特殊でもなんでもありません。 ※ 余談ですが、特殊なパターンなら私は「this」や「My」といったキーワード(予約語)を思い浮かべます。 >Graphicsのdrawlineを使用する時にはインスタンス化しなくても描画が可能であるのに、(‥略) インスタンスの持ち物というよりはクラスの持ち物と考える場合や 一般的な(関数的な)機能を提供するだけなら共有メンバとする傾向があります。 しかしプログラム的にはSharedが付いているかいないかというだけの話にすぎません。 すなわち、クラスの作り手のセンスに完全に委ねられており、 「なぜこれは共有メンバなの?」といった疑問にはあまり意味がないと思います。

ku24962001
質問者

お礼

とても丁寧な回答ありがとうございます 現段階で、それほど理解にずれのがあるわけではなかったようでホッとしています ある程度のラインを引いて、その部分でそうなるものと理解する といった勉強法も必要だと感じました、性格上難しく考えすぎてしまうようで・・・・

関連するQ&A

  • クラス、メソッド、プロパティ、変数などの意味は?

    いろんなサイトやネットでいろいろ調べたのですが、 よく分かりませんでした。自分なりに考えたことですが、 (1)~(6)の用語の内容とコード上での色付けは正しいでしょうか? (1)クラス(緑枠) コンストラクタ、メソッド、プロパティを一括りにまとめたパッケージのこと。 つまり、functionの【{】と【}】の間にあるもの。 (2)オブジェクト(青枠) 関数。すなわち「複数の物や動作を入れる物」。 つまりfunctionで始まるものをオブジェクトと呼ぶ。 (3)コンストラクタ(= クラス名または関数名)(紫枠) 「構築子」のこと。オブジェクトを作る名前の部分。 つまりfunction直後に付ける関数名(クラス名)をコンストラクタと呼ぶ。 (4)プロパティ(赤枠) 「特徴」のこと。 つまりfunction内で指定された変数(var b)をプロパティと呼ぶ。 function a(){var b;}; (5)メソッド(水色枠) 「動作」のこと。 つまりオブジェクト(functionで始まるもの)が 変数(var b)に指定された場合はメソッドと呼ぶ。 var b = function a(){}; (6)変数(灰色枠) function外で指定された変数(var b)は、変数と呼ぶ。 function a(){}; var b;

  • インスタンス変数とクラス変数の違い

    1つのクラスオブジェクト内のインスタンス全てで共有できる クラス変数 @@a と、 同じインスタンス内であればメソッドの定義を越えてその値を 参照したり、変更したりできるインスタンス変数 @a のスコープの違いをお手すきでしたらご指導願えませんか? あとクラス変数にはセッターやゲッター等のアクセスメソッドを 設定できるんですか? いろいろ知りたいです。

    • ベストアンサー
    • Ruby
  • クラスのプロパティ一覧を列挙してその値を取得する

    クラスのプロパティ一覧を列挙してその値を取得する お世話になります。 AS3 / Flash Professional CS5を使用しています。 クラスのプロパティ一覧を列挙して、その値を取得する方法で悩んでいます。 やりたいことは以下の通りです。 1.Flashムービー実行中にFlash CS5でリンケージされたクラスをnewしてインスタンスを作る 2.1のインスタンスを渡すと中にあるTextFieldを根こそぎ列挙して、その中身の値を読みだす 3.2の値をもとにTextFieldを継承した別の何かを生成し、置換していく 4.1~3を大量のオブジェクトに対して一斉に行う なのですが、2の「中にあるTextFieldを根こそぎ探して」の段階で詰まっています。 describeTypeメソッドでクラスの中身のXMLを吐くことができましたが、 そこから先はどうすればよいのかわからず困っています。 mx.utils.ObjectUtil.getClassInfo()が使えたらどれだけ楽なことか……。 大人の事情で外部ライブラリは一切使用できない、と言うことになっているのです。 どうかご教示お願いします。

    • ベストアンサー
    • Flash
  • uasort()でクラスのメソッドは呼べますか?

    2次元連想配列の指定項目をソートするのに、uasort()を使いたいのですが、 uasort()で指定する関数に任意の引数は渡せず、固定の項目しかソートできません。 uasort($rensouArray,"comparar"); 関数ではなくクラスのメソッドが指定できば引数を渡せなくてもクラスのプロパティで渡せると思いましたが、 以下の書き方ではクラスのメソッドは呼べませんでした。 uasort($rensouArray,$this->$comparar()); http://jp.php.net/manual/ja/function.uasort.php の注意書きで、関数名の代わりに、オブジェクトへのリファレンスを格納した配列とメソッド名を指定することも出来ます。とありますが、書き方がわからず困っています。

    • 締切済み
    • PHP
  • クラスメソッドの仕様

    次のようなクラスメソッドを作りたいのですが、自分で作って見たところ、どのような点を修正すればいいか分かりません。 どうか教えてください。 (1) 次に示す内容を満たすバー(Bar)クラスを作成せよ。 1. バーの右端のx座標(=バーの長さ)、バーの名前を扱う2つのprivateなインスタンス変数を持つ。 2. バーの総数を扱うprivateなクラス変数を持つ。ただし、 ここでいう総数とは、(1)コンストラクタで作成したもの、(2)代入操作で作成したもの、の両方を含む。 3. 引数無しのコンストラクタが呼び出されてバーオブジェクトが作成されると、そのバーのx座標は0以上400未満でランダムに決定され、名前は文字「A」とランダムに決定された0以上10000未満の整数が連接されたものに決定される。 4. バーのx座標を設定するインスタンスメソッドを持つ。 5. バーの名前を設定するインスタンスメソッドを持つ。 6. バーのx座標を取得するインスタンスメソッドを持つ。 7. バーの名前を取得するインスタンスメソッドを持つ。 8. 作成されたバーの総数を取得するクラスメソッドを持つ。 9. 作成されたバーの総数を1増やすクラスメソッドを持つ。 10. 作成されたバーの総数を1減らすクラスメソッドを持つ。 これを自分なりに解釈したところ、 class Bar{ private int x; private String name; private int count; private Bar(){ x=0; count=0; name=""; } public void Bar(){ x = (int)(Math.random()*400); name = "A" + (int)(Math.random()*10000); } public void setBar(int bx){ x=bx; } public void setName(String nm){ name=nm; } public void getX(int bx){ } public void getName(String nm){ } public void getCount(int c){ } } どうか御教授お願いします。

  • visual C++でのツール番号の指定方法

    Visual C++では、pictureBoxやtextBoxなどのツールがありますが、例えば、以下のようにpictureBoxの番号にあったファイルを表示する場合にはどのように書き込めばいいでしょうか? pictureBox1→1.bmpを開く pictureBox2→2.bmpを開く ・・・ pictureBoxn→n.bmpを開く nの数が少なければ、 pictureBox1->Image=Image::FromFile("C:/Users/1.bmp"); のように書いていけばいいですが、nの数が多くなれば、その分書き込まなければならないですし、 この番号をプログラム内でfor文などで指定できるようにするにはどのように書き込めばいいでしょうか?

  • 「クラスプロパティ」 or 「セッション」保存?

    ・「クラスプロパティ」 へ保存するか、「セッション」へ保存するか迷っています ・両者の寿命の差はどうなっているでしょうか? ・特に「クラスプロパティ」の方を知りたいです ・そのクラスが読み込まれ続けている限りは、「プロパティ」へ保存したデータは読み込み可能? ・あるいは、生成したインスタンスが破棄されない限りは、「プロパティ」へ保存したデータは読み込み可能? ・もしくは、画面を更新しない限りは、「プロパティ」へ保存したデータは読み込み可能? ・利用は、AJAXで画面遷移なしで進んでいく場面間のデータ保持を想定しています ・また、例えば複数人が同時にアクセスして同じ処理が走った場合、「クラスプロパティ」の値は個別保存されるのでしょうか? ・「クラスプロパティ」ではなく「インスタンスプロパティ」だったら、複数保存OK?

    • ベストアンサー
    • PHP
  • 別クラスのメソッドの呼び出し

    どうしても期待した値が取れず、バイナリが返ってきてしまいます。 簡単な内容なので申し訳ないのですが書き方を教えて下さい。 下記内容です。↓ クラス01にmainメソッドを作成。 そこに「一」「二」「三」を格納する変数を宣言。 クラス02にpublic以外のメソッドを作成。 そこで「一」「二」「三」を引数として受け取り、その3つを「+」以外で文字列連結する。 クラス01のmainメソッドから、クラス02のメソッドを呼び出し、最後にSystem.out.printlnで戻ってきた文字列を出力。 ソース貼っておらず申し訳ないのですが宜しくお願いします。

    • ベストアンサー
    • Java
  • プロパティにスタティックメソッドを入れられますか?

    質問です、よろしくお願いします。 以下のようなクラスを書いたのですが class test extends aaa { $base_dir = Zend_Registry::get('base'); // 親クラスなど上位の処理何かしらの値が入っているとします public static function index() { return $this->base_dir; } } $test_index = test::index; print $test_index; =============================================== 上記のような簡単なクラスだとして Parse error: parse error in ディレクトリ ~~~ といったエラーがでます エラー行は、この例ですと $base_dir = Zend_Registry::get('base'); のところです。 Zend_Registryのせいなのか、他のスタティックメソッドでも同じなのかわかりませんが 何故エラーになるのかがわかりません・・・ php.iniの設定なのかとも疑ってみましたがそれらしいところは見付かりませんでした。 プロパティにスタティックメソッドをいれることができないということならスッキリ理解できるのですが、そんな話も聞いたことは無かったので、質問させていただきました。 PHPのバージョンは5.2.8です わかりづらい説明で申し訳ありませんがお願いします

    • ベストアンサー
    • PHP
  • C#「オブジェクト参照が必要です」(初心者)

    Visual C# 2008を学習中なんですが、とりあえず何か作ってみようと思って、パラパラマンガに挑戦してみました。 Form1にpictureBox1を作り、waitを入れてイメージを書き換えるという単純なものです。 ところが実行しようと思ったら、「静的でないフィールド、メソッド、またはプロパティ’WindowsFormApplication1.Form1.pictureBox1’でオブジェクト参照が必要です」というエラーが出ます。その際のフォーカスは、main()内の Form1.pictureBox1.image = Image.FromFile("motion1.png"); ”Form1.pictureBox1”に当てられています。 何が原因と考えられるでしょうか。 もし情報不足であればご指摘いただくか、あるいはこの目的においてやらなければいけないこと、を大雑把に教えていただくだけでも幸いです。 よろしくお願いします。

専門家に質問してみよう