Eine Frage an die OOP-Experten. - Seite 41

 
Vladimir Simakov:
Das ist Scheiße. Wie möchten Sie einen mql-Delegierten erstellen? Nur zum Spaß, um den BSD zu erhöhen.

analog geht nicht, habe das so gemacht, in MT4 funktioniert es soweit, aber in MT5 geht es nicht mehr

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:

analog geht nicht, habe das gemacht, in MT4 funktioniert es soweit, aber in MT5 geht es nicht mehr

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

Der wesentliche Unterschied zu c# ist diese Zeile:arrPTR[0]=f1;

Es sollte etwa so aussehen:arrPTR[0]=new tralala(f1);

Oder so ähnlich. Was ich nicht verstehe, ist, wie kann jemand das tun wollen? Und um über die Angemessenheit des Denkens eines anderen zu sprechen.
 
Dmitry Fedoseev:

Der grundlegende Unterschied zu c# ist, dass diese Zeile:arrPTR[0]=f1;

Es sollte etwa so aussehen:arrPTR[0]=new tralala(f1);

Oder so ähnlich. Das ist es, was ich nicht verstehe - wie kann man es schaffen, so etwas zu wollen? Und um über die Angemessenheit des Denkens eines anderen zu sprechen.

Bei Sharpe lautet das Konzept: "Nimm das Zeug aus allen existierenden Sprachen" + füge Magie in Form von reinem und obligatorischem OOP hinzu - und du bekommst jede Lösung bis hin zu

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


und nachdem er diesen Code gesehen hat, beginnt ein C++-Programmierer, nach versteckten Bedeutungen darin zu suchen.... aber es hat keinen Sinn! - der einzige Sinn besteht darin, alle Nicht-Programmierer unter C# zu versammeln, imho ))))

 

Die Gründe, warum die unbeschränkte Vererbung zur "Entartung" von Objekten führt, sind gefunden.

ERLÄUTERUNG:

1. wir deklarieren eine (abstrakte) Basisklasse A.

2. Wir konstruieren daraus eine lange Kette von Vererbungen. Zu diesem Zweck schaffen wir 10 Erben von A und 10 Nachkommen von jedem von ihnen. Wir haben 10 direkte Vererbungsketten mit jeweils 10 Klassen.

3. Jede Klasse hat 10 einzigartige Eigenschaften und 10 Methoden. Aufgrund ihrer Einzigartigkeit werden die Eigenschaften und Methoden nahtlos in Klassen gekapselt und eine klare Hierarchie, die die "elegante" Struktur des Basisobjekts darstellt, wird auf ihnen aufgebaut.

4. Aber siehe da, die einzigartigen Eigenschaften gehen zu Ende. Es entstehen neue "Objekte" - "geboren" durch die Kreuzung von Eigenschaften und Methoden verschiedener Klassen und verschiedener Ketten. Sie haben keine direkte Vererbungskette von A, sondern vererben ihre Eigenschaften über viele Ketten, die zu dem Basisobjekt führen.

Gleichzeitig erben "gemischte" Objekte, die ihre Eigenschaften von "eindeutigen" Objekten erben, nur einige wenige Eigenschaften und Methoden von diesen und lassen andere unbenutzt. Sie erben viele Klassen, sollten aber nur einen Teil des "geerbten" Materials übernehmen und den Rest unangetastet lassen. ABER DAS IST NICHT MÖGLICH. Indem sie auf ihre Klassen zugreifen, erben sie alles, was verfügbar ist.

Mit anderen Worten: Ihr Erbe ist unklar. Indem sie auf ihre "Eltern" zugreifen, erhalten diese Objekte Eigenschaften und Methoden, die sie nicht benötigen. Und es gibt keine Möglichkeit, diese "Überflüssigkeiten" zu vermeiden.

Das bedeutet, dass die Vererbung nicht mehr richtig funktioniert, wenn es eine große Anzahl von Nachkommen gibt. Die Objekte "degenerieren" aufgrund der Menge der "Eltern" und der Verallgemeinerung der übermäßigen Vielfalt des "ererbten Materials". Die Objekte sind nicht mehr begrifflich kohärent.


 
Nein, das kann nicht passieren. Etwa auf der Stufe 6-8 der Vererbung kommt es zu einer Mutation und zu einem Aufstand der Maschinen.
 
Реter Konow:

Die Gründe, warum die unbeschränkte Vererbung zur "Entartung" von Objekten führt, sind gefunden.

ERLÄUTERUNG:

1. wir deklarieren eine (abstrakte) Basisklasse A.

2. Wir konstruieren daraus eine lange Kette von Vererbungen. Zu diesem Zweck schaffen wir 10 Erben von A und 10 Nachkommen von jedem von ihnen. Wir haben 10 direkte Vererbungsketten mit jeweils 10 Klassen.

3. Jede Klasse hat 10 einzigartige Eigenschaften und 10 Methoden. Aufgrund ihrer Einzigartigkeit werden die Eigenschaften und Methoden nahtlos in Klassen gekapselt und eine klare Hierarchie, die die "elegante" Struktur des Basisobjekts darstellt, wird auf ihnen aufgebaut.

4. Aber siehe da, die einzigartigen Eigenschaften gehen zu Ende. Es entstehen neue "Objekte" - "geboren" durch die Kreuzung von Eigenschaften und Methoden verschiedener Klassen und verschiedener Ketten. Sie haben keine direkte Vererbungskette von A, sondern vererben ihre Eigenschaften über viele Ketten, die zu dem Basisobjekt führen.

Gleichzeitig erben "gemischte" Objekte, die ihre Eigenschaften von "eindeutigen" Objekten erben, nur einige wenige Eigenschaften und Methoden von diesen und lassen andere unbenutzt. Sie erben viele Klassen, sollten aber nur einen Teil des "geerbten" Materials übernehmen und den Rest unangetastet lassen. ABER DAS IST NICHT MÖGLICH. Indem sie auf ihre Klassen zugreifen, erben sie alles, was verfügbar ist.

Mit anderen Worten: Ihr Erbe ist unklar. Indem sie auf ihre "Eltern" zugreifen, erhalten diese Objekte Eigenschaften und Methoden, die sie nicht benötigen. Und es gibt keine Möglichkeit, diese "Überflüssigkeiten" zu vermeiden.

Das bedeutet, dass die Vererbung nicht mehr richtig funktioniert, wenn es eine große Anzahl von Nachkommen gibt. Die Objekte "degenerieren" aufgrund der Menge der "Eltern" und der Verallgemeinerung der übermäßigen Vielfalt des "ererbten Materials". Die Objekte sind nicht mehr begrifflich kohärent.


Es wird also das falsche Konzept erstellt.
Warum erben eine Karosserie und ein Porträt von einem "Rahmen"-Objekt?
 
Artyom Trishkin:
Es wird also das falsche Konzept erstellt.
Warum erben die Karosserie und das Porträt von dem Objekt "Rahmen"?

Im Bereich der kleinen Aufgaben ist eine große Vererbungshierarchie nicht erforderlich. Die Hierarchie der KI-Wissensbasis ist jedoch nahezu unbegrenzt. Ich bin zu dem Schluss gekommen, dass die Hierarchie von Objekten bis zu bestimmten Grenzen bequem, praktisch und effektiv ist, danach beginnt die "Mehrfachvererbung", die zu einer "Degeneration" der Objektgenerationen führt. Neue Objekte werden aus der Basis entfernt und ihre Eigenschaften sind "sekundär", da sie von anderen Objekten gesammelt werden. Beim "Sammeln" von Eigenschaften nehmen die neuen Objekte zusätzliches "vererbtes Material" auf, das in ihre Funktionsweise "eingezwängt" wird.

Ich weiß nicht, wie ich dieses Problem lösen kann.

 

für den Fall, dass es jemand liest,https://tproger.ru/translations/oop-principles-cheatsheet/

obwohl ich das bezweifle, denn es ist nicht die Aufgabe der Bourgeoisie, zu lesen, was sie schreiben

 
Igor Makanu:

für den Fall, dass es jemand liest,https://tproger.ru/translations/oop-principles-cheatsheet/

Obwohl ich das bezweifle, ist es nicht die Aufgabe der Bourgeoisie, zu lesen, was sie schreiben.

In dem Artikel geht es um Vererbung. Lesen Sie es.

"Vererbung ist die Fähigkeit eines Objekts, sich auf die Eigenschaften eines anderen zu stützen."

Aber was ist, wenn Sie ein Objekt der 102. Generation haben, das NUR von mehreren Objekten erben kann, anstatt von einem? Es erhält zusätzliche Eigenschaften und Methoden im Verhältnis zur Anzahl seiner "Eltern".

 
Реter Konow:

Im Bereich der kleinen Aufgaben ist eine große Vererbungshierarchie nicht erforderlich. Die Hierarchie der KI-Wissensbasis ist jedoch nahezu unbegrenzt. Ich bin zu dem Schluss gekommen, dass die Hierarchie von Objekten bis zu bestimmten Grenzen bequem, praktisch und effektiv ist, danach beginnt die "Mehrfachvererbung", die zu einer "Degeneration" der Objektgenerationen führt. Neue Objekte sind von der Basis entfernt und ihre Eigenschaften sind "sekundär", da sie von anderen Objekten gesammelt werden. Beim "Ernten" von Eigenschaften nehmen die neuen Objekte zusätzliches "vererbtes Material" auf, das in ihre Funktionsweise "eingezwängt" wird.

Ich weiß nicht, wie ich dieses Problem lösen kann.

Klare Klassifizierung. Wenn wir sehen, dass mehrere Objekte die gleichen Eigenschaften haben, ist es logisch, diese Eigenschaften in einem übergeordneten Objekt zu beschreiben.
Wenn ein untergeordnetes Objekt eine Eigenschaft des übergeordneten Objekts mit demselben Namen überschreibt, muss diese Eigenschaft virtuell sein.
Grund der Beschwerde: