OOPの専門家に質問です。 - ページ 41

 
Vladimir Simakov:
クソッmqlのデリゲートを作成したいのですが?BSDを上げるための、ただの遊び。

アナログはできない、そうして、MT4で確認したところ、これまでのところ動作しているが、MT5ではもはや動作しない

typedef void(*TFuncvoidPTR)(void);
//+------------------------------------------------------------------+
void OnStart()
{  TFuncvoidPTR arrPTR[3];
   arrPTR[0]=f1;
   arrPTR[1]=f2;
   arrPTR[2]=f3;
   for(int i=0; i<3; i++)
      arrPTR[i]();			// ' ) ' - expression expected

}
//_______________________________________________________________________
void f1() { Print("1"); }
void f2() { Print("2"); }
void f3() { Print("3"); }
//+------------------------------------------------------------------+

2019.10.06 16:22:44.202 tst EURUSD,H1: 3

2019.10.06 16:22:44.202 tst EURUSD,H1: 2

2019.10.06 16:22:44.202 tst EURUSD,H1: 1

 
Igor Makanu:

アナログはできない、そうして、MT4で確認したところ、これまでのところ動作しているが、MT5ではもはや動作しない

2019.10.06 16:22:44.202 tst EURUSD,H1: 3

2019.10.06 16:22:44.202 tst EURUSD,H1: 2

2019.10.06 16:22:44.202 tst EURUSD,H1: 1

c#との根本的な違いは、この行です:arrPTR[0]=f1;

arrPTR[0]=new tralala(f1) のようになるはずです。

とか、そんな感じです。私が理解できないのは、どうしてそんなことをしたい人がいるのか、ということです。そして、他人の考え方の妥当性を語ること。
 
Dmitry Fedoseev:

c#と根本的に違うのは、この行:arrPTR[0]=f1;

arrPTR[0]=new tralala(f1) のようになるはずです。

とか、そんな感じです。それが理解できない。どうしてそんなことを望むことができるのだろう?そして、他人の考え方の妥当性を語ること。

Sharpでは、「既存のすべての言語から詰め物を取る」+「どんな場合でも純粋で義務的なOOPという形で魔法を加える」というコンセプトで、どんな解決策も得ることができます。

int a = new int();
char b = new Char();
string c = new string(new char[] { });
string d = String.Empty;
String e = String.Empty;


このコードを見たC++プログラマーは、このコードの中に隠された意味を探し始める......。でも、意味がない!- C#の下に非プログラマーを集めることだけが目的だ ))))

 

無制限の継承が対象の「退化」を招く理由を明らかにした。

EXPLANATION(説明)。

1.ベース(抽象)クラスAを宣言する。

2.そこから長い継承の連鎖を構築する。そのために、Aから10人の相続人を作り、それぞれから10人の子孫を作ります。私たちは、10の直接の継承の連鎖を持ち、それぞれに10のクラスがあります。

3.各クラスは固有の10個のプロパティと10個のメソッドを持っています。その独自性から、プロパティとメソッドはスムーズにクラスにカプセル化され、その上にベースオブジェクトの「エレガント」な構造を表す明確な階層が構築される。

4.しかし、なんと、固有特性が切れてしまうのです。異なるクラスや異なるチェーンのプロパティやメソッドを掛け合わせることで、新しい「オブジェクト」が出現する。 それらはAから直接の継承の連鎖を持たず、ベースオブジェクトにつながる多くの連鎖を通してその特性を継承する。

同時に、「ユニーク」オブジェクトからプロパティを継承する「ミックス」オブジェクトは、いくつかのプロパティとメソッドのみを継承し、他は手付かずのまま である。多くのクラスを継承していますが、「継承」したものは一部だけにして、残りはそのままにしておくべきです。が、これは不可能です。そのクラスにアクセスすることで、利用可能なものはすべて継承される。

つまり、相続が不明確なのです。親」にアクセスすることで、必要のないプロパティやメソッドを取得する。そして、これらの「余計なお世話」を避ける術はないのです。

子孫の数が多くなると、継承がうまくいかなくなるということです。親」の集合と「受け継いだもの」の過剰な多様性の一般化により、対象は「退化」する。 オブジェクトは概念的に首尾一貫したものでなくなる。


 
いや、そんなことはありえない。遺伝子のレベル6~8のどこかで突然変異が起こり、機械の反乱が起こる。
 
