• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「オブジェクト」について質問)

オブジェクトとは?

このQ&Aのポイント
  • オブジェクトとは、データとそれを操作する機能をひとまとまりにしたものです。
  • 具体例として、配列を考えてみましょう。配列はデータ(数値など)を持ち、それを操作する機能(要素の取得など)を提供します。
  • オブジェクトは、データと機能が組み合わさったものであり、コードの再利用や保守性を高める重要な概念です。

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.4

回答1 オブジェクト というのは現実のものをクラスとして表したもの。 例えば人、例えば車、国とか花とか黒板、鉛筆、パソコン、風、水、先生、子ども、エトセトラ こういったものがオブジェクトになるの。 車を例に挙げると、車というのはまた複数のオブジェクトを中に持っているわね。 タイヤ、エンジン、フレーム、ナンバープレート・・・ こういうのがこの車を表すデータになるわけ。 そして車の 走る、ガソリンを入れてもらうなどが操作と機能になるの。 回答2 配列 というものをオブジェクトとして考えてみて どんな機能があるのか考えると ・データを保持する ・指定されたインデックスのデータを渡す とかいいかもね。 Arrayというクラスに getAt(int index)というメソッドを用意してあげて こんな感じね。 class Array { int[] n; public Array(int[] ary) { n = ary; } public int getAt(int index) { return n[index]; } } class Main { public static void main(String[] args) { Array n = new Array(new int[]{3,5,7}); int data = n.getAt(0); } } ※コンパイル確認していないのでミスあるかも?

wantanton
質問者

お礼

丁重なご回答有り難う御座います! 特に配列がオブジェクトである例を例示してくださいまして、わかりやすかったです! ありがとうございます!

その他の回答 (4)

回答No.5

このあたり100人が100種類の回答をするかもしれませんが、 以下は私の見解です(といっても多くのOOPの本の内容と だいたい同じだと思います(^^;)。 質問1 ですが、例えば 矩形の領域に何かを描くことを考えると 1) 矩形の位置と大きさを決める。 2) 矩形内を描画する。 なんて操作が必要でしょう。すると、 A) 矩形の位置と大きさ B) 描画する図形データ をどこかに保持しておく必要が有るはず。 このような、A), B) の「データ」をその内部に保持し、 1), 2)のような「操作」を実行できるものを 「オブジェクト」といったりします。 「オブジェクト」は最初に述べたような 「矩形の領域に何かを描く」というような役割を 持っていて、オブジェクト指向分析ではこれを「責任」 と呼んでいます。 まず、プログラムを「責任」に分解して それにオブジェクト(データと操作)を割り当て、 さらにオブジェクト群の連携を考えてゆくことを 「オブジェクト指向で設計する」 といったりします。 このあたり若干の発想の飛躍が必要なので、最初は 判らないかもしれませんが、上記の説明などを踏まえて、 具体的なソースに触れてみると、 もう少し理解が進むかもしれません。

wantanton
質問者

お礼

丁重なご回答有り難う御座います! オブジェクトの概念について、だいぶわかりやすかったです!!! また一歩理解が進みました!

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.3

>>、「データとそれを操作する機能をひとまとまりにしたものをオブジェクトといいますが、」 質問1:抽象的過ぎて、上記の解説がわたしにはよく理解できませんでした。 単純に配列から1つの値を持ってくるだけでは、「機能をひとまとまりにした」とは言えないでしょう。現実のプログラムでは、その配列は商品単価だったり、年齢を意味していたりします。なので、機能とは、単に0番目を拾ってくるではなく、「単価を○%値上げする」とか、「月初での年齢を計算する」とかいう機能であり、それらをクラスにまとめたりしています。 そういう機能の処理はデータとペアで初めて意味があるので、それらをひとまとまりにすれば、プログラム作成が楽になり、メンテナンスも容易になると考えられて、それらをクラスとかオブジェクトと呼んで、「オブジェクト指向」ってのが(過去に)もてはやされ、あたかも「銀の弾丸」「黄金ハンマー」みたいに、ソフト開発の万能薬扱いされました。 でも、開発環境の現場では、「やっぱり、銀の弾丸って存在しないよね」「クラスって使いにくいよね」という評価を下す人もいます。 まあ、あまり「オブジェクト」という単語にこだわる必要は無いと思います。

wantanton
質問者

お礼

丁重なご回答ありがとうございます! あまりオブジェクトにこだわりすぎてもだめですね、、

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

そうですね。 配列をオブジェクトと考えると、「i番目の要素を取り出す」というのはメソッドになります。 たとえば、「A市立第一中学校」をオブジェクトとすると、 ・校長先生の名前を得る ・引数で与えた苗字を持つ生徒(オブジェクト)のセットを得る ・引数1で与えた生徒(オブジェクト)を転校生として、引数2で指定した学年の、引数3でで指定したクラスの転校生として追加する などが、操作手段(メソッド)になります。 ただ、No1の人が書いているように、この程度のことは入門書に書いてあると思うんですが。

wantanton
質問者

お礼

ありがとうございます! 分かりやすい例示までしていただいてありがとうございます!感謝です!

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

> 初心者の私にも理解できるように、身近な具体例を織り交ぜてご説明頂けましたら幸いです。 その参考書に書いてあるんじゃないの?

wantanton
質問者

お礼

ありがとうございます! たしかに書いてありました 笑

関連するQ&A