オブジェクト指向を使うメリットは、
「人間に理解しやすいようにするため」です。
プログラムの動作は、簡単に言えば、「変数があって値が代入され、それを他の変数を使って計算し…」
と言えるわけですけど、それを実際の機能と関連付けないと何をやってるかは見えないですね。
例えば、ある質問があって、「回答する」ボタンをクリックした場合、
「変数QからIDとname、contentを表示し、その下にAを表示させ、さらに下に変数OAがあればその配列から…」
何言ってるか分からないですね。でも非オブジェクト指向のプログラムはおよそこんなイメージです。
これを、
「質問オブジェクトから質問IDと質問者名、質問内容を表示し、その下に回答欄オブジェクトの内容を表示させ、
さらにその下に他の回答オブジェクトがあれば…」
と言えば分かりやすいし、当然、設計書にもこう書かれている。
それなら、その内容をそのままコード化できれば分かりやすいし、他人が見ても理解しやすい。
というわけでオブジェクト指向という考え方ができてきたのです。
ここのサイトも含め、大規模なシステムなんかだとコーディング以前に、
考えておかないといけない業務ロジックが膨大になるわけです。
いろんな制約があったり、入れないといけない機能があったり、時にはワガママも…
そんなことを考えていき、高度で緻密でかつ非常に分かりづらい「設計」が出来上がるのですが、
それをさらに分かりにくい変数やら計算処理に置き換えないといけなくなると、
そこでも分かりづらいし、何よりミスが発生しやすい。
設計書に書いてあること(人間が考えていること)を極力そのままコードに置き換えるようにすれば、
作業効率が上がる(はず)という考え方でやっているのです。
ただ、オブジェクトを作成する(設計する)コストは大変だし、コツをつかんでないと
かえって非効率なものが出来上がります。
なので、質問者さんの言うとおり、簡単なプログラムほどオブジェクト指向には向いていません。
なのでオブジェクト指向の入門書にあるコードを見てもメリットが分かりづらいのだと思います。
>・コードが読みやすくなる
およそその通りですが、「コード」という部分的な捉え方よりも、システム全体の見通しが良くなる、という考えた方が分かりやすいと思います。
>・実行速度が速くなる
これはむしろ逆です。
オブジェクト指向の考え方で実際のコードを書くと、一見すると非効率なものができます。
余計なオーバーヘッドが発生しており、非オブジェクト指向の人から見ると、「ムダなコードの塊」
になってしまいます。(ただ、詳細に説明するとちゃんと理解してもらえますが…自分の技術力がないだけかも)
ムダなコードがある分、動作速度は確実に遅くなっています。
それよりもシステム全体の理解しやすさ、メンテナンスのしやすさを取った場合にオブジェクト指向を採用するのです。
※ただし、その遅さもどれほどかは分かりません。
最近のPCだと人間の体感ではほぼ変わらない気もします。