オブジェクト指向の学習では
Java など オブジェクト指向 の言語の学習では、勉強のために属性と動作をクラスにまとめている感があります。
実際に、どうしてもオブジェクト指向でないと、実現できないケースはあまりないと思います。
オブジェクト指向が有効なのは
では、オブジェクト指向が有効な場面は、どんなときでしょう?
代表的なのは、シミュレーションを行う場合です。
シミュレーションとは
シミュレーションは、統計的にしか求めることができないような場合に使われます。
さまざまな状況での予測を立てたり、問題を解析したりします。たとえば、道路の渋滞予測や下で例に使う「待ち行列」などです。
たとえば...
たとえば、レジで列に並んでからサービス終了までの待ち時間の平均を求めるとします。
客はランダムに到着し、サービスにかかる時間もまちまちです。
もしオブジェクト指向でなければ
到着時刻は配列にする?
サービス時間と併せて構造体にすべきか?
それを構造体配列にする?
それらをセットする関数は、どんな風にすればいい?
・・・ などと考えていると、ワーッと混乱しそうです。
オブジェクト指向の考え方だと
ひとりひとりに着目すると、シンプルに考えることができます。
到着時刻、サービスにかかる時間、いま列の何番目か、待ち時間 ・・・ など、それぞれの人が同じ属性を持っていて、値だけが異なります。
属性の値は、自分の他の属性値によって変わったり、他の人の属性によっても変わります。ある一定の条件で妥当な値にするための手続きが必要となります。
手続きも、この属性を変えるにはこの動作、という風に考えればシンプルです。
このように、求めたいものに応じて属性やそれに対する動作を決めれば、型紙(テンプレート)ができます。

このような作業は、「モデル化」と呼ばれます。
客がひとり並ぶことは、その型紙で作ったオブジェクトをひとつ用意することになります。

シミュレーションする状況に合わせてオブジェクトの数や属性を調整し、ある条件下で全オブジェクトの整合性を保つことで、それらの属性値を予想や解析に使うことができます。
ひとつひとつのオブジェクトは閉じた世界ですから、コントロールがしやすく、条件を変えるのも比較的容易です。
オブジェクト指向の考え方を使わない場合と比べると、設計もコーディングも楽にできます。