Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Interesting:
Die von Alexander(AlexSTAL) vorgeschlagene Methode hätte das Problem lösen können (abgesehen von der gewissen Problematik, die sie mit sich bringt).
Halt, halt, halt, halt!
Ich habe es nicht vorgeschlagen, sondern gesagt, dass es eine Möglichkeit gibt.
Und was ist dein Problem, dass ich es nicht verstehe?
Sie müssen ein Beispiel diskutieren, bei dem die Hälfte der Logik fehlt und die Hälfte falsch ist (ein Überbleibsel aus der Anfangszeit der OOP)?
Halt, halt, halt, halt!
Ich habe es nicht vorgeschlagen, sondern gesagt, dass es eine Möglichkeit gibt.
Und was ist dein Problem, dass ich es nicht verstehe?
Angenommen, Sie müssen verschiedene Objekte in ein Array einfügen.
Gleichzeitig sollten alle Eigenschaften dieser Objekte in demselben Array gespeichert werden und es sollte Zugriff auf alle Ereignisse und Methoden bestehen.
Die von Ihnen angebotene Möglichkeit (die Implementierung kann unterschiedlich sein) erlaubt, soweit ich das verstanden habe, den Zugriff auf die Funktionalität der Objekte (Ereignisse und Methoden).
Es ist jedoch unwahrscheinlich, dass die Speicherung von Daten in einem Array mit einem Vorgängertyp funktioniert (wenn man bedenkt, dass diese Daten nicht im Vorgängertyp deklariert wurden).
Lassen Sie mich meinen Gedankengang verdeutlichen.
Wenn wir bei diesem Beispiel stehen bleiben, dann:
1. Wir können z. B. ein Array erstellen, in dem die Art des Objekts, die Position in X und die Position in Y gespeichert wird;
2. Wir könnten versuchen, ein eindeutiges Objekt durch seinen Zeiger zu identifizieren (obwohl bei der Arbeit mit einem Objekt der Zeiger möglicherweise nicht verwendet wird, dann wäre es wünschenswert, so etwas wie einen Handle zu haben);
Eine dumme Frage (ich sehe keine andere Lösung), warum einen Zeiger als Handle verwenden (erstellen Sie eine Eigenschaft im Vorfahren und füllen Sie es im Konstruktor)?
Wir haben nicht die Möglichkeit, die Eigenschaften der Nachkommen in einem Array zu speichern (nur die, die nicht im Vorgänger definiert sind). Soweit ich weiß, können wir zum Beispiel den Radius eines Kreises oder die Seitenlänge eines Quadrats nicht in einem Array speichern.
3. wir erhalten nicht die Möglichkeit, Eigenschaften von Nachkommen im Array zu speichern (nur die, die nicht im Vorgänger geprägt wurden). Soweit ich weiß, können wir zum Beispiel den Radius eines Kreises oder die Seitenlänge eines Quadrats nicht in einem Array speichern.
Warum sollte es nicht funktionieren... Sie sprechen sie nicht direkt an, sondern verwenden Ihre "GetValue"-Funktion mit dem Parameter "Radius" (wenn das Objekt ein Kreis ist)... Dies ist nur eine Möglichkeit...
Sie stellen eine einfache spezifische Aufgabe
Warum sollte es nicht funktionieren... Sie sprechen sie nicht direkt an, sondern verwenden Ihre "GetValue"-Funktion mit dem Parameter "Radius" (wenn das Objekt ein Kreis ist)... Dies ist nur eine Möglichkeit...
Sie stellen ein einfaches, spezifisches Problem
Die Aufgabe ist einfach, aber wer kann schon sagen, dass sie leicht zu realisieren ist.
Die Aufgabe besteht darin, verschiedene Objekte (Abkömmlinge der Basisklasse) mit ihren Daten in einem Array zu erfassen.
Machen wir uns klar, dass wir zusammen mit ihren Daten!!!
2. GetArea() für jeden Abkömmling;
3. Fügen Sie die folgenden Funktionen hinzu:
a. Berechnen Sie den Umfang des Quadrats - Seite *4;
б. Berechnung des Umfangs eines Kreises - 2πR.
3. Fügen Sie der Bibliothek weitere Formen hinzu - Rechteck (zwei Seiten) und Dreieck.
4. Fügen Sie die folgenden Funktionen hinzu:
a. Berechnen Sie den Flächeninhalt eines Rechtecks - Basis mal Höhe;
б. Berechnen Sie den Umfang eines Rechtecks - Summe der Seiten *2;
в. Berechnung des Flächeninhalts eines Dreiecks;
г. Berechnung des Umfangs eines Dreiecks.
5. Identifizieren Sie jedes Objekt einzeln (unter allen Objekten und unter den Objekten seiner Klasse).
Vorzugsweise mit oder ohne Zeiger.
6. Berechne den Umfang und die Fläche der Formen, indem du nur die in der Matrix gespeicherten Daten verwendest.
PS
Es ist nicht erlaubt, Code von Nachkommen auf den Vorfahren zu übertragen (es sei denn, dieser Code gilt für alle Vorfahren).
D.h. Sie können z.B. keinen Radius in einen Vorgänger übertragen, da ein Quadrat, ein Rechteck und ein Kreis keinen Radius haben.
Neue Funktionen können zu einem Vorfahren hinzugefügt werden, solange sie für alle Nachkommen gelten.
Wir nehmen den Code im Trailer als Grundlage.
Innerhalb eines einzelnen Arrays habe ich persönlich das Problem gelöst, indem ich einfach Variablen für die Speicherung von Fläche und Umfang zum Vorgänger hinzugefügt habe und eine Funktion, um Daten in sie zu schreiben.
In diesem Fall, wenn das Ergebnis von GetArea() und anderen Funktionen der direkten Berechnung kontrolliert wird.
Ich scheine nicht gegen meine eigenen Regeln verstoßen zu haben.
Ich habe eine Möglichkeit zur Umsetzung des von Ihnen beschriebenen Ansatzes skizziert.
Er ist nicht vollständig, aber er ist der wichtigste Ansatz
Ich habe eine Möglichkeit zur Umsetzung des von Ihnen beschriebenen Ansatzes skizziert.
Er ist nicht vollständig, aber er ist der wichtigste Ansatz
Der Ansatz ist klar. Dies ist wahrscheinlich eine der besten Lösungen für ein ähnliches Problem.
Zumindest im Moment.
Die Aufgabe ist einfach, aber wer sagt, dass sie leicht umzusetzen ist?
1. Die Aufgabe besteht darin, verschiedene Objekte (Abkömmlinge einer Basisklasse) zusammen mit ihren Daten in ein Array zu schreiben.
...Tabellenkalkulationen in MQL5 haben das Problem bereits gelöst und beschrieben.
Wie gut es ist, lesen zu können... :)
Auch kein schlechter Ansatz, obwohl, wie ich verstanden habe, beide Ansätze auf der Übermittlung/Lesung nur eines Parameters (wenn auch unterschiedlicher Art) beruhen.
Aber was tun, wenn es viele Parameter gibt und es unmöglich ist, sie alle in einer Basisklasse unterzubringen?
Soweit ich das verstanden habe, sollte der Index des zu übergebenden Parameters zusätzlich angegeben werden (es kann auch ein Array mit nach Index gestapelten Parametern in der Klasse angelegt werden).
Wie gut es ist, lesen zu können... :)
Auch kein schlechter Ansatz, obwohl, wie ich verstanden habe, beide Ansätze auf der Übermittlung/Lesung nur eines Parameters (wenn auch unterschiedlicher Art) beruhen.
Und was ist zu tun, wenn es viele Parameter gibt und es unmöglich ist, sie alle in die Basisklasse aufzunehmen?
Soweit ich verstehe, ist es möglich, einen Index des zu übergebenden Parameters einzugeben (es ist auch möglich, ein Array mit nach Index gestapelten Parametern in einer Klasse zu erstellen)?