C++におけるオブジェクト指向プログラミング Part I
オブジェクト指向プログラミングとは?
オブジェクト指向プログラミングは、アクションよりもオブジェクトを中心に、ロジックよりもデータを中心に据えたプログラミングのパラダイムです。OOPでは、クラスのインスタンスであるオブジェクトが、フィールド(属性やプロパティとしても知られる)とメソッド(関数)の形でデータを含むことができます。
OOPの基本原則
OOPは、以下の4つの基本原則に基づいています:
カプセル化(Encapsulation): オブジェクト内のデータをプライベートに保ち、公開インターフェースのみを公開すること。これにより、実装の複雑さを隠し、オブジェクトの完整性を保護します。
抽象化(Abstraction): 複雑な現実世界の問題を簡素化されたモデルで表現すること。ビューアの視点に関連するオブジェクトの必要な質のみに焦点を当てます。
継承(Inheritance): 既存のクラスから属性とメソッドを受け継ぐ新しいクラスを作成すること。コードの再利用を促進し、新旧クラス間の関係を確立します。
ポリモーフィズム(Polymorphism): 親クラスのインスタンスとして異なるクラスのオブジェクトを扱うことができる機能。一つのインターフェースが異なる基本形(データ型)の下での異なる操作を代表することができます。
OOPと手続き型プログラミング
手続き型のプログラミングはデータを操作する手順や関数を記述することに重点を置いています。一方、OOPでは、データと関数をオブジェクトにまとめます。この焦点のシフトは、いくつかの利点を提供します:
改善されたモジュール性: クラス内にデータと操作データを行うメソッドをまとめることで、OOPはコードのモジュール性を向上させます。
メンテナンスの容易さ: OOPはプログラムを整理しやすくするため、より管理しやすく、エラーの発生しにくいものになります。
再利用可能性: 継承により、オブジェクトは他のオブジェクトから特徴を受け継ぐことができるため、OOPは非常に再利用可能です。
C++におけるOOP
C++は、OOPパラダイムをサポートする強力な言語です。クラス、オブジェクト、メソッドを作成して、データと操作をまとめることができます。
#include <iostream>
using namespace std;
class Car
{
public:
string model;
void display()
{
cout << "Car Model: " << model << endl;
}
};
int main()
{
Car car1;
car1.model = "Tesla Model S";
car1.display();
return 0;
}
このシンプルなC++プログラムでは、modelという属性とdisplayというメソッドを持つCarクラスを定義しています。そして、クラスのオブジェクトcar1を作成して、Carクラスのプロパティにアクセスしています。
結論
Part Iでは、OOPの基本原則を掘り下げ、OOPがC++内でどのように具現化されているかを探求しました。Part I の目的は、プログラマーがより構造化され、効率的で、再利用可能なコードを書くための基礎を築くことにあります。
次回のパート2では、C++におけるクラスとオブジェクトの概念を掘り下げ、OOPの実践的な側面への第一歩を踏み出します。
エンジニアファーストの会社 株式会社CRE-CO
su_myat_phyu
参考
Object Oriented Programming in C++ :
C++ Object Oriented Programming :