logo

C++ OOP の概念

C++ プログラミングの主な目的は、C プログラミング言語にオブジェクト指向の概念を導入することです。

オブジェクト指向プログラミングは、次のような多くの概念を提供するパラダイムです。 継承、データバインディング、ポリモーフィズムなど。

すべてがオブジェクトとして表現されるプログラミング パラダイムは、真のオブジェクト指向プログラミング言語として知られています。 雑談 最初の真のオブジェクト指向プログラミング言語とみなされます。


OOP (オブジェクト指向プログラミング システム)

物体 ペン、椅子、テーブルなどの実際の単語の実体を意味します。 オブジェクト指向プログラミング クラスとオブジェクトを使用してプログラムを設計するための方法論またはパラダイムです。いくつかの概念を提供することで、ソフトウェアの開発とメンテナンスを簡素化します。

ジャッカル対オオカミ
Cpp おっとコンセプト 1
  • 物体
  • クラス
  • 継承
  • ポリモーフィズム
  • 抽象化
  • カプセル化

物体

状態と動作を持つエンティティはすべてオブジェクトと呼ばれます。例: 椅子、ペン、テーブル、キーボード、自転車など。物理的なものでも論理的なものでも構いません。

クラス

オブジェクトのコレクション クラスと呼ばれます。それは論理的な実体です。

C++ のクラスは、オブジェクト指向プログラミングにつながる基本要素です。ユーザー定義データ型のデータ メンバーとメンバー関数にアクセスして使用するには、クラス インスタンスを作成する必要があります。オブジェクトのクラスはその設計図として機能します。車のクラスを例に考えてみましょう。異なる車に異なる名前やブランドが使用されている場合でも、すべての車には、4 つの車輪、制限速度、走行距離など、いくつかの共通の特徴があります。この場合、車のクラスは次のように表されます。ホイール、制限速度、走行距離など。

継承

1 つのオブジェクトが親オブジェクトのすべてのプロパティと動作を取得する場合 つまり、継承として知られています。コードの再利用性が提供されます。実行時のポリモーフィズムを実現するために使用されます。

  1. サブクラス - サブクラスまたは派生クラスは、別のクラスからプロパティを受け取るクラスを指します。
  2. スーパー クラス - 「基本クラス」または「スーパー クラス」という用語は、サブクラスがそのプロパティを継承するクラスを指します。
  3. 再利用性 - その結果、新しいクラスを作成したいが、必要なコードの一部が既存のクラスにすでに含まれている場合、継承のおかげで古いクラスから新しいクラスを生成できます。これにより、既存のクラスのフィールドとメソッドを利用できるようになります。

ポリモーフィズム

いつ 1 つのタスクがさまざまな方法で実行される つまり、ポリモーフィズムとして知られています。例: 顧客を別の方法で説得するため、何かを描くため。形や長方形など。

状況が異なると、操作の動作も異なる場合があります。操作で使用されるデータのタイプによって動作が決まります。

抽象化

内部の詳細を隠して機能を表示する 抽象化として知られています。データ抽象化とは、実装や背景情報を秘匿し、絶対に必要な情報のみを外部に公開するプロセスです。たとえば、電話の場合、内部処理はわかりません。

クリック時のjQuery

C++ では、抽象クラスとインターフェイスを使用して抽象化を実現します。

カプセル化

コードとデータを 1 つのユニットに結合 (またはラッピング) することは、カプセル化として知られています。 例:カプセル。さまざまな薬が包まれています。

カプセル化は通常、関連する情報とデータを 1 つのエンティティにグループ化することとして理解されます。カプセル化は、オブジェクト指向プログラミングでデータとデータを操作する関数を結び付けるプロセスです。カプセル化の実際的な図を見てみましょう。企業には、営業部門、財務部門、経理部門など、さまざまな部門があります。すべての金融取引は金融部門によって処理され、金融部門はすべての財務データの記録も維持します。同様に、営業部門は販売に関するすべての業務を担当し、各販売の記録を保管します。ここで、何らかの理由で財務担当者が特定の月の売上に関するすべての情報を必要とするシナリオが発生する可能性があります。 「営業部門」という包括的な用語の下に、営業部門のデータに影響を与えることができるすべての従業員がグループ化されます。データの抽象化または隠蔽は、カプセル化のもう 1 つの副作用です。カプセル化によってデータが隠蔽されるのと同じです。前述の例では、他の領域は、販売、財務、会計などのどのセクションのデータにもアクセスできません。

動的バインディング - 動的バインディングでは、関数呼び出しに応答して実行されるコードに関して実行時に決定されます。このため、C++ は仮想関数をサポートしています。

手続き指向プログラミング言語に対する OOP の利点

  1. OOP を使用すると、開発とメンテナンスが容易になりますが、プロシージャ指向プログラミング言語のように、プロジェクトのサイズが大きくなるにつれてコードも大きくなると管理が容易ではありません。
  2. OOP はデータの隠蔽を提供しますが、プロシージャ指向プログラミング言語ではグローバル データにどこからでもアクセスできます。
  3. OOP は、現実世界のイベントをより効果的にシミュレートする機能を提供します。オブジェクト指向プログラミング言語を使用している場合、実際の単語の問題の解決策を提供できます。

C++ ではなぜ oops が必要なのでしょうか?

初期のプログラミング方法には、パフォーマンスが低いだけでなく、さまざまな欠点がありました。このアプローチでは、手続き型プログラミングと同様に、プログラム内のコードを再利用できないこと、グローバル データ アクセスに問題があることなどから、現実世界の問題に効果的に対処することはできませんでした。

オブジェクト指向プログラミングでは、クラスとオブジェクトを使用することで、コードのメンテナンスが簡単になります。継承によりコードの再利用が可能になるため、同じコードを繰り返し記述する必要がなくなり、プログラムがよりシンプルになります。データの隠蔽は、カプセル化や抽象化などのアイデアによっても提供されます。

なぜ C++ は部分的な oop なのでしょうか?

C 言語のオブジェクト指向機能は、C++ 言語の構築の背後にある主な動機でした。

C++ プログラミング言語は、クラス、オブジェクト、継承、カプセル化、抽象化、ポリモーフィズムなどの OOP 概念をサポートしているにもかかわらず、部分的なオブジェクト指向プログラミング言語として分類されます。

1) main 関数は常に C++ のクラスの外にある必要があり、必須です。これは、クラスやオブジェクトを使用せずに、アプリケーション内に単一の main 関数を持たせることができることを意味します。

この場合、オブジェクトとして表現されており、純粋な OOP が侵害されたのはこれが初めてです。

2) グローバル変数は、プログラム内の他のオブジェクトからアクセスでき、プログラムの外部で定義される C++ プログラミング言語の機能です。ここでカプセル化が壊れています。 C++ はクラスとオブジェクトのカプセル化を奨励しますが、グローバル変数についてはカプセル化を無視します。

Javaでの文字列から整数への変換

過負荷

ポリモーフィズムには、オーバーロードとして知られるサブセットもあります。既存の演算子または関数が新しいデータ型で強制的に操作されると、オーバーロードされると言われます。

結論

C++ の OOPS 概念に関するこのコースを読むと、オブジェクト指向プログラミングの必要性、C++ OOP とは何か、ポリモーフィズム、継承、カプセル化などの OOP の基本について理解できるようになります。ポリモーフィズムと継承の例に加えて、C++ OOP の利点についても学びました。