禅問答:ポエム:オブジェクト指向の本質

プログラムは大きな問題を解決する。
大きな問題は小さな問題に分割して解決する。
分割をするということは、境界面が発生するということだ。
その境界面をinterfaceとして定義することで、分割した片方で発生した変更が境界面の向こうに影響しないようにする。
これがオブジェクト指向の本質だと思う。
当然、問題の「割り方」が下手だと片方で発生した変更は境界を超えて、もう片方の部品にも影響を与える。それどころか、境界面も再定義せねばならなくなる。
この「割り方」が難しいというのが、「オブジェクト指向の難しさ」の正体だと思う。



もちろん他のパラダイムも問題を小さく分割して解決するが、オブジェクト指向はそれらに比べてより広い境界面を定義して扱える。