C++ における階層的継承プログラム

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

はじめに

この実験では、階層的継承の概念を示す C++ プログラムを作成する方法を示します。クラスとオブジェクトを使用して簡単なプログラムを書き、このトピックをよりよく理解します。

main.cpp を作成する

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

touch ~/project/main.cpp

Shape クラスを書く

最初に行う必要があることは、Shape クラスを定義することです。このクラスは、Rectangle クラスと Triangle クラスの両方の親クラスとして機能します。このクラスでは、形状の幅と高さを格納する 2 つの保護メンバ変数 widthheight を作成します。

次に、これらの寸法を設定し、コンソールにメッセージを表示する public メンバ関数 setDimensions を作成します。

これが main.cpp に追加する必要のある Shape クラスのコードブロックです。

#include <iostream>
using namespace std;

class Shape {
    //保護メンバ変数は、クラスとその子孫クラスのみがアクセスできます
    protected:
        float width, height;
    //public メンバはどこからでもアクセスできます
    public:
        void setDimensions(float w, float h) {
            cout << "親クラス Shape を使用して寸法を設定中です\n";
            cout << "寸法は:" << w << " および " << h << "\n\n";

            width = w;
            height = h;
        }
};

Rectangle クラスを書く

次に、Shape クラスから継承する Rectangle クラスを作成します。ここでは、area() 関数を使用して矩形の面積を計算するためのメソッドオーバーライド技術を使用します。

これが main.cpp に追加する必要のある Rectangle クラスのコードブロックです。

class Rectangle: public Shape {
    //メソッドオーバーライド
    public:
        float area() {
            return (width * height);
        }
};

Triangle クラスを書く

次に、Shape クラスからも継承する Triangle クラスを作成しましょう。ここでは、area() 関数を使って三角形の面積を計算するためにメソッドオーバーライドを使います。

これが main.cpp に追加する必要のある Triangle クラスのコードブロックです。

class Triangle: public Shape {
    //メソッドオーバーライド
    public:
        float area() {
            return (width * height / 2);
        }
};

main() 関数を書く

次は、main() 関数を書く時です。ここでは、Rectangle クラスと Triangle クラスの両方のオブジェクトを作成し、それらの寸法を設定します。

その後、area() 関数を使用して、それぞれのオブジェクトを使って RectangleTriangle の面積を計算します。

これが main.cpp に追加する必要のある main() 関数のコードブロックです。

int main() {

    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << "===== Program to demonstrate the concept of Hierarchical Inheritance in CPP =====\n\n";

    //クラスメンバにアクセスするためのクラスオブジェクトを宣言
    Rectangle rectangle;
    Triangle triangle;

    rectangle.setDimensions(5, 3);
    triangle.setDimensions(2, 5);

    cout << "\nRectangle Class を使用して計算された長方形の面積は : " << rectangle.area() << "\n\n\n";
    cout << "Triangle Class を使用して計算された三角形の面積は:" << triangle.area();

    cout << "\n\n\n";

    return 0;
}

プログラムをコンパイルして実行する

端末でプログラムを実行するには、まず ~/project に移動します。その後、main.cpp ファイルをコンパイルするには、次のコマンドを入力します。

g++ main.cpp -o main

その後、次のコマンドでプログラムを実行します。

./main

端末に出力が表示されるはずです。

まとめ

この実験では、C++ における階層的継承の概念をどのように示すかを学びました。Shape クラスを作成し、それは RectangleTriangle の両方の親クラスでした。その後、各サブクラスのオブジェクトを作成し、メソッドオーバーライドを使って長方形と三角形の面積を求めました。

この実験が、C++ における階層的継承の仕組みをより深く理解するのに役立ててくれたことを願っています。何か質問があれば、下のコメント欄を通じて遠慮なくお問い合わせください。