HiroLab

プログラミングに関する情報発信サイト。

C++

【C++】Day 8:オブジェクト指向プログラミング(OOP)の基礎

投稿日:

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)のクラスを定義し、それぞれの図形の面積を計算するプログラムを作成してください。

これらの例題と演習問題を解くことで、オブジェクト指向プログラミングの基本的な概念を理解し、クラスとオブジェクトの使用、継承とポリモーフィズムの応用に慣れることができます。問題を解いたら、プログ

ラムが正しく動作しているかどうかを確認してみてください。

-C++
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【C++】Day 12:C++の標準ライブラリの使用

Day 12では、C++の標準ライブラリの使用について学習します。 C++の標準ライブラリは、様々な便利な関数やコンテナ、アルゴリズムなどを提供しており、プログラムの記述を簡単にしたり、高度な機能を利 …

【C++】Day 20:マルチスレッドプログラミングの応用

Day 20では、マルチスレッドプログラミングの応用について学習します。 マルチスレッドプログラムは様々な応用が可能であり、より高度なスレッド制御や同期手法を使用して性能や効率を向上させることができま …

【C++】Day 23:ネットワークプログラミングの応用

Day 23では、ネットワークプログラミングの応用について学習します。 ネットワークプログラミングは、クライアントとサーバーの間でデータを送受信するだけでなく、さまざまな応用があります。 以下にネット …

【C++】Day 27:デザインパターン「構造型パターン」

Day 27では、デザインパターンのうち「構造型パターン」について学習します。 構造型パターンは、クラスやオブジェクトの構造を改良するためのパターンです。主な構造型パターンには、アダプタ、デコレータ、 …

【C++】Day 16:C++のラムダ式とSTLアルゴリズム

Day 16では、C++のラムダ式とSTLアルゴリズムについて学習します。 ラムダ式は、簡単な関数をインラインで定義する方法であり、STLアルゴリズムは標準ライブラリのアルゴリズム関数です。 以下にそ …