私のアプローチコアはエンジンです。 - ページ 6

 
ピーター あなたは、PLOを雄牛の目の前の赤い布のように持っていますね。あなたほどOOPについて議論しているスレッドは他にありません。しかも、まさにこのOOPで1つもプログラムを書いていないにもかかわらず、です。こんなこと、おかしいと思いませんか?
 
Vasiliy Sokolov:
ピーターさん、あなたはOOPを牛の目の前の赤い布のように持っていますね。あなたほどOOPについて議論しているスレッドは他にありません。そして、まさにこのOOPで1つもプログラムを書いていないにもかかわらず、このようなことをするのです。こんなこと、おかしいと思いませんか?

私は、自分のアプローチの中でOOPを使う ようにという提案に応えているだけです。これらのアプローチは互換性がありません。

そこで、なぜ私がOOP構文を使わないのかを説明せずに、私のアプローチを説明することにします。


私が使わないなら、必要ない。

 
Dmitry Fedoseev:

どちらも間違いです。

もうここで6ページもトピックスターターを引っ張らないでください、でも何を見せたいのかがはっきりしない、カーネルにまつわる ことだというのは明らかです )))。

彼は私たちに例を見せて、そして私たちは彼に、OOPはソフトウェア開発において時間を節約するものだと納得させるでしょう ;)

 
何もない6ページ。トレーダーにとっては、利益を上げることが最大の関心事です。:)そのコードがOOPを備えているかどうかは、二の次である。
 
Реter Konow:

私が使わなければ、使う必要はないのです。

理解できないものは、使う必要性がないはずです。だから、メガライブラリで何をやっても、OOPには「必要ない」のです。

 
Vasiliy Sokolov:

理解できないものは、使う必要性がないはずです。だから、メガライブラリの中に何が入っていようと、そこにOOPは「必要ない」のです。

 

では、簡単なものからご紹介しましょう。プロトカーネル内にプロトタイプ要素を作ってみましょう。

int P_CORE[3][5] = {
//Основание кнопки.-----------------------------
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
//----------------------------------------------
{  100, 100,    200,    50,    C'245,245,245'},
//---------------------------------------------- 
//Текст кнопки.---------------------------------
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
//----------------------------------------------
{  120, 120,     0,      0,       C'245,0,0'},
//---------------------------------------------- 
//Иконка кнопки.-------------------------------- 
//
//  X    Y     X_SIZE  Y_SIZE       COLOR 
{  140, 140,     16,     16,           0},
//---------------------------------------------- 
};


P_CORE - массив. Я называю его прото-ядром, потому что он содержит прототип элемента, который далее будет изменен.

Элемент кнопка состоит из 3-ех объектов. Каждому из них мы предоставили 5 свойств.
 

そして、プロトコアでは、その要素を拡張して表形式で表現しているわけです。

表形式には利点がある。主にループで。


それでは、アイテムを作成する関数を書いてみましょう。

その前に、項目のプロパティをdefineで定義しておくと、簡単に参照できるようになります。

 
#define  BASE        0
#define  TEXT        1
#define  ICON        2
//-------------------
#define  X           0
#define  X_SIZE      1
#define  Y           2
#define  Y_SIZE      3
#define  BG_COLOR    4
#define  TEXT_COLOR  4
//-------------------
//Вот как будут выглядеть обращения к свойствам элемента:

P_CORE[BASE][X]
P_CORE[BASE][Y]
P_CORE[BASE][X_SIZE]
P_CORE[BASE][Y_SIZE]
P_CORE[BASE][COLOR]

P_CORE[TEXT][X]
P_CORE[TEXT][Y]
P_CORE[TEXT][X_SIZE]
P_CORE[TEXT][Y_SIZE]
P_CORE[TEXT][COLOR]

P_CORE[ICON][X]
P_CORE[ICON][Y]
P_CORE[ICON][X_SIZE]
P_CORE[ICON][Y_SIZE]
P_CORE[ICON][COLOR]
 

ボタンを作成する関数を書きます。

void Create_element(string name, string Text)
{
 ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
 ObjectSetInteger(0,name,OBJPROP_XDISTANCE,P_CORE[BASE][X]);
 ObjectSetInteger(0,name,OBJPROP_YDISTANCE,P_CORE[BASE][Y]);
 ObjectSetInteger(0,name,OBJPROP_XSIZE,P_CORE[BASE][X_SIZE]);
 ObjectSetInteger(0,name,OBJPROP_YSIZE,P_CORE[BASE][Y_SIZE]);
 ObjectSetString(0,name,OBJPROP_TEXT,Text);
 //----------------------------------------------
 ObjectSetInteger(0,name,OBJPROP_BGCOLOR,P_CORE[BASE][BG_COLOR]));
 ObjectSetInteger(0,name,OBJPROP_COLOR,P_CORE[TEXT][TEXT_COLOR])); 
 //----------------------------------------------
 ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
 ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER); 
}


もちろん、カーネルは不要だという声もあるでしょう。このような呼びかけで十分です。

Create_element(name,x,y,x_size,y_size,text,anchor,corner...)

と、すべてが同じになります。はい、でも最初だけです。このような呼びかけは、きちんとした展開ができないことが問題です。


各要素のプロパティは、グローバルメモリに整理され、最もシンプルな方法でアクセスできる必要があります。