てくのーと
861 文字
4 分

オブジェクト指向 おぼえがき

2022-06-03
2024-07-05

自分なりにオブジェクト指向について書いてみる。

オブジェクト指向とは#

オブジェクト指向は、アラン・ケイが提唱したアイデアですが、そこからの長い月日の中で概念が広がり過ぎてしまい、何を指しているのかわからないものになっています。

よく見る説明だと、「システム構成それぞれを1つのオブジェクトとして捉え、データとその処理関数をもつオブジェクトを組み合わせることでシステムを構築する考え方」なんてものがあったりします。

人々が「オブジェクト指向」という言葉を聞いても、そこから想起するイメージが人それぞれになっています。ある人にとっては、オブジェクト指向が「カプセル化、継承、ポリモーフィズム」を指すものであり、他の人にとっては、「クラス、オブジェクト、メッセージング」を意味するものであったりするわけです。

上記のようにオブジェクト指向の意味が人によって異なるので、「オブジェクト指向は、〇〇だ!」という主張の対立が時々発生するのだと思います。

私の中のオブジェクト指向とはなにかというものは、存在しないのですが、一番しっくり来ている説明は以下のものです。

構造化プログラミングの構造化定理によって、手続きは、順次、反復、分岐に抽象化されました。
次に、抽象化したいのはデータでした。ですが、データは処理も含めないと意味付けが表現しづらいのです。
そこで、データと処理を構成の単位にする概念が生まれましたモジュールです。
ですが、データには実体があり、データの実体によって処理も変わる事が分かってきました。
この概念をまとめたのがオブジェクトですね。
これによって、データはやっと抽象化され抽象データ型というものが誕生しました。
ポリモーフィズムを活用するとなぜ if や switch が消えるのか?

オブジェクト指向は人間のためにあるものとはよく聞くが、構造化定理の説明から入ると、オブジェクト指向の概要は理解できるかと思います。(それがオブジェクト指向なのかは人によって違うのですが)

  1. プログラムは、順次、反復、分岐の組み合わせで成り立っている
  2. プログラムをモジュール(データと処理)に分けて、より理解しやすく
  3. 抽象データ型を用いてデータの実体によって変わる処理に対応

上記の理解に加え、ポリモーフィズムとインターフェイスも重要だと思っています。

他にも大切な概念はあるかと思いますが、その中でもシステムを作っていく中で、この2つは特に大事な概念だと思っています。
インターフェイスとポリモーフィズムでパッケージ間の依存関係をコントロールする。これだけのことですが、コードの拡張しやすさや、後々追加されるバリエーションへの対応のしやすさが大きく異なります。

さいごに#

オブジェクト試行についてさっぱりわからず、悶々とする日々を送っていましたが、1つのコメントで大きく前進しました。ありがたい。

\てくのーと おすすめ書籍!/

プログラミングを楽しみ続けるためには健康は不可欠!
本書では如何に健康であり続けるかが科学的な情報とともに紹介されています。
→感想詳細はこちら!