επιστημηさんのエントリより
http://blogs.wankuma.com/episteme/archive/2006/11/01/43299.aspx
なんかいろいろ飛び火(?)してるようなので私も雑感をば。
皆さん苦労されているようですね・・・。私自身もCからC++と進んだ上にCが長かったこともあってオブジェクト指向についてのとっつきは非常に悪かった覚えがあります。C++は触ってはいたもののJAVAが徐々に幅を利かせるまではオブジェクト指向なんて意識もしませんでしたし、最初の頃はいろんな情報が乱れていて「全てがオブジェクトと見なせるからJAVAはオブジェクト指向だ」とか訳のわからん話もいっぱいありました。そんな中でのJAVAの印象はCと比べて入れ歯でものを噛む様な変な違和感の有る言語でした。(今もその思いは消えていないが・・・)
「オブジェクト指向とは」という話より前にC++を触っていたこともあってOOPといえばクラスやら継承やら実装やら多態性やらといった話も重要なんですがもっとざっくりと「現実の世界のものや仕組みをオブジェクトと見なして表現する」ぐらいの理解にとどめてます。それを実現するための仕組みとしていろいろな機能があってそれぞれ特徴がある・・・と。
AOPも同じようなものでAOPとはアドバイスやらポイントカットやらウィービングやらっていうんじゃなくて「横断的関心事を分離する(本質と事前、事後処理を区別する)」ぐらいの捕らえ方でいます。それを実現するための・・・(ry
この段階でのOOであればCでもOOはできる!といった話になると思いますし、これより突っ込んだ話であればもうワンステップ実装よりの「オブジェクト指向言語」としてクラスやらを教えるようにしています。
なもんでOOと一口に言ってもなかなか一概には難しいですね。設計よりとなればまたリスコフやらなんやらにも触れたほうがいいでしょうしデザパタも触れたほうがいいですし。まぁ私の場合はオブジェクト指向といえばこの程度の理解です。というか私の場合はこのくらいシンプルなよりどころがないと頭に入んないです^^;
デザパタやら、リファクタリングやら、CRCやら諸々の手法ってのはやっぱり住み分けてる領域があるんでバイアスがかかってるのも仕方ないと思います。が、これらのオブジェクト指向とともでてきた手法なんかはオブジェクト指向だけの話か?というとちょっぴり懐疑的ではあります。他にも十分通じる話だと思いますし、ひっくるめちゃうとしんどい^^;;;
こうして振り返ると私自身OOが理解できていないのかも・・・orz