OOPはそれ自体では重要ではありませんが、OOPに必要なもののために重要です。抽象化して分離し、グループ化する機能を扱うものは、相互作用するために必要な部分のみを公開します。
これは、「モジュール化」と呼ばれる一般的なエンジニアリング手法であり、複雑なシステムを単純なシステムの集合体として作成できます。高レベルですべての詳細を処理する必要はなく、同じ。
これらの「エンジニアリングコンセプト」は、ソフトウェア製品自体が「単一の開発者の能力」よりも大きくなった時点からソフトウェア開発に取り入れることを試みたため、開発者が独立した部分で作業し、それらの部分を一緒に交流します。
とはいえ、これらの原理は必ずしもOOPでのみ見つかるわけではありません(計算理論が有効であり、それらの結果に到達する無限の可能な方法があります)。
OOPは、単にそれらの定義(パターン)のより正確な定義と精巧な概念化(モジュール化、カプセル化、置換のような)これらの一般的な用語に与えて、一緒にそれらのものを置くために成功した試みであることができ、プログラミング言語に収まります。
OOPは、最初に「言語機能」としてではなく、ソフトウェアエンジニアにソフトウェア設計にアプローチさせる「一般的な用語集」として考えてください。
特定の言語に、そのカプセル化を直接実施するプリミティブがあるかどうかという事実-たとえば-「カプセル」が意図していない人によって誤って開かれないことは、OOP設計の二次的な側面です。そのため、言語自体が直接的なサポートを提供していない場合でも、大規模なCプロジェクトでもOOPとして「管理」されることがよくあります。
すべての利点は、プロジェクトの規模が、開発者が行うすべてのことを理解し追跡する単一の開発者の能力(実際、そのような状況では「オーバーヘッド」と見られることもあります)に留まるか、何かを開発する小さなグループになるまで認識できない短い期間。そして、それが、「言語機能」の観点からOOPを研究した後輩が、誤った設計コードの生成を誤解することが多い主な理由です。
OOPが言語にどのように適合するかは、言語設計者が独自の構成でOOP原則をどのように解釈するかに依存します。
したがって、C ++の「カプセル化」は「プライベートメンバー」(および「カプセル」はクラスになります)、「置換」は仮想関数のオーバーライドまたはテンプレートのパラメーター化/特殊化などになり、Dではカプセルは「モジュール」になりますつまり、特定のパラダイムやパターンを特定の言語で直接利用できるようにし、他の言語では利用できないようにします。
採用担当者がOOPの質問に求めるのは、将来の大規模なプロジェクトおよび開発のためにソフトウェア設計を抽象化および実現する能力をチェックするだけです。OOP、彼らはあなたと彼らの両方が知っていると仮定した単なる「辞書」であり、他のより一般的なことについて話したり、具体的な実装に具体化することができます。