Day 8では、オブジェクト指向プログラミング(OOP)の基礎について学習します。
以下にそれぞれの内容を詳細に説明し、例題と演習問題を提示します。
オブジェクト指向プログラミングの基礎:
1. オブジェクト:
– オブジェクトは、データと操作を1つのエンティティにまとめたものです。
– オブジェクトは、プログラム内で特定の役割や機能を持ち、データ(メンバ変数)と操作(メンバ関数)を備えています。
– クラスに基づいてオブジェクトを作成します。
2. クラス:
– クラスはオブジェクトの設計図であり、オブジェクトを作成するためのテンプレートです。
– クラスでは、オブジェクトが持つべきデータ(メンバ変数)と操作(メンバ関数)を定義します。
– クラスのインスタンス化により、実際のオブジェクトが作成されます。
3. インスタンス化:
– クラスからオブジェクトを作成することをインスタンス化と呼びます。
– インスタンスは、クラスの設計図に基づいて作成されたオブジェクトを指します。
4. カプセル化:
– カプセル化は、オブジェクトの内部データと外部からのアクセスを制御する仕組みです。
– クラスは、外部から直接アクセスされないようにすることで、データの安全性を確保します。
5. 継承:
– 継承は、既存のクラス(ベースクラスまたは親クラス)を基に新しいクラス(派生クラスまたは子クラス)を作成する機能です。
– 派生クラスは、ベースクラスの属性と振る舞いを継承し、さらに新しい属性と振る舞いを追加できます。
6. ポリモーフィズム:
– ポリモーフィズムは、同じインターフェースを持つオブジェクトが異なるクラスであるかのように振る舞うことができる機能です。
– この機能により、異なるクラスのオブジェクトを統一的に扱うことができます。
例題:
#include <iostream> // Rectangleクラスの定義 class Rectangle { private: double width; double height; public: // コンストラクタ:オブジェクトが作成される際に呼び出される Rectangle(double w, double h) { width = w; height = h; } // 面積を計算するメソッド double calculateArea() { return width * height; } }; int main() { // Rectangleクラスからオブジェクトを作成 Rectangle rect(5.0, 3.0); // オブジェクトのメソッドを呼び出して面積を計算 double area = rect.calculateArea(); std::cout << "Area: " << area << std::endl; return 0; }
演習問題:
1. 車(Car)クラスを定義してください。このクラスには、車のブランド、色、燃料タイプを表すメンバ変数が含まれるようにしてください。また、これらの情報を表示するメソッドも定義してください。その後、車のオブジェクトを作成し、情報を表示するプログラムを作成してください。
2. 2次元の図形を表すShapeクラスを定義してください。このクラスには、図形のタイプ(円、四角形、三角形など)とその面積を計算するメソッドが含まれるようにしてください。その後、Shapeクラスを継承して円(Circle)、四角形(Rectangle)、三角形(Triangle)のクラスを定義し、それぞれの図形の面積を計算するプログラムを作成してください。
これらの例題と演習問題を解くことで、オブジェクト指向プログラミングの基本的な概念を理解し、クラスとオブジェクトの使用、継承とポリモーフィズムの応用に慣れることができます。問題を解いたら、プログ
ラムが正しく動作しているかどうかを確認してみてください。