オブジェクト指向が理解できない理由
por Makoto Taniguchi
1. Javaや Ruby、Pythonは学びやすい(C++/C#等)
2. ロボットの設計図(=クラス)とロボット(インスタンス)などに例えられる
3. 完全に理解しようとしない
4. クラス内のプロパティを直接編集できなくすることで、安全性を高めるなど
5. PHPや JavaScriptは、オブジェクト指向が独特(不完全)で学びにくい
6. 概念がかなり難しいので、完全には理解しようとせず、クラス定義あたりからトライしてみる
7. 正しいオブジェクト指向言語で学ぶ
8. 自分のプログラムに効率の悪さを感じたら、学習のチャンス
8.1. その時に再度学習すると理解が深まる
9. クラスから、その特徴を引き継いだクラスを作る
10. オブジェクト指向
11. つまり説明が反対なので分かりにくい
12. ただし、プログラミングをするときはクラス→インスタンスの順なのでややこしい
13. 構造化プログラミング
14. 大規模プログラミングでは、関数の数が膨大になり、それぞれの役割が分かりにくい
14.1. オブジェクト同士の相互作用として、システムの振る舞いをとらえる考え方(Wikipedia)
15. メソッドとプロパティでプログラミングをしていく
16. 引数(パラメーター)で制御していくため、引数の数や種類が膨大に
17. クラス→インスタンスを作る
18. 関数(ファンクション)定義を中心に、プログラムを組み立てる手法
19. オブジェクト指向以前
20. 分からない理由
20.1. ポリモーフィズム
20.1.1. 別の型のクラスなどで、共通のメソッドなどを使えるようにする
20.1.1.1. 初学者には実感が湧かない
20.2. 実感が湧かない
20.2.1. その例えの意味が分からない
20.2.1.1. インスタンス(Instance=実体)をグループにしたもの
20.2.2. クラスを作ってインスタンスを作るメリットが分からない
20.2.2.1. 大規模なプログラミング開発で活きてくる考え方
20.2.2.2. 小規模プログラミングでは逆に非効率
20.3. 何が便利なのかが分からない
20.3.1. 「クラス(Class)」は分類という意味
20.3.2. 理解できていないと、効率の悪いプログラムになる可能性がある
20.4. 継承
20.5. 継承・カプセル化・ポリモーフィズム
20.5.1. カプセル化
20.6. 例えが分からない
20.6.1. より高度で、応用しやすいプログラミング手法なので、基本が分からないと分からない