C++ の単一階層継承

C++Beginner
オンラインで実践に進む

はじめに

この実験では、C++ プログラミング言語における単一階層継承の概念をどのように示すかを学びます。親クラスと子クラスの 2 つのクラスを作成します。ここで、子クラス(派生クラス)は親クラス(基底クラスまたはスーパークラス)の特性(プロパティとメソッド)を継承します。

main.cpp ファイルを作成する

まず、次のコマンドを使用して ~/project ディレクトリに main.cpp ファイルを作成します。

touch ~/project/main.cpp

コードを記述する

次のコードをコピーして main.cpp ファイルに貼り付けます。

#include <iostream>
// 必要なライブラリをインクルードする

using namespace std;

// "Shape" と呼ばれる親クラス(基底クラス)を宣言する
class Shape {
    public:
        float area(float l, float b) { // 形状の面積を計算するメソッド
            return (l * b);
        }

        float perimeter(float l, float b) { // 形状の周囲を計算するメソッド
            return (2 * (l + b));
        }
};

// Shape クラスを派生または継承する "Rectangle" と呼ばれる子クラス(派生クラス)を宣言する
class Rectangle: private Shape {
    private:
        float length,
        breadth;

    public:
        Rectangle(): length(0.0), breadth(0.0) {} // Rectangle のデフォルトコンストラクタ

        void getDimensions() { // ユーザーから長方形の寸法を取得するメソッド
            cout << "\n長方形の長さを入力してください:";
            cin >> length;

            cout << "\n長方形の幅を入力してください:";
            cin >> breadth;
        }

        // Shape クラスを使用して長方形の周囲を計算するメソッド
        float perimeter() {
            // Shape クラスの perimeter() メソッドを呼び出して返す
            return Shape::perimeter(length, breadth);
        }

        // Shape クラスを使用して長方形の面積を計算するメソッド
        float area() {
            // Shape クラスの area() メソッドを呼び出して返す
            return Shape::area(length, breadth);
        }
};

int main() {
    // Rectangle クラスのオブジェクトを作成する
    Rectangle rect;

    // 歓迎メッセージ
    cout << "\n\n単一階層継承プログラムへようこそ!\n";

    // ユーザーへのメッセージ
    cout << "\nRectangle クラスは Shape クラスから派生しています。\n\n";

    // ユーザーから長方形の寸法を取得する
    rect.getDimensions();

    // 親クラス Shape を使用して長方形の周囲を計算し、出力を表示する
    cout << "\n親クラス Shape を使用して計算された長方形の周囲:" << rect.perimeter() << "\n";

    // 親クラス Shape を使用して長方形の面積を計算し、出力を表示する
    cout << "親クラス Shape を使用して計算された長方形の面積:" << rect.area() << "\n\n";

    return 0;
}

コードをコンパイルして実行する

次に、以下のコマンドを使用してコードをコンパイルします。

g++ main.cpp -o main &&./main

その後、以下のコマンドを使用してコードを実行します。

./main

出力を理解する

プログラムを実行すると、次の出力が表示されます。

単一階層継承プログラムへようこそ!

Rectangle クラスは Shape クラスから派生しています。

長方形の長さを入力してください: 5

長方形の幅を入力してください: 10

親クラス Shape を使用して計算された長方形の周囲: 30
親クラス Shape を使用して計算された長方形の面積: 50

このプログラムは、ユーザーに長方形の長さと幅を入力するよう促します。寸法を取得した後、親の Shape クラスの perimeter() 関数と area() 関数を使用して周囲と面積を計算します。

まとめ

おめでとうございます!単一階層継承の概念を示す C++ プログラムを正常に作成しました。様々な形状を試してみることができ、出力は新しい派生クラスの計算結果を正確に反映します。