>>980
オブジェクト指向にしても関数型にしても、
対象領域を抽象的なモデルとして定義することが重要なのは同じ

その具体的な設計手法で基本になるのが、オブジェクト指向では
・各クラスの持つ属性と操作、および
・汎化/集約/合成といったクラス間における関連
の定義であるし、関数型(Haskell)では代数的データ型の定義(>>977)になる

インターフェイスやら型クラスやらは、これに付随するオマケみたいなもの