#オブジェクト指向言語1 年生の最初の学期に、私たちは C 言語を学びました。これは非常に古典的で非常に基本的な言語です。コンピュータ サイエンスの学生はおそらく、その魔手から逃れたことがないでしょう。C++ は非常に明確です。名前から見て C の派生です。C の内容がほぼすべて含まれています。ただし、設計思想は大きく異なります。C はプロセス指向のプログラムですが、C++ はオブジェクト指向です。プログラム、違いを説明しましょうふたつの間に。
プロセス指向: 問題を解決するために必要な手順を分析し、関数を使用してこれらの手順を段階的に実装します。使用するときは、関数を 1 つずつ呼び出すだけです。
オブジェクト指向: 問題を構成するトランザクションをさまざまなオブジェクトに分解することです。オブジェクトを確立する目的は、ステップを完了することではなく、ステップ全体における何かの動作を記述することです。問題を解決するということ。 たとえば、バックギャモンでは、プロセス指向の設計思想は、まず問題のステップを分析することです: 1. ゲームを開始する、2. 黒い石が最初に移動する、3. 絵を描く、4. 勝ち負けを判断する、5. 白の番です、6. 絵を描きます、7. 勝敗を決定します、8. 手順 2 に戻ります、9. 最終結果を出力します。上記の各ステップを個別の関数で実装すると、問題は解決されます。
オブジェクト指向設計は、別の観点から問題を解決します。バックギャモン全体は、1. 動作がまったく同じである黒側と白側、2. 絵を描く役割を担うチェス盤システム、3. ファウルと勝ちを決定する役割を担うルール システムに分けることができます。そして負けるなど。最初のタイプのオブジェクト (プレイヤー オブジェクト) は、ユーザー入力を受け入れ、2 番目のタイプのオブジェクト (チェス盤オブジェクト) にチェスの駒のレイアウトの変更について通知する役割を果たします。チェス盤オブジェクトは、チェスの駒の i 個の変更を受け取った後、この変更を画面に表示すると同時に、3 番目のタイプのオブジェクト (ルール システム) を使用してチェスのゲームを判断します。
オブジェクト指向では問題をステップではなく機能で分割していることがはっきりとわかります。チェスのゲームも描画されていますが、プロセス指向の設計では通常、設計者が実際の状況を考慮してさまざまな簡略化を行うため、このような動作は複数のステップに分散され、異なる描画バージョンが表示される可能性があります。オブジェクト指向設計では、描画はチェス盤オブジェクト内にのみ表示できるため、描画の統一性が保証されます。
機能の統合により、オブジェクト指向設計の拡張性が確保されます。例えば、チェスの後悔機能を追加したい場合、プロセス重視の設計を変更したい場合、入力から判定、表示までの一連のステップを変更する必要があり、ステップ間の順序さえも調整する必要があります。大規模な。オブジェクト指向であれば、チェス盤のオブジェクトを変更するだけで済み、チェス盤システムは黒面と白面の棋譜を保存しており、後戻りするだけで済み、表示やルール判定を考慮する必要がありません。同時に、オブジェクト関数を呼び出す順序全体は変更されず、変更は部分的なものにすぎません。
別の例として、このバックギャモン ゲームを囲碁ゲームに変更したいと考えています。プロセス向けに設計している場合、バックギャモンのルールはプログラムの隅々に分散されています。変更したい場合は、次のようにすることをお勧めします。それを書き直します。しかし、最初からオブジェクト指向で設計していれば、ルールオブジェクトを変更するだけで済みます バックギャモンと囲碁の違いはルールではないでしょうか? (もちろん、チェス盤のサイズは異なるようですが、これは問題だと思いますか?チェス盤オブジェクトにいくつかの小さな変更を加えるだけです。) チェスをプレイする一般的な手順は、オブジェクト指向からまったく変わっていません。視点。 。
もちろん、変更を部分的にのみ行うには、設計者に十分な経験が必要です。オブジェクトを使用しても、プログラムがオブジェクト指向であることが保証されるわけではありません。初心者または非常に苦手なプログラマは、想像上のプロセス指向になる可能性があります。実際、このように設計されたいわゆるオブジェクト指向プログラムは、移植性や拡張性を良好にすることが困難です。
科学的説明: オブジェクト指向手法におけるオブジェクトとは、システム内の客観的事実を記述するために使用される実体であり、システムを構成する基本単位です。オブジェクトは、一連のプロパティと一連の動作で構成されます。
自己説明: たとえば、「人」という言葉は非常に大きな概念ですが、自分自身に関して言えば、自分自身が対象であり、実体と特定の意味を持つものが対象です。授業はもっと理解できると思いますが、私は中国語が苦手です。 。 。 #####2.クラス
多くのものを要約し、それらをいくつかのカテゴリに分類します。分類の原則は抽象化です。つまり、物事の本質的でない特性を無視し、現在の目標に関連する本質的な特性のみに注意を払うことです。共通性とは、石、木、車、家など、共通の性質を持つものを一つのカテゴリーに分けて抽象的な概念を導き出すことです。
3.カプセル化
カプセル化はオブジェクト指向メソッドの重要な原則であり、オブジェクトのプロパティとサービスを独立したシステム単位に結合し、オブジェクトの内部詳細を可能な限り隠すことです。 #####4.継承
継承は、オブジェクト指向テクノロジがソフトウェア開発の効率を向上させることができる重要な理由の 1 つです。その定義は次のとおりです: 特別なクラスのオブジェクトは、その一般クラスのすべてのプロパティとサービスを持ちます。これは、オブジェクトの継承と呼ばれます。一般クラスから特別クラスまで。
例えば、船の性質を理解した後、客船を考えた場合、客船も船であることがわかっているので、船の性質をすべて備えていると考えることができます。したがって、旅客船のユニークな機能にのみ焦点を当てる必要があります。 ####5.ポリモーフィズム
ポリモーフィズムとは、一般クラスで定義された属性または動作を指します。特別なクラスに継承された後、異なるデータ、型を持つことができ、異なる動作を示すことができます。 (具体例を挙げて後ほど説明します!)
プログラムプロセスの完了
#関連する推奨事項:
C クラスとオブジェクト | C マニュアル チュートリアル|
#以上がC++ の概要: オブジェクト指向の基本概念の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。