Реter Konow:

無制限の継承がオブジェクトの「退化」を招く理由が判明。

EXPLANATION(説明)。

1.ベース(抽象)クラスAを宣言する。

2.そこから長い継承の連鎖を構築する。そのために、Aから10人の相続人を作り、それぞれから10人の子孫を作ります。私たちは、10の直接の継承の連鎖を持ち、それぞれに10のクラスがあります。

3.各クラスは固有の10個のプロパティと10個のメソッドを持っています。その独自性から、プロパティとメソッドはスムーズにクラスにカプセル化され、その上にベースオブジェクトの「エレガント」な構造を表す明確な階層が構築される。

4.しかし、なんと、固有特性が切れてしまうのです。異なるクラスや異なるチェーンのプロパティやメソッドを掛け合わせることで、新しい「オブジェクト」が出現する。 それらはAから直接の継承の連鎖を持たず、ベースオブジェクトにつながる多くの連鎖を通してその特性を継承する。

同時に、「ユニーク」オブジェクトからプロパティを継承する「ミックス」オブジェクトは、いくつかのプロパティとメソッドのみを継承し、他は手付かずのまま である。多くのクラスを継承していますが、「継承」したものは一部だけにして、残りはそのままにしておくべきです。が、これは不可能です。そのクラスにアクセスすることで、利用可能なものはすべて継承される。

つまり、相続が不明確なのです。親」にアクセスすることで、必要のないプロパティやメソッドを取得する。そして、これらの「余計なお世話」を避ける術はないのです。

子孫の数が多くなると、継承がうまくいかなくなるということです。親」の集合と「受け継いだもの」の過剰な多様性の一般化により、対象は「退化」する。 オブジェクトは概念的に首尾一貫したものでなくなる。


つまり--間違ったコンセプトで作られているのです。
なぜ「フレーム」オブジェクトから車体や肖像画を継承するのか?
 
Artyom Trishkin:
つまり--間違ったコンセプトで作られているのです。
なぜ「フレーム」オブジェクトから車体やポートレートを継承するのか?

小さなタスクの領域では、巨大な継承階層は必要ない。しかし、AI知識ベースの階層は、ほぼ無限にあります。私は、オブジェクトの階層化は、ある限度までは便利で実用的かつ効果的であるが、それ以降は「多重」継承が始まり、オブジェクトの世代が「退化」してしまうという結論に達したのです。新しいオブジェクトはベースから削除され、他のオブジェクトから収集されるため、そのプロパティは「二次的」なものです。特性を「収集」する過程で、新しいオブジェクトは「継承された材料」を余分に取り込み、その動作に「くさび」を打ち込むのです。

この問題を解決する方法がわからない。

 

一応、https://tproger.ru/translations/oop-principles-cheatsheet/

ブルジョワジーが書いたものを読むのは仕事じゃない。

 
Igor Makanu:

一応、https://tproger.ru/translations/oop-principles-cheatsheet/

ブルジョワジーが書いたものを読むのは仕事じゃない。

相続についての記事です。読んでみてください。

"継承とは、あるオブジェクトが他のオブジェクトの特性を基に自分自身を構築する能力のこと"

しかし、102世代目のオブジェクトで、1つではなく複数のオブジェクトからONLYを継承できる場合はどうでしょうか?親」の数に比例して、余分なプロパティやメソッドを取得することになります。

 
Реter Konow:

小さなタスクの領域では、巨大な継承の階層は必要ない。しかし、AIナレッジベースの階層はほぼ無限にあります。私は、オブジェクトの階層化は、ある限度までは便利で実用的かつ効果的だが、それ以降は「多重」継承が始まり、オブジェクトの世代が「退化」してしまうという結論に達しました。新しいオブジェクトはベースから距離があり、他のオブジェクトから収集されるため、その特性は「二次的」なものです。プロパティを「収穫」する過程で、新しいオブジェクトは、その操作に「くさび」を入れられた「継承された材料」を余分に取り込みます。

この問題を解決する方法がよくわからない。

明確な分類。複数のオブジェクトが同じプロパティを持つことがわかれば、それらのプロパティを1つの親オブジェクトに記述することが論理的である。
子オブジェクトが同名の親オブジェクトのプロパティをオーバーライドする場合、そのプロパティは仮想でなければなりません。
理由: