object oriented programming c
C ++でのオブジェクト指向プログラミング入門。
このチュートリアルでは、オブジェクト指向プログラミング言語としてのC ++について学習するための一連のチュートリアルを開始します。
ご存知のように、オブジェクト指向プログラミング(OOP)の前は、プログラムは手続き型言語を使用して作成されていました。手続き型言語は関数を強調します。大きな問題は小さなサブ問題に分解され、関数として記述されます。
=> 完全なC ++チュートリアルリストについては、こちらをご覧ください。
手続き型言語はデータに注意を払いませんでした。その結果、問題に効果的に対処できない可能性が高かった。また、データがほとんど無視されていたため、データのセキュリティが簡単に危険にさらされました。
手続き型プログラミングのこれらすべての欠点は、オブジェクト指向プログラミングによって克服されました。
このチュートリアルでは、オブジェクト指向プログラミングの基礎、つまりOOPのすべての機能について説明します。
学習内容:
C ++でのオブジェクト指向プログラミング
オブジェクト指向プログラミングはデータを中心に展開します。 OOPの主要なプログラミング単位はオブジェクトです。オブジェクトは、リアルタイムエンティティの表現であり、データと、データを操作するメソッドまたは関数で構成されます。このようにして、データと機能は密接に結び付けられ、データのセキュリティが確保されます。
OOPでは、すべてがオブジェクトとして表され、プログラムが実行されると、オブジェクトはメッセージを渡すことによって相互作用します。オブジェクトは、通信するために別のオブジェクトの実装の詳細を知る必要はありません。
オブジェクトとは別に、OOPは以下にリストされているさまざまな機能をサポートしています。
- クラス
- カプセル化
- 抽象化
- 継承
- ポリモーフィズム
OOPを使用して、上記の機能を利用してクラスとオブジェクトを使用してプログラムを作成します。プログラミング言語は、それが表すすべてがオブジェクトを使用している場合、真のオブジェクト指向プログラミング言語であると言われます。 Smalltalkは、純粋なオブジェクト指向プログラミング言語である1つの言語です。
一方、C ++やJavaのようなプログラミング言語は、部分的なオブジェクト指向プログラミング言語であると言われています。
C ++が部分的なOOPである理由
C ++言語は、オブジェクト指向機能をC言語に使用することを主な目的として設計されました。
C ++言語は、クラス、オブジェクト、継承、カプセル化、抽象化、ポリモーフィズムなどのOOPの機能をサポートしていますが、C ++が部分的なオブジェクト指向プログラミング言語として分類される理由はほとんどありません。
最も安全なyoutubeからmp3へのコンバーター
これらの理由のいくつかを以下に示します。
#1)クラス/オブジェクトの作成はオプションです
C ++では、main関数は必須であり、常にクラスの外にあります。したがって、プログラムにはメイン関数を1つだけ含めることができ、クラスやオブジェクトなしで実行できます。
これは、すべてがオブジェクトとして表される純粋なOOP言語の最初の違反です。
#2)グローバル変数の使用
C ++には、プログラムの外部で宣言され、プログラムの他のエンティティからアクセスできるグローバル変数の概念があります。これはカプセル化に違反します。 C ++は、クラスとオブジェクトに関するカプセル化をサポートしていますが、グローバル変数の場合はカプセル化を処理しません。
#3)フレンド機能の存在
C ++は、他のクラスのプライベートメンバーと保護されたメンバーをフレンドにすることでそれらにアクセスするために使用できるフレンドクラスまたは関数をサポートします。これは、OOPパラダイムに違反するC ++のさらに別の機能です。
結論として、C ++は上記のすべてのOOP機能をサポートしていますが、これらの機能の回避策として機能できる機能も提供しているため、これらの機能がなくても実行できます。これにより、C ++は部分的なオブジェクト指向プログラミング言語になります。
OOP機能
ここでは、プログラミングに使用されるさまざまなOOP機能を紹介します。
クラスとオブジェクト
オブジェクトは、オブジェクト指向プログラミングの基本単位です。オブジェクトには、データと、そのデータを操作するメソッドまたは関数が含まれています。オブジェクトはメモリ内のスペースを占有します。
一方、クラスはオブジェクトの青写真です。逆に、オブジェクトはクラスのインスタンスとして定義できます。クラスにはオブジェクトのスケルトンが含まれており、メモリ内のスペースを取りません。
取りましょう 例 車のオブジェクトの。 「Maruti」という名前の車のオブジェクトには、色などのデータを含めることができます。メーカー、モデル、制限速度など、加速などの機能。別のオブジェクト「フォード」を定義します。これには、前のオブジェクトと同様のデータと機能に加えて、いくつかの追加機能を含めることができます。
同様に、類似したデータと関数、およびいくつかのマイナーなバリエーションを持つ、異なる名前の多数のオブジェクトを持つことができます。
したがって、これらの異なるオブジェクトでこれらの類似したデータと関数を定義する代わりに、Carと呼ばれるクラスであるこれらのオブジェクトの青写真を定義します。上記の各オブジェクトは、このクラスの車のインスタンスになります。
抽象化
抽象化は、関係のない情報をユーザーから隠すプロセスです。 例えば 、車を運転するときは、まずキーを挿入してエンジンを始動します。エンジンを始動するためにバックグラウンドで行われているプロセスを認識していません。
プログラミングで抽象化を使用すると、不要な詳細をユーザーから隠すことができます。アプリケーションで抽象化を使用することにより、内部実装を変更してもエンドユーザーは影響を受けません。
カプセル化
カプセル化は、データとそれらを操作するメソッドまたは機能を一緒にバンドルするプロセスです。これを行うことにより、データは外の世界に簡単にアクセスできなくなります。 OOPでは、データメンバーをプライベートにし、これらのデータメンバーにアクセスするためのパブリック機能を持たせることで、カプセル化を実現します。
継承
あるクラスの継承オブジェクトを使用すると、別のクラスのオブジェクトのプロパティを継承または取得できます。継承はコードの再利用性を提供します。
PC用のYouTubeビデオダウンローダーソフトウェア
そのため、別のクラスのプロパティと機能を取得することで新しいクラスを設計できます。このプロセスでは、親クラスの機能を変更する必要はありません。クラスに新しい機能を追加するだけです。
ポリモーフィズム
ポリモーフィズムは多くの形態を意味します。
ポリモーフィズムはOOPの重要な機能であり、通常、演算子のオーバーロードまたは関数のオーバーロードとして実装されます。演算子のオーバーロードは、オペレーターがさまざまな状況で異なる動作をするプロセスです。同様に、関数のオーバーロードでは、同じ関数がさまざまな状況で異なる動作をします。
動的バインディング
OOPは、実行時に関数呼び出しが解決される動的バインディングをサポートします。これは、関数呼び出しの結果として実行されるコードが実行時に決定されることを意味します。仮想関数は動的バインディングの一例です。
メッセージパッシング
OOPでは、オブジェクトはメッセージを使用して相互に通信します。オブジェクトが通信するとき、情報はオブジェクト間を行き来します。メッセージは通常、オブジェクト名、メソッド名、および別のオブジェクトに送信される実際のデータで構成されます。
OOPの利点
OOPの利点のいくつかについて説明しましょう。
#1)再利用性
OOPを使用すると、既存のコードを継承を通じて再利用できます。コードを書き直すことなく、既存の機能を簡単に取得して改善することができます。これにより、コードの肥大化が少なくなります。
#2)モジュール性
OOPでプログラムをモジュール化するため、問題が発生した場合や、新しい機能や拡張機能を追加する場合は、プログラムを簡単に変更またはトラブルシューティングできます。モジュール化は、コードの明確化にも役立ち、コードを読みやすくします。
#3)柔軟性
OOPは、ポリモーフィズム機能を使用した柔軟なプログラミングに役立ちます。ポリモーフィズムにはさまざまな形式があるため、多くのオブジェクトで機能する演算子または関数を使用できるため、オブジェクトごとに異なる関数を作成する必要がなくなります。
#4)保守性
多くの再構築や変更を行わずに新しいクラスやオブジェクトなどを簡単に追加できるため、コードの保守が簡単になります。
#5)データと情報の隠蔽
OOPは、データの隠蔽を支援し、情報の漏洩を防ぎます。プログラムの円滑な機能に必要なデータのみが、本質的な詳細を非表示にすることでユーザーに公開されます。
結論
OOPは、現代のプログラミングの最も重要で柔軟なプログラミングパラダイムです。これは、実際の問題のモデリングに特に役立つため、非常に人気があります。
このチュートリアルでは、OOPのさまざまな機能について説明しました。今後、これらすべての機能について詳しく説明します。
このシリーズの次のトピック「OOPwithC ++」では、クラスとオブジェクトについて詳しく説明します。
=> 絶対C ++トレーニングシリーズについては、ここをクリックしてください。