見出し画像

『抽象と具体』はプログラミングで考えろ

抽象を知りたければ下手にビジネスを読むな、むしろオブジェクト指向プログラミングの本を読め

以前オブジェクト指向プログラミングの記事を書いて、途中から思った以上に制御できなくて、わちゃわちゃした記事になった苦い記憶がある。
ちなみに以下のマガジンが以上の記事シリーズである。

オブジェクト指向では、わたしの嫌いな説明だが犬、猫、動物から抽象化の説明をする。犬猫系の説明は本質でもなんでもなく、そのコードこそが重要である。説明部分よりコードが抽象化やオブジェクトとは何かを語ってくる。でも抽象を学ぶのにプログラミングを勉強するのは億劫だという意見もよくわかるので、この記事ではオブジェクトとは?とそれが抽象的であるとはどういうことか?に焦点を当てて書きたい。

オブジェクトとは

オブジェクトとはものである。正直自分で書いていても、頭の悪い文言だ。でもオブジェクト指向プログラミングにおいてオブジェクトとはものだ。プログラミングにおいてデータをまとめておくのはものすごく大事というか便利なのだ。
ユーザーAの誕生日、ユーザーBのカートにどんな商品が入っているか。このようなデータがてんでバラバラだとマジで気が狂う。データがバラバラに記述してあるとは、営業事務や事務仕事で例えると顧客の名前のデータと住所や連絡先のデータがバラバラのファイルに保存されているようなものである。例えばエクセルのファイルで1行目には顧客Aの誕生日、2行目には顧客Cの連絡先みたいにバラバラにデータが入っているのを想像して欲しい。そんなファイルをもとに顧客の誕生日に連絡しろという業務を命令されるという難易度の仕事をしないといけないのと同じようなものだ。
データをまとめれたらどれだけ楽になるか、想像できただろうか?
そういうまとめたデータの一群をオブジェクトという。顧客というオブジェクトだったら、氏名やログインに使うIDやパスワードというパラメータをまとめておくのが普通だろう。
そんな感じでプログラミングにおいてオブジェクトは便利である。

パラメータについて

前節をまとめるとオブジェクトがデータをまとめたものということだけが大事だ。
ちなみにオブジェクトになんのデータを入れるかという項目をパラメータという。
氏名のパラメータに田中一郎とデータとかそんな感じである。

抽象度の高さはオブジェクトのパラメータの多寡である

オブジェクトのパラメータが少なければ、少ない方が抽象度が高い。逆にオブジェクトのパラメータが多ければ多いほど、具体的になっていく。

犬のオブジェクトで説明しよう。と言っても単純な話をする。犬のオブジェクトに犬種というパラメータが加われば、より具体的にゴールデンレトリバーやダックスフントのようなオブジェクトになる。
犬であるという分類のパラメータをなくしてあげれば、動物という犬より抽象度が高いオブジェクトになる。
という感じで、適切なパラメータの足し引きで抽象度は変えられる。
いや、適切なってなんだよというのと、抽象度のより詳しい説明をこれからしていきたいが、一旦この辺で区切って次回に続きたい。続きは以下から


この記事が気に入ったらサポートをしてみませんか?