オブジェクト指向プログラミングPart3 継承、派生クラスの書き方 MQL5


← オブジェクト指向プログラミングPart1

← オブジェクト指向プログラミングPart2 (前回)

継承、派生クラスとは

 クラスは変数や変数を一つにまとめたものでした。用途に応じてクラスを作成しておくと、関数をバラバラに管理するよりもスッキリするという利点があるわけですが、さらに管理しやすくするために、基底クラス派生クラスというものを作成できます。例えばEA作成時に使う用のクラスがあるとします。その中でも注文するときに使う関数、ロジックに使う関数、ポジションサイジングに使う関数、などEA作成用のクラスの中でもさらに派生のクラスを作成し、管理することができます。
 派生クラスは基底クラスから変数やメソッドを引き継ぎます(継承)。派生クラスのオブジェクト生成をしてしまえば、その基底クラスのメソッドを使うことができます。

派生クラスの書き方


 派生クラスを書くときは通常のクラスの書き方に加えて、基底クラスも記述する必要があります。

 実際にコードを書いてみると↓

// 基底クラス
class CRen{
private: 
   int   AI;

public: 
   int get_AI() { return AI; };
   void set_AI(int ai) { AI = ai; };

};

// 派生クラス
class CPractice :public CRen{
private:
   int   SA;

public:
   int get_SA() { return SA; };
   void set_SA(int sa) { SA = sa*2; };
};

int OnInit()
  {
   CPractice ren; // オブジェクト生成

   // 派生クラスのメソッドを使う
   ren.set_SA( 1234 );
   Print("派生クラスのメソッド ", ren.get_SA() );

   // 基底クラスのメソッドを使う
   ren.set_AI( 1234 );
   Print("基底クラスのメソッド ", ren.get_AI() );


   return(INIT_SUCCEEDED);
  }

このプログラムを実行すると↓

 OnInit関数内では派生クラスのオブジェクト生成しかしていませんが基底クラスのメソッドを問題なく使用することができました。

 実際にはひとつの基底クラスに対して複数の派生クラスを用意しておき、作りたいプログラムに応じて派生クラスを選択するという使い方が便利だと思います。


続きを読むときはこちら
オブジェクト指向プログラミングPart4 ポリモーフィズム →