🚨 複雑な現実世界を、コードで写実的に再現する試み。プログラミングパラダイムシフトの最終到達点、それがオブジェクト指向です。
その中でも最も強力な武器がポリモーフィズム(多態性)です。これは、ペンギンと鳩のように全く異なる動作をするオブジェクトを、「鳥」という共通の抽象概念として統一的に扱えるようにする魔法のような能力です。
この記事を読めば、オブジェクト指向 ポリモーフィズム 抽象化がなぜ「真の偉大さ」と呼ばれるのか、そしてオブジェクト指向 3要素 可読性が飛躍的に高まる設計の哲学を、深く理解できますよ👍!
1. オブジェクト指向の土台:プログラミング 継承 オーバーライドの役割
オブジェクト指向は、データ(変数)と命令(メソッド)を統合した概念であるクラス(設計図)としてプログラムを記述する思想です。すべてのクラスが必ずしもインスタンス化(実体化)されるわけではありません。
オブジェクト指向の3本柱
オブジェクト指向の強みは、以下の3つの要素で構成されています。
- カプセル化(情報隠蔽)
- 継承(Inheritance)
- ポリモーフィズム(多態性)
継承が解決するコードの重複問題
プログラミングでは、戦士や魔法使いのように、似たような機能を持つものを大量に定義する場面が多くあります。継承を使わないと、共通の処理(例:「逃げる」)であっても、全てのクラスで同じコードをコピペする必要があり、仕様変更のメンテナンス労力が膨大になります。
継承は、この問題に対し、共通の処理を「人間」のような親クラスに一元管理することで解決します。子クラスは親クラスの特徴をエクステンズ(拡張)するため、共通のコードは一箇所だけ直せば済みます。
継承した機能の一部を個別に変えたい場合、子クラスで親と同じ名前の命令を記述し直すのがオーバーライド(上書き)です。
「戦うのないようだけ戦士と魔法使いで変えたらいいよねと人間で定義されてるやつを魔法使いの定義をするときに戦うのないよう書き換えたら書き換わるじゃんみたいなのをオーバーライドと言いますね」
ここがポイント👌
プログラミング 継承 オーバーライドを使うことで、共通コードを親クラスに集約し、大規模なメンテナンスの手間を解消できます。オーバーライドは、継承した処理を子クラス側で上書きし、柔軟性を高めます。
2. 強烈な武器:オブジェクト指向 ポリモーフィズム 抽象化
継承と並ぶオブジェクト指向の強烈な武器がポリモーフィズムです。これこそが、「強さ何が偉いのかってことの答えは多分抽象化、抽象概念を扱えるようになっただと思いますね」という核心です。
🕊️ ペンギンとキツツキを「鳥」として扱う
ポリモーフィズムとは、異なる種類の具体的なオブジェクト(例:ペンギン、キツツキ)を、共通の抽象概念(例:鳥)として統一的に扱える能力を指します。
ポリモーフィズムは、主に抽象クラスやインターフェースを通じて実現されます。プログラマーは「鳥」を、抽象クラスやインターフェースとして定義することで、個別の処理を気にしなくて済むようにするのです。
もしポリモーフィズムがなければ、プログラマーは、「もし鳥Aがキツツキだったら、木をつつく処理を書き、もし鳥Aがペンギンだったら、海に入る処理を書く」という、可読性の悪い処理の分岐をズラーッと書く必要がありました。
しかし、ポリモーフィズムがあれば、プログラマーは「鳥 A が餌を捕る」とだけ記述すれば済みます。
「プログラマは気にしなくてよいってのがポリモフィズムですね」
ここがポイント👌
オブジェクト指向 ポリモーフィズム 抽象化は、異なる具体的な処理を抽象概念として統一的に記述することを可能にし、プログラマーが個別の処理の分岐を気にしなくて済み、コードの可読性と保守性を劇的に向上させます。
3. オブジェクト指向の哲学とオブジェクト指向 3要素 可読性
📐 設計の難しさと抽象化の必要性
継承の設計には「設計の妙」が必要であり、「鳥」クラスに「空を飛ぶ」と定義してしまったために、ペンギンが困る、といった問題が発生します。
この設計の難しさを乗り越え、柔軟性を担保するのが、抽象クラスやインターフェースの概念であり、その結果としてポリモーフィズムが実現され、オブジェクト指向 3要素 可読性が飛躍的に高まります。
✍️ 人間の認知システムを模倣する思想
オブジェクト指向が、現実世界における概念を写実的に比喩(メタファー)でコードに落とし込もうとする思想は、人間の認知システムを模倣する認知言語学とも深く関連しています。
プログラミング言語でクラスや概念を論理的に定義していくスタイルは、極めて哲学的な背景を持っており、単なる技術論に留まりません。
ここがポイント👌
オブジェクト指向の設計は単なる技術ではなく哲学的背景を持ち、抽象化を通じて人間の認知に近い柔軟性をコードに与えます。
結びに
オブジェクト指向は、カプセル化、継承、ポリモーフィズムを3本柱とするパラダイムです。
プログラミング 継承 オーバーライドによってコードの重複を解消し、その強力な武器であるオブジェクト指向 ポリモーフィズム 抽象化によって、異なる処理を持つオブジェクトを抽象概念として統一的に扱うことを可能にしました。
この結果、オブジェクト指向 3要素 可読性は飛躍的に高まり、現代の大規模なソフトウェア開発の基盤となっています。現代の大規模AIシステム(例:様々なセンサーを扱う自動運転)においても、ポリモーフィズムは異なる入出力データを抽象化し、コードの複雑性を抑えるために不可欠です。
ここがポイント👌
オブジェクト指向の3本柱は現代の大規模開発やAIシステムに不可欠であり、可読性と保守性を飛躍的に高めます。
📡 配信元情報
- 番組名: ゆるコンピュータ
- タイトル: オブジェクト指向の強烈な武器「ポリモーフィズム」で、ペンギンと鳩を同様に扱える【プログラミングパラダイム・シフト4】#67
- 配信日: 2023-04-09


コメント