追記: タイトルを「オブジェクト指向(OOP)を習得するために必要なこと」 改め 「私の静的型付けクラスベース OOP の理解を助けたもの」すればよかったなーという話です。 参考:
ところで、やっぱ追記は最後に書くべき? |
さらに追記: 中の人がどう思っているかと,外からどう思われているか
|
以下当初の本文:
オブジェクト指向プログラミング(Object Oriented Programming)以下OOP
OOPを習得するには、OOPの三本柱を理解する必要があります。
- カプセル化
- 継承
- ポリモーフィズム
恐らく、最も難解なのがポリモーフィズムではないでしょうか。
「ポリモーフィズム(多態性)」という名称からして高圧的です。
イメージの沸きようがなく、とっつきにくく、敬遠したくなります。
ポリモーフィズムを理解するにはAbstractクラス(抽象クラス)やinterface(インターフェース)の機能と役割を十分に理解する必要があります。
これらについて理解するのに特に有効なのが「デザインパターン」を学ぶことです。
OOPを理解する道程は長いかもしれません。
ここは一つ、取っ掛かりとして「抽象クラス」について学習してみてはいかがでしょうか。
デザインパターン紹介―GoF以外のパターンを紹介します―Abstract Classパターン |
興味が沸いたら、上記ページの書籍(増補改訂版JAVA言語で学ぶデザインパターン入門)が最高の(良)入門書としておすすめです。
各デザインパターンの具体的な説明に簡潔なコード。付加的な情報も豊富です。
Javaの経験がなくてもまったく問題なく読めると言い切れます。
以下余談:
これらは主にJavaやC#などの静的で型付けの強いクラスベースのOOP言語に言えることだと思います。
JavaScriptのようなプロトタイプベースの言語や、P言語系(PythonやRubyなど)ではまた違った話かもしれません。
私のようなOOP初学者がOOPを語るのも大変恐縮なのですが、他の初学者の方々の一助になれば幸いです。OOPの習得ってすごく難しいと思うんです。少なくとも私は「そういうことか!」と思えるまでに大変長い時間を要しました。
プログラミングができる人と、そうでない人との間には途轍もなく深い溝があるという話があります(プログラマの壁)。「できない」から「できる」に遷移する時には、「ちんぷんかんぷん」から「突然世界がひらける」衝撃的な瞬間を経験します。私はそういうタイプでした。もちろんその先にはまた広大で途方もない「先」があるのですが・・・。
少し話が逸れましたが、OOPの習得にも同じように大きなパラダイムシフトが発生するのではないかと私は感じました。それを引き起こしてくれたのが、この本だったというわけです。
最後に、偶然にも今まで参考にしたサイト、読み漁った記事のURLを保存してましたので、ある程度絞り込んで示します。
(AOPとかDIとかも混ざってますが)
参考:
0 件のコメント:
コメントを投稿