• ベストアンサー

オブジェクト指向

オブジェクト指向について調べています. もし,下のような例なら,「データ」は格担当(人物,街路樹etc)をどのように描くのか(色,形,種類)を定義していて,「プログラム」は人物,街路樹,建物,etcを描く行為でいいんですよね? ではこの中にある「監督的な立場の人」とはどういうことを表しているのでしょうか? よろしくお願いいたします. ーーーーーーーーーーーーーーーーーーーーーーーーー 例えばビルの屋上から見た風景画(全景)を描くとします。 ・昔は一人で全景を描いていました。 ・一人で描くのは大変なので複数人で手分けして共同作業します。 ・その場合、風景を、人物,街路樹,建物,自動車,道路,遠くの山並み,etc に分けて、描く担当者に分担させます。 ・それらを監督的な立場の人が遠近を考え纏め(張り合わせ)ます。 ・このようにして描くと、効率がよく良質な風景画が描けるという算段です。 ・オブジェクト指向の「オブジェクト」は、上記の「人物,街路樹,建物,自動車,道路,遠くの山並み,etc」が相当します。 ーーーーーーーーーーーーーーーーーーーーーーーーー 

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

  • ベストアンサー
noname#2009
noname#2009
回答No.3

まず描画作業一般としての上位クラス ・描画オブジェクト その下位クラスに ・人物,街路樹,建物,自動車,道路,山並み ・監督者(総括描画オブジェクト) が出来ます。 各クラス特性は、、 [描画オブジェクト](抽象クラス) 属性・・・屋上からの距離 振る舞い・・・描画処理、オブジェクト追加、削除 [人物][街路樹][建物][自動車][道路][山並み] 属性・・・屋上からの距離 振る舞い・・・描画処理 [監督者] 属性・・・描画オブジェクトリスト 振る舞い・・・描画処理、描画オブジェクト追加、削除 実装については、、 [人物][街路樹][建物][自動車][道路][山並み]::描画処理 → それぞれの図形描画。 [監督者]::描画オブジェクト追加→ [描画オブジェクト]を リストへ追加 [監督者]::描画オブジェクト削除→ [描画オブジェクト]を リストから削除 [監督者]::描画処理→ 描画オブジェクトリストを、距離の 遠い順から先に描画処理を行い上書きしていく。 ・・・となります。 [監督者]へ、[描画オブジェクト]として別の[監督者]を 追加することも可能です。そんな感じ (直接ソースで書いた方が分かりやすい気が、自分でも する。Compositeパターン?)

daxue
質問者

お礼

cheさん、ありがとうございましたm(_ _)m ちょっと難しいですが頑張って理解してみます。

その他の回答 (2)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

オブジェクト指向で考えると、あまりいい例では有りませんね。 (1)まず「オブジェクト」というものは独立した個体です。 (2)ある性質を持っています。 (3)他からメッセージを受け取って「ある振る舞い」をします。 と言うことから言えば絵に描かれた「人物,街路樹,建物,自動車,道路,遠くの山並み,etc」は上の条件を満たさず、「オブジェクト」では有りません。振る舞いを持ちません。 この場合「オブジェクト」とは監督者と各担当者なのですね。 監督者も各担当者も個性や地位、名前という「性質:プロパティ」を持ち、メッセージの受発信を行い、ある振る舞いをします。 もう一度かみしめて見てください。 ただ、もっと違う前提を置けば、「人物,街路樹,建物,自動車,道路,遠くの山並み,etc」がオブジェクトになる事は充分ありえます。それぞれが性質をもち、外から指令(環境の変化)を受けてある振る舞いをするということは至極当然の事です。 

daxue
質問者

お礼

ymmasayanさん、ありがとうございましたm(_ _)m オブジェクト指向について、ほんのり分かってきた気がします。

noname#30727
noname#30727
回答No.1

オブジェクト指向の特徴は幾つかあるのですが、差分という考え方をすると理解しやすいと思います。 オブジェクトAとオブジェクトBがあったとして、AとBが似ているならば、Aを設計し、AとBの違いを設計することで、Bを一から設計する必用がなくなるという概念です。 例えば人物を描く場合、人物専門を「人物描画クラス」、実際の担当者を「人物描画クラスのインスタンス」などと呼ぶことが多いですが、人物と自動車のように全く似ていないものは、全く別のクラスを設計することになります。 例えば男性を描く場合と女性を描く場合なら、まず人物描画クラスを作成し、その後、差分として男性描画クラスと女性描画クラスを作成するような考え方をすれば、オブジェクト指向っぽいかなと思います。 daxue さんの例示している幾つかの要素は、ほぼオブジェクト指向とは関係ないと思います。単純にプログラムの手順を説明しているような感じです。オブジェクト指向とは別に、エージェント指向というのがあるのですが、こちらはまだ概念が確立されていないようですが、なんとなく似ているような気がします。 うーむ、回答になっていないですね。

daxue
質問者

お礼

inthefloiさん、ありがとうございますm(_ _)m 要勉強ですね(汗

関連するQ&A