2016年5月6日金曜日

[MQL超入門] その019 クラスとインスタンス

簡単EAの説明で、さんざん注文クラスというものが出てきました。さらにはインスタンスという言葉も出てきました。
「クラス」と「インスタンス」とは何か、そしてなぜ注文クラスというものを使っているのでしょうか。その辺を説明していきたいと思います。

なお、クラスを作らなくてもMQLでプログラムはいくらでも作れます。
より本格的なプログラムらしく作るための考え方ですので、興味のない方は読み飛ばしてください。


まず一般的によく言われるのは、
クラスが「型」で、その「実体」がインスタンス。
というものです。
さらにはクラスは「設計図」「雛形」などとも言われます。

という説明だけで分かれば苦労はしないので、もう少し分かりやすくいきましょう。

これもよく取り上げられる例ですが、「車」に例えましょう。
まず先に図で見てみます。
車の設計図が「クラス」。それを元に実際に作られた車が「インスタンス」です。

当たり前ですが、車の設計図だけでは車として乗ることはできません。
実際に作られて車という「モノ」になって初めて乗ることができます。設計図の時点では車としての役には立ちません。

では設計図は何のためにあるのでしょう。設計図は必要ないのでしょうか?
もし設計図がなければ、全く同じものは作れないでしょう。
既に作られた1台を元に、何とかそれらしいものを作ることは出来るかもしれませんが、その全ての車が全く同じに作られていて、全く同じ動きをする保障はできないでしょう。何か問題があった時に、解決するのにも大変な労力がかかることは容易に想像できると思います。


同じ車の設計図からは、当然同じ車が作られます。
ただし同じ設計図から作られていても、作られた2台の車は当然別の「モノ」です。
車Aのアクセルを踏んだら、車Bも一緒に動くなんてこともありません。

つまり車としての作りや機能は保障しながら、「モノ」としては完全に独立させることができます。


さらに、運転者はアクセルを踏んだらなぜ車が進むのかを知っている必要はありません。
内部的な仕組みを知らなくても、使い方を知っていれば使える、というは大きなメリットです。
仕組みがどうなっていて、どのような根拠があって、どのような試験をしてきたか、というのはメーカーが情報を持っていて、必要があれば提供できればそれでよいでしょう。

注文クラスに話を戻すと、例えばSendOrder()は「注文をする」という関数ですが、その中では証拠金不足のチェックやトレードが許可されているか等、様々な考慮をしています。しかし使う側にはそのことを一切知らなくても、全て考慮された上で注文することができます。

複雑な処理でも使う側はそのことを知らずにシンプルに使える、というようにプログラムを作れるということです。


このように、ただ想定どおり動くだけでなく、問題が発見しやすい、後から修正がしやすいなども考えることができると、質の高いプログラムが作れると思います。
ものすごーーーく簡単に、色々すっ飛ばして説明したので、興味のある方は「オブジェクト指向」というものを調べてみてください^^;

次の回へ


「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。