【超入門】MQL5 EA講座 第48回「クラスについて1 -クラスとは?-」【EAの作り方】

MQL5でEA作ろう講座

前回は MQL5公式リファレンスの見方 について解説しました。

改めて前回の内容をおさらいをしておくと、

  • 調べたい言語要素にカーソルを合わせた状態でキーボードのF1キーを押す(あるいは「ヘルプ」メニューの「MQL5リファレンス」をクリックする)事で、メタエディターから直接MQL5公式リファレンスにアクセスすることができる。

ということをお伝えしました。

今回は クラス というものについてお話ししたいと思います。

※今回も含め、これからしばらくの間、講座記事はクラスとそれに関連する内容が続くと思います。

ただし、この言語基礎編で解説するのは、あくまでもざっくりとした概要だけです。

より細かい使い方についてはEA制作発展編の中で、具体例を交えながら解説していくので、

現時点でクラスに関する内容を読み終わって、理解できなくても全く問題ないです。

後でちゃんと解説していきます。

クラスを使いこなせるようになると、MQL5の潜在能力がより引き出せるようになり、開発もぐんとラクになります。順を追って1つ1つ理解していけば、決して難しいものではありません。

頑張ってマスターしていきましょう(^^♪

スポンサーリンク
スポンサーリンク

クラスとは?

クラスというのは、端的に言うと変数 と 関数 をまとめたものです。

変数とはデータを格納する箱、でしたね?

関数とは?→処理を行う仕組みです。

変数関数をまとめるということは、クラスでは、データと処理をまとめることができる、ということです。

それが何を意味するもので、何がすごいのか?

現時点では全くピンとこないと思います。(私はピンときませんでした)

クラス、それの何がそんなにすごいのか?・・・

今は、それで大丈夫です。

とりあえず、変数関数よりも高機能な仕組み、ぐらいの理解をしておいてください。

変数については→コチラ

関数については→コチラ

クラスの作り方

クラスを作るにあたっては、関数や、構造体enum列挙型等と同様に宣言・定義が必要になります。

構造体については→コチラ

enum列挙型については→コチラ

宣言・定義はグローバル領域にて行いますイベントハンドラーなどの関数内で宣言・定義を行ってもコンパイルエラーにはなりませんが、そのような記述をする意味はないでしょう)

1.classキーワードの記述

クラスを作る際にはまず

class

というキーワードを先頭に記述します。

classキーワードの後は、自身で決めたクラス名を記述します。

//classキーワード→クラス名
class exampleClass

こんな感じですね。仮にクラス名を「exampleClass」としました。

クラス名の後に

{}

を書いて、中にまとめるべき変数関数を記述していきます。

}の後には、区切りの示すセミコロン(;)をつけます。

//classキーワード→クラス名
class exampleClass
{

};//文末にはセミコロンをつける。

2.アクセス指定子の記述

{}の中に、変数関数を実装していくのですが、

{}内の変数関数は、

private

protected

public

というアクセスレベルによって、分類されます。

privateprotectedpublicキーワードのことをアクセス指定子と呼びます。

クラスの概念もピンと来ていないのに、アクセスレベルとかアクセス指定子とか、訳分からない事言わないで((+_+))」

と言われそうですが、まあ落ち着いてください。

繰り返しになりますが、クラスについてはEA制作発展編の中で解説していきますので、今わからなくても大丈夫です。👍

さて、

第26回「ローカル変数について」 と 第27回「グローバル変数について」 で

変数のスコープ(有効範囲)についてお話ししました。

サラッとおさらいすると、ローカル変数の有効範囲は変数宣言をした関数の中に限定されるのに対して、グローバル変数は、関数が処理を終了した後も、値の記憶を保ち続けることができる

ということを解説しました。

ローカル変数については↓の記事をご参照ください

グローバル変数については↓の記事をご参照ください

クラス内の変数関数の、アクセスレベルというのも、それと同じようなものだと考えてください。

アクセスレベルは、「クラス内の変数関数がどこでなら、使えるか」を定めるものになります。

private,protected,publicが、それぞれどういう有効範囲になるのか?

という点については次回以降に解説していきます。

現時点では、「そういうものがあるんだー」ぐらいに思っていただければ結構です。

アクセスレベルの分類は、private,protected,publicキーワードを使って行っていきます。

//classキーワード→クラス名
class exampleClass
{
   private://アクセスレベルprivateを記述(キーワードの後にはコロン)
   int ex1;//privateアクセスレベルの変数「ex1」の宣言
   
   protected://アクセスレベルprotectedを記述(キーワードの後にはコロン)
   double ex2;//protectedアクセスレベルの変数「ex2」の宣言
   
   public://アクセスレベルpublicを記述(キーワードの後にはコロン)
   int exFunction(int ex3);


};//文末にはセミコロンをつける。

↑こんな感じで、

変数関数アクセスレベル=privateに設定したい場合は private:(コロン)

変数関数アクセスレベル=protectedに設定したい場合は protected:(コロン)

変数関数アクセスレベル=publicに設定したい場合は public:(コロン)

を記述し、その下に各アクセスレベル変数関数を書き込んでいきます。

この時に使うのは:(コロン)です!

文章を区切るときに使う;(セミコロン)ではないので気をつけてください。

セミコロンにしていると、「colon sign expected (コロンが必要です)」というコンパイルエラーが発生します。

3.{}内に、クラスにまとめる変数や関数を記述していく

変数データ型や、関数戻り値を書いて、変数名や関数名を書く・・・最後に;(セミコロン)

をつける・・・という一連の、変数関数の宣言・定義のルールはクラスの{}内でも同じです。

ただし、関数の実際の処理記述({}内に書いていく内容)は、この時には基本的には書きません。

1行で済むような、簡単な処理記述なら書くこともある(インライン定義)のですが、関数に関して、クラス内の{}で行うのは、

データ型の設定

関数名の設定

引数の設定

までとなります。(このあたりのことについては、次回詳しく触れる予定です)

メンバについて

クラス内の個々の変数関数を「メンバ」と読んだりします。

メンバ構造体の中の変数に対しても使われる言葉です。

もっとも、クラスとは異なり、構造体は主にデータの集まりを表すために用いられるので、クラスほど複雑な機能を持たない事が殆どです。

クラスメンバは、そのクラスが表現する特性や振る舞いを定義します。

たとえば、’人’を表すクラスを考えた場合、名前や年齢といった情報を変数メンバ変数)として持ち、歩くや話すといった行動を関数メンバ関数)として定義することができます。

今は何を言っているのかよくわからないと思いますが次回以降具体的なクラスの使い方を丁寧に解説していくので、安心してください。

おまけ

この「MQL5EA作ろう講座」も48回目となりました。

今回のクラスをもって、{} を使った構文は大方説明 をしてきたわけですが、

{}の後にセミコロン(;)をつけるものと、つけないものがあるのがややこしいですね(>_<)

いったん整理してみました

{}後のセミコロン必要?不要?まとめ

if文→不要

for文→不要

関数の定義→不要

構造体の定義→必要

enum列挙型の定義→必要

クラスの定義→必要

こんな感じになります。



void exampleFunction(){}//セミコロン不要
struct exampleStructure{};//セミコロン必要
enum ENUM_EXAMPLE{};//セミコロン必要
class exampleClass{};//セミコロン必要



void OnStart()
  {     
  
  int x=1;
  if(x){}//セミコロン不要
  for(;;){}  //セミコロン不要 
  }
  
 

まとめ

今回は クラス について解説しました。

今回の記事では以下のことを学びました

今回は以上になります。

最後までお読みいただきありがとうございました<m(__)m>

【超入門】MQL5 EA講座 第47回「MQL5公式リファレンスの見方」【EAの作り方】

 →【超入門】MQL5 EA講座 第49回「クラスについて2 -クラスの使い方-」【EAの作り方】

クラスの実際の使用例に関しては、今後の講座記事にはなりますが、以下の記事で解説していますので、今はよくわからなくてもご安心ください。

MQL5 EA講座 第71回「トレード用のオリジナルクラスを作る」

MQL5 EA講座 第82回「ポジション情報管理クラスを作る-その1」

MQL5 EA講座 第83回「ポジション情報管理クラスを作る-その2」

MQL5 EA講座 第88回「待機注文情報取得用のクラスを追加する」

MQL5 EA講座 第96回「トレーリングストップクラスを作る1」

MQL5 EA講座 第97回「トレーリングストップクラスを作る2」

MQL5 EA講座 第100回「ブレイクイーブンストップ関数を作る」

コメント

タイトルとURLをコピーしました