クラスの概念とは?

このQ&Aのポイント
  • クラスとは、何かを実行する物体の設計図のようなものであり、機能や動作、振る舞いをメゾットと呼びます。
  • フィールド(属性)を指定することにより、クラスのメゾットのアウトプットが変わります。
  • クラスを元に生み出されたオブジェクトをインスタンスと呼びます。
回答を見る
  • ベストアンサー

クラスの概念について、私の考えは正しいですか?

再度質問します。 クラスとは、何かを実行する物体の設計図のようなもの。何かを実行するというのは、車であれば、走行,車を止める,ライトをつける,クラクションを鳴らすということを実行し、これ等のようにある機能や動作や振る舞いのことをメゾットという。そして、このメゾットに関連した情報をフィールド(属性)といい、上記の車の例では、どこの社製の何という機種のライトであるか、どこの社製の何という機種のクラクションであるかとか。 このフィールドを指定することにより、このクラスのメゾットのアウトプットが変わってくる。例えば、アウトプットの良し悪しの観点から、上記の車の例で例えると、A社のc-11という製品名のライトの明るさを1として、B社のh-33という製品名のライトの明るさを3とすると、B社のh-33のライトのほうが、A社のc-11のライトより3倍アウトプットがいい。 このように、フィールドはメゾットのアウトプットに何かしらの影響を与える。 また、このクラスを元に生み出された、実際に動作してるオブジェクトをインスタンスという。上記の車の例では、実際に車が動作した状態で、例えば走行してたり、クラクションが鳴らしたり、ライトをつけたりという動作が実際に行われてる物体がインスタンス。

  • Java
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「メゾット」じゃなくて「メソッド (method)」ね. あと, 「フィールド」を「メソッドに関連した情報」とするのは変. 「そのクラスのオブジェクトが保持する情報」の方がまし. でここがおかしいので「このフィールドを指定することにより~」が不思議な文章になっている. 「全てのフィールドがメソッドのアウトプットに影響を与える」わけじゃないのは理解できますよね?

wanwannakuyo
質問者

補足

>>でここがおかしいので「このフィールドを指定することにより~」が不思議な文章になっている. 「全てのフィールドがメソッドのアウトプットに影響を与える」わけじゃないのは理解できますよね? 丁重なご解答ありがとうございます。 「そのクラスのオブジェクトが保持する情報」なので、「全てのフィールドがメソッドのアウトプットに影響を与えるわけではない」ということですよね? たしかに、、 Tacosanさんが指摘した点以外で、私のクラスに対する概念は間違ってないですか?

その他の回答 (1)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

> 再度質問します。 前の質問と続いているならリンク貼って欲しいです。 なんとなくどこかずれてるような感じがするのは実際のプログラムと 結びついてないからではないでしょうか。 車の例で実際にプログラムするとして、 ・クラスは何クラスになりますか? ・以下は上記クラス上では何になり、どう設定されますか? > A社 > c-11 > ライトの明るさ > ライトの明るさを3とする > アウトプット 上記を踏まえた上で、 ・インスタンスはなぜ必要ですか? ・フィールドがメソッドに影響を与える例を1つ上げて下さい。 できれば、クラスのコードを(最低限のコンパイルが通るレベルで) 書いてみて欲しいです。

wanwannakuyo
質問者

お礼

すいません、、、 僕まだ初心者なので、そういったことができません、、 出直してきます。

関連するQ&A

  • 僕の持ってるクラスの概念は正しいですか?

    僕の持ってる下記のクラスの概念は正しいですか? クラスとは、データ(「属性」または「フィールド」ともいう)とその操作手順であるメソッド(「振る舞い」、「動作」、「機能」ともいう)をまとめたオブジェクトの雛型(形式・様式を示す見本)を定義したもの。    クラスとは、いわば、何かを実行する物体(オブジェクト)の設計図のようなもの。何かを実行する物体というのは、例えば車をオブジェクトに例えると、「走る」,「車を止める」,「ライトをつける」ということを実行するが、クラスというのはその車(オブジェクト)の設計図。 また設計図だから、クラスの中には具体的に「何をさせたいのか」(車であれば、「走る」,「ライトをつける」等)を記述していくが、これがメソッドである。 また、車であれば、ナンバーや車種等の属性的情報があるが、このようにオブジェクトが保持する属性的情報がフィールドである。 また、この設計図を元に生み出された、実際に動作しているオブジェクトをインスタンスと呼ぶ。 車であれば、実際に走ったり止まったりライトをつけてるといったように、実際に動作しているオブジェクトがインスタンス。 これに関連し、オブジェクトとは、ソフトウェアが扱おうとしている現実世界に存在する物理的あるいは抽象的な実体を、属性(データ、フィールド)とメソッドの集合としてモデル化し、コンピュータ上に再現したもの。

    • ベストアンサー
    • Java
  • 親クラスと子クラスのフィールドとメソッドについて

    親クラスと子クラスのフィールドとメソッドについて 以下のサンプルソースを実行した時の動作の原理について 教えてください。 oya型変数にkoクラスのインスタンスを作成した場合、 メソッドはkoクラスのものなのに、 フィールドはoyaクラスのものになるということが イマイチすっきり理解できません。 どういうことなんでしょうか。 ------------------------------------------------------- [ソース] public class exec { public static void main( String args[]){ oya obj = new ko(); System.out.println(obj.str_field); obj.disp_field(); } } public class oya{ String str_field="親実行"; public void disp_field(){ System.out.println(str_field); } } public class ko extends oya { String str_field = "子実行"; public void disp_field(){ System.out.println(str_field); } } ------------------------------------------------------- [実行結果] > 親実行 > 子実行 -------------------------------------------------------

    • ベストアンサー
    • Java
  • クラス化ってそもそも何?

    クラスの考え方がいまいち分からなくなりました。 車とか物体で良くサイトとかでクラスについて 書かれてあるけど、逆に分からなくなってきてしまいまして・・; VBで実際のクラスを作成とかになるとどの部分が継承とか っていうのは分かるんですが、クラス自体がこういうものだと 口で言えない自分がいまして・・ こういうものはクラス化したほうが良い一つの例だよ・・的な 事も教えて欲しいです。 まだ明確に分かっていないので・・ 分かる方、ご教授よろしくお願いいたします。 サイトの紹介もありがたいです。

  • マルチスレッド下でのインスタンス変数・クラス変数

    よろしくお願いします。  マルチスレッド下で動作するクラスを作成しています。データにアクセスするためのオブジェクトを クラスのフィールド値として保持し、使い回しを行いたいと考えています。このデータアクセスオブジェクト(以下Dao)内では特にフィールドは使用せず、全てローカル変数のみで動作するようになっています。Dao自体は初回のクラス生成時にstatic処理にてフィールドにセットされます。  このDaoを保持するフィールドは、staticなクラス変数が良いのか、インスタンス変数として保持する方が良いのか迷っております。  クラス変数ならばPermanent領域をオブジェクト1つ分のメモリ使用で済み、インスタンス変数だとスレッド毎にheapを使い、処理数が増えるとメモリ圧迫しちゃう?と安易に考えてしまったりしています。  ご意見・ご助言よろしくお願い致します。

    • ベストアンサー
    • Java
  • VC++クラス間のアクセス

     いつもお世話になっております。プログラミングの初心者で、言語についての知識は独学で勉強したCのみです。環境はOSがwindowsXPで、開発環境はVisualStudio2008professionalを使用しています。  今回の質問はクラス間のアクセスについてです。実現したい動作は以下のような内容です。  (1)Form1が初期化される時に、クラス(フィールドとメソッドを持つ もの)をインスタンス化する。  (2)イベントで、別のフォームを開く。  (3)(2)で開いたフォームのクラスから(1)でインスタンス化したクラスに アクセスして、クラスのメソッドを使用する。  拙い表現で分かりにくいかもしれませんが、どうかよろしくお願いいたします。

  • クラス、オブジェクト、インスタンス、メソッドについて。

    クラス、オブジェクト、インスタンス、メソッドに ついて教えていただけないでしょうか? 今現在の自分の認識では、乗り物を例にすると、 「乗り物」という大枠がクラス。それを、たとえば 飛行機なり電車なり船なり、より具体的にした ものがインスタンス=オブジェクト。 その具体化したものの挙動、動作(走るとか飛ぶとか) がメソッド、という理解です。 ただ、これだとオブジェクトとインスタンスを 同じものとして見てしまっているので、この2つの 違いを明確に説明しろと言われると困ってしまいます。 インスタンスとオブジェクトの違いを明確にした上で うまく伝えられる方法があれば、ご教授ください。

  • 内部クラスのインスタンスを外部クラスが保持する場合

    C++での内部クラスの宣言の仕方なのですが、例えば、 class Outer { private:    class Inner; public:    Outer();    ~Outer(); }; class Outer::Inner { public:    Inner();    ~Inner(); }; のように単純に内部クラスが宣言されているだけならば、 その具体的な定義を外側に書くことは可能と思うのですが、 class Outer { private:    class Inner    {    public:       Inner();       ~Inner();    }; public:    Outer();    ~Outer();    Inner inner; //内部クラスのインスタンス }; のように外部クラスが内部クラスのインスタンスを保持していた場合には、 上記のようにインスタンス作成より上で外部クラスの宣言内に内部クラスの定義を書かないと、 コンパイルが通らない(VC++2008)と思います。具体的な中身がないままインスタンスを 作っているのでエラーを吐く理由もわからないでもないですが、 見易さ的に上の例のようにかけないのかなとも思ったりします。 インスタンスを外部クラスに持たせずともどうとでもなるのですが、 あえて上のようなことをしたくなった場合には下のような方法で記述する以外ないのでしょうか?

  • javaにおけるクラスの定義

    クラスとは「データ(属性)とその操作手順であるメソッドをまとめたオブジェクトの雛型(形式・様式を示す見本)を定義したもの。」という意味であるようですが、これは具体的にどういうことでしょうか? 私なりに考えてみたので、それが正しいかどうか判断してください。その上で、より本質的且つわかりやすい例えがあればご教示ください!(私はプログラミング初心者なので、それを念頭に置いた上で、より分かりやすい解説お願いします。) 上記の定義をもとにした私が考えるクラスの具体例 →例えば、属性として「血液型」、メゾットとして「家事」というオブジェクトの雛形を定義すると、Aさん(血液型A)、Bさん(血液型B)、c(血液型o)さん、そして家事をする主婦としての人間オブジェクトが生成できる。このオブジェクトをまとめて管理する仕組みがクラス。このクラスに属しているオブジェクトは、必ず属性として「血液型」、「家事」としてメゾットを持つ。 私の例えは、なんかいまいちしっくりきません。 もっとわかりやすく且つ厳密で本質的なご教示お願いします!

    • ベストアンサー
    • Java
  • クラス・メソッド・プロパティについて

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

  • クラスとインスタンスについて

    はじめまして。Javaをはじめて3か月の超初心者です。 早速ではございますが、質問をさせていただきます。 以下のサンプルで、 class Foo { private int i = 0; Foo(int i) { this.i = i; } void func1() { System.out.println(this.i); } void func2(Foo foo) { System.out.println(foo.i); } } class Main { public static void main(String[] args) { Foo obj1 = new Foo(100); Foo obj2 = new Foo(500); obj1.func1(); obj1.func2(obj2); } } privateフィールドのスコープは同一クラス内からしか アクセスできないと参考書には記述されているの ですが、そのクラス内に上のサンプルのように this.iやfoo.iというように、クラスは同じでも インスタンスが異なるものがiにアクセスするとき、 上のサンプルは、どちらもアクセス制限のエラーが表 示されません。なぜなのでしょうか? this.iというアクセスは、現在実行中のインスタン ス内でのアクセスなので、privateスコープ内での アクセスであるというような感じがするのですが、 foo.iというアクセスの方は、現在実行中のインスタンスとは異なるインスタンス内でのアクセスなので、 privateスコープからはずれているような感じがして なりません。

    • ベストアンサー
    • Java

専門家に質問してみよう