トップ  >  リファレンス  >  基本  >  オブジェクト指向プログラミング
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ

天才数学者のエドワード・オークリー・ソープの物語とジョン・ケリーの公式は必見です。
オブジェクト指向プログラミング


オブジェクト指向プログラミング(OOP)は、主にデータに注力したプログラミングです。
一方で、データと動作はリンクされていて分離不可能です。
オブジェクトはクラスのインスタンスでありますが、データと動作が一緒のクラスで構成されます。

オブジェクト指向のアプローチコンポーネントは以下の通りです。

型のカプセル化と拡張性
継承
ポリモーフィズム
オーバーロード
仮想関数


OOPは動作のモデル化のような演算を考慮します。
モデル化されたアイテムは演算抽象化によって表されるオブジェクトです。

よく知られているゲーム「テトリス」のプログラムを書きたいとします。
テトリスを作成するには、縁で接合された4つの正方形で構成されたランダムな形状の出現をモデル化する方法を学ぶ必要があります。
また形状の落下速度を調整し、形状の回転と移動を定義する必要があります。
画面上での形状の移動は壁の境界によって制限され、これもモデル化しなければなりません。
それに立方体で満たされた行を破棄し、ポイントをカウントする必要があります。


(↑:テトリス動画。お笑いネタですけどw)

このようにこの分かり易いゲームは、形状モデル・壁モデル・形状運動モデルのように幾つかのモデルを作成する必要があります。
これらのモデルは全て抽象化で、コンピュータの演算で表します。
これらのモデルを記述する為に、抽象データ型ADT(または複合データ型)の概念が使用されます。
厳密にはDOM内の「形状」運動モデルはデータ型ではありませんが、「形状」のデータ型に対する演算セットは「壁」データ型の制限で使用します。

オブジェクトはクラス変数です。
OOPはADTを使用して簡単に作成する事が出来ます。
OOPは継承メカニズムを使用出来ます。
継承の利点は、既にユーザーによって定義されたデータ型から派生型を取得出来る事です。

例えば、テトリス形状を作成する為には、まず基本クラスの形状を作成すると便利です。
テトリスで使用される7つの形状の型を表現する他クラスは、その基本クラスの上に導く事が出来ます。
形状の動作は基本クラスで定義され、各個別の形状の動作の実装は派生クラスで定義されます。

OOPオブジェクトは動作に責任があります。
ADT開発者は任意の対応するオブジェクトの動作を記述する為のコードを含める必要があります。
オブジェクト自身はその行動に責任があるという事実は、このオブジェクトのプログラミング作業を大きく簡素化します。

画面上の形状を描画したい場合、どこが中心になってどのように描画するかを知っておく必要があります。
個別の形状が自身を描画する方法を知っている場合は、プログラマはこの形状を使用した場合「描く」というメッセージを送信する必要があります。

MQL4言語はC++言語のようであり、ADTを実施する為にカプセル化メカニズムを備えています。
一方、カプセル化は特定の型の実装内部の詳細を結合し、他方ではこのタイプのオブジェクトに影響を与える事が出来る外部からアクセス可能な機能を組み合わせました。
実装の詳細はこの型を使用するプログラムの為アクセス出来ません。


OOPの概念は次のような関連する概念セットを持っています。

・現実世界からのアクションシミュレーション
・ユーザー定義のデータ型
・実装の詳細を隠します
・継承によるコード再利用の可能性
・実行時関数呼び出しの解釈

これらの概念のいくつかはかなり曖昧で、いくつかは抽象的で、いくつかは一般的です。

スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system