オブジェクト指向を本当にわかりやすく教えてください

http://oshiete.nikkeibp.co.jp/kotaeru.php3?qid=1987392

かわいそうに...こんな答を見せられても,かえって混乱するだけだぞ.*1

いろんな本を読みましたが

下手な入門書など読むだけ時間のムダ.一体どんな本を読んだのやら.
http://d.hatena.ne.jp/JavaBlack/20050909#p1

あまり理解力がないせいか、オブジェクト指向というものの意味が全っ然わかりません。

そりゃ「オブジェクト指向」だけじゃ単なる形容詞だからね.ほとんど何にも意味がない.意味がないものを理解できないのは当然でしょ.

「簡単に言うと・・・」みたいな感じで本に書いてあったりしますが、結局なんのことやらさっぱり・・・という感じです。

大丈夫.そういう書き方をしている場合は,書いている本人も分かってないから.分かってないから「簡単に言うと...というような感じのものだな.」とか書いてお茶を濁す*2


OOPに関して言うならば,初心者が全て分かるように簡単に説明する方法はないでしょう.「十年早い」とまでは言わないけど,理解するまでに三年くらいはかかるかな*3.それも良い師匠や先輩や専門書に出会えたらの話.知ったかぶりする素人の戯言を聞いていると,十年経っても理解できない.

オブジェクト指向開発やオブジェクト指向プログラミングという場合、それは、多くの場合、リスク管理です。(中略)脱落者を出さないためにはどのようなことが必要になりますか。*4プロジェクトが取り組むべき課題を誰にでも分かるようにはっきり定義することでしょうね。ソフトウェア開発で言うオブジェクト指向は、あくまでもリスク管理であり、"金儲け"の方法です。

ダウト.*5

オブジェクト指向とは部品を使う、作る”事だと教わりました。

やっぱり違うな.OOPでは部品を作るけど,「部品を作る=OOP」ではない.またいわゆる「ソフトウエア部品」という言い方をする場合は,オブジェクト指向とは別の概念を表す場合が多い.


以下の解説は,まだまともなほうだ.
http://itpro.nikkeibp.co.jp/article/COLUMN/20050901/220444/
http://itpro.nikkeibp.co.jp/article/COLUMN/20050905/220607/
http://itpro.nikkeibp.co.jp/article/COLUMN/20050912/220943/

*1:まあそれほどまでにOOPの代名詞としての「オブジェクト指向」を理解していないということなのだが.これじゃIT立国なんて夢のまた夢だな.

*2:こういう人には,一度「じゃあ難しく言うとどうなりますか?」と質問してみたい.難しい専門用語を使いこなして明確に説明できれば本物だし,難しい専門用語を並べ立てて誤魔化そうとすれば偽物.

*3:酷い場合にはプログラミングのイロハも分からないくせに,OOPを理解しようとする.これはまるで,かけ算や九九も知らないのに微積分を理解しようとするものだ.そういう人の場合は,まずは基礎からみっちりと鍛えることが重要です.

*4:脱落者になり易いのは技術力の劣る者.しかしプロとして必要な技術力を持っていないのはプロ失格というだけで,そこまで救済する必要はない.誰かさんの受け売りだが,弱者に対する救済はともかく,敗者に対する救済は必要ない.今日の敗北を糧に努力するものだけが明日の勝者になれる.いちいち敗者を救済していては明日の勝者は生まれない.

*5:最終目的が「楽して金儲けする」というのは間違ってないかもしれないが,それだったら技術全般に言えることだし,なにより他の商売をやるよね.少なくともオブジェクト指向とは何の関係もない話だ.