オブジェクト指向とは設計手法の事。
4大原則というべきものがある。
1:カプセル化
この処理は何か、この処理をしている所はどこか、見てすぐに内容を把握できるようにする、把握しやすくする為に、同様の処理のデータと処理をまとめるという考え方。
2:データ隠蔽
カプセル化を維持する為の考え方。具体的な実装で言うとprivateにすると言うこと。
3:抽象化
個々のオブジェクトをそれぞれ作ると煩雑になってしまう。
そこで、個々のオブジェクトの本質を突き詰めて簡単にする事を抽象化という。
抽象化した物を利用して個々のオブジェクトを作り、抽象化した物を介して個々のオブジェクトにアクセスする事をポリモーフィズム(多様化)という。
4:情報隠蔽
何から何までpublicにしている(こうする人が非常に多いが)と、そのシステムについて何も知らない新人さんが保守としてプロジェクトに入って来た場合、本来非公開にしたい別クラスのコードを再利用して開発してしまい、それが積み重なるととんでもなくスパゲッティなコードになってしまう危険性がある。
そういう事を防ぐ為にコードの公開・非公開をしっかり分けましょうという考え方。
具体的に言うと、パッケージ分けを設計し、アクセス修飾子はデフォルト(無し。同じパッケージからのみアクセス可)にする。
外部から利用したい場合はインターフェースのみpublicにして(抽象化)し、そのインターフェースにcreateメソッドを用意してそのメソッドを介してのみimplインスタンス生成を行えるようにする。