オブジェクト指向プログラミングの長所と短所

POOの基本的な考え方

OOPでは、コンピュータープログラムには「オブジェクト」の相互作用があります。 オブジェクトには「インスタンス変数」と「メソッド」があります。 インスタンス変数は、オブジェクトに関連付けられた値を記録します。 メソッドは、オブジェクトの何らかの側面を含む関数です。 ゲームプログラムには、燃料の量などのインスタンス変数を持つ「宇宙船」と呼ばれるオブジェクトがあります。 1つの方法は「火魚雷」です。 宇宙船は、「動くオブジェクト」と呼ばれるオブジェクトの「クラス」に属することができます。 小惑星もこのクラスに属します。 プログラムの実行は、互いに「メッセージ」を送信するオブジェクトで構成されます。

POOの利点

オブジェクトの概念の最初の利点は、宇宙船と関係があるすべてのコードが1か所にあることです。 別の利点は、オブジェクトが属するクラスの固有の属性を持つ可能性があることです。たとえば、移動オブジェクトのクラスに属するすべてのオブジェクトがXY位置を持つため、宇宙船と小惑星の両方がXY位置を持つことができます。 コードは、オブジェクトに発生する何かとして概念化できるため、コードの記述が簡単です。 もう1つの利点は、POOが大きなプログラムを管理しやすくすることです。 すべてのウィンドウがウィンドウクラスの階層に属し、特定のウィンドウを参照するすべてのコードがそのウィンドウ内にある場合、すべてのウィンドウ操作は単純なメッセージ転送として記述できます。

OOPの欠点

すべてのプログラムがオブジェクトモデルによって正確にモデル化できるわけではありません。 いくつかのデータを読み取り、データを単純にしてから再度書き込みたい場合は、クラスとオブジェクトを定義する必要はありません。 ただし、一部のOOP言語では、この追加手順を実行する必要がある場合があります。 別の欠点は、言語がオブジェクト指向プログラミングの概念に強制されると、「関数型言語」などの有用な言語の特性の一部が失われることです。 別の欠点は、プログラマが抽象オブジェクトを構成するものについて持っている概念が、別のプログラマのビジョンと一致しない可能性があることです。 多くの場合、オブジェクトには詳細なドキュメントが必要です。

POOの未来

オブジェクト指向プログラミングの将来は、RubyやLuaなどの言語に出会う可能性があります。RubyやLuaでは、オブジェクトの概念は言語で構築され、プログラマーによって常に明示的に制御されるわけではありません。 たとえば、Rubyは、文字列、数字、プログラム、現在のディレクトリの内容など、すべてをオブジェクトとして扱います。 オブジェクトとして何かを宣言する必要はほとんどありません。 オブジェクト指向プログラミングとして、関数型言語として、手続き型言語として、またはモダリティーを組み合わせた方法で、言語を自由に使用できます。

興味深い記事