電子書籍の厳選無料作品が豊富!

こんにちは。

前から分からずに考えていたのですが、
オブジェクト指向は、抽象具体の階層を利用することで、
プログラミングに必要な概念を階層化して分類する、
ということとは、違いますか?

多分これでは違うかも・・
とも思うのですが、
上の考えからのずれとしての指摘をしていただけたらうれしいです。
つまり、上の階層概念に、足りない部分を付け加える形でのご指摘をお願いできたらと、都合が良いのですが、よろしくお願いします。

というかぶっちゃけ、長く理解できずに困っています・・

A 回答 (3件)

継承は、オブジェクト指向の主要な概念ではないです。

なので、階層化というのは別段大事な部分ではありません。
変数や関数を「オブジェクト」という単位にまとめ、その(一般的な意味での)インターフェイスを定義するカプセル化の方が、概念的には大切です。
ソースコード上で嬉しい点も、カプセル化による名前空間の分離と、ポリモーフィズムによる場合分けの減少(または、より抽象度の高い書き方が出来ると言う点)というあたりですね。

ただ、オブジェクト指向と言ったときにその背景があまりに広いので、人によって意味するところは違います。上記は、現代的なオブジェクト指向言語に対する私の考え方に過ぎません。メッセージング指向こそがオブジェクト指向、という方が歴史的には正統なのかも知れません。
http://d.hatena.ne.jp/sumim/20040525/p1
    • good
    • 0
この回答へのお礼

ありがとうございます。

参考のページを読んでみたのですが、詳しい方が分析しもてこうだ、ということは、
単純に、昔のプログラミングから直線的に進化したのではなく、
以下に現実に即して、巨大なプログラムをうまく組むか?
という課題をこなしていくために、
プログラミングの理想を追う、というよりは、
現実的な問題に処すために、現実によって変形してきたのかな?
という印象を持ちました。

だからこそ、一言で語れないで、理解の難しいことになってるのかも知れない、と感想を持ちました。

おもしろかったですー。

お礼日時:2010/04/05 21:16

#2さんと同じ意見ですが階層化は基本的な部分ではありません



例えば、「部屋に入って明かりを点ける」プログラムを書く場合、

オブジェクト指向で無い場合は
if(Aの部屋の場合){ 扉を押して部屋に入る;右の壁に行く;スイッチを上げる;}
if(Bの部屋の場合){ 扉を引いて部屋に入る;左の壁に行く;スイッチを下げる;}
if(Cの部屋の場合){ 扉はないそのまま入る;右の壁に行く;スイッチを上げる;}
などと記述しますが

オブジェクト指向の場合はどの部屋でも
 部屋に入る;明かりを点ける;
と一つの記述で済みます。
(扉を押すのか引くのか、右か左か、上げ下げ等を記述しなくて良い)
その代わり、
 部屋A:扉は押す;スイッチは右の壁;上げると入る;
 部屋B:扉は引く;スイッチは左の壁;下げると入る;
 部屋C:扉はない;スイッチは右の壁;上げると入る;
などと記述する必要が有ります。

部屋Aと部屋Cは扉のところだけが違うので
部屋AC:扉は?;スイッチは右の壁;上げると入る;を定義すれば
部屋A:扉は押す;その他は部屋ACと同じ;
部屋C:扉はない;その他は部屋ACと同じ;と記述することが出来ます
    • good
    • 0
この回答へのお礼

そっかーなるほどですー。

下の方の回答やこちらのを読んでると、
以下にプログラミングが持つ大量の情報や概念を、整理してシンプルに作り、整理するか?

という、プログラムの理想と言うよりは、人手を経て初めて作ることのできるというプログラミングの特徴が、
巨大なプログラムを組む必要性によって、浮き彫りになってきた、

なんて言う感想を持ちました。違うかしら?

素人把握だけど、現在そんな感じに思っています。
だからあんまり統一的見解がないのかなーと。

お礼日時:2010/04/05 21:19

このあたりが、参考になりませんか?




http://www.happiese.com/system/dataorient.html
    • good
    • 0
この回答へのお礼

こんにちは。
気合い入れて読んでみました。

ちょっと前よりは分かった気もするのですが・・

昔MSXのプログラムを作っていた頃には、構造化プログラミングの概念はものすごく同意したのですが、
このオブジェクト指向になるとさっぱりです。
やったことがないからだと思うんですが、そういう概念を考える必要性が、分かりずらいですねー。

お返事ありがとうございました。
今回ので、なんとか気合い入れて、一応分かった、というレベルに持っていきたいです。

お礼日時:2010/04/05 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!