Diskussion zum Artikel "Grafiken in der Bibliothek DoEasy (Teil 83): Die Klasse des abstrakten grafischen Standardobjekts"
Guten Tag,
- Können Sie Beispiele für Duplikate nennen, um die Frage genauer zu beantworten?
- Die Struktur und das Konzept des Aufbaus von Bibliotheksobjekten stimmt nicht ganz mit dem Konzept der Standardbibliothek überein. Aber wie Sie vielleicht bemerkt haben, ist die Bibliothek auf den Standardobjekten CObject und CArrayObj aufgebaut.
Wie auch immer, ich beantworte gerne Fragen, nehme Kritik und Anregungen entgegen.
Vielen Dank für Ihr Interesse.
- Können Sie Beispiele für Duplikate nennen, um genauer zu sein?
- Die Struktur und das Konzept des Aufbaus von Bibliotheksobjekten kollidiert nicht ganz mit dem Konzept der Standardbibliothek. Aber wenn Sie bemerken könnten, ist die Bibliothek auf dem Standard CObject und CArrayObj gebaut.
Auf jeden Fall beantworte ich gerne Fragen, nehme Kritik und Anregungen entgegen.
Vielen Dank für Ihr Interesse.
1. Konkret meinte ich den Abschnitt, ab dem der Code beginnt"Weiter im Code der Klasse schreiben Sie Methoden für den vereinfachten Zugriff auf Set- und Return-Eigenschaften des Objekts: ".
So wie ich das verstehe, ist das eine Beschreibung von Funktionen in der Basisklasse, d.h. sie sind für alle Objekte erschöpfend und haben die Zugriffsebene public, wenn ein Nachfolger erstellt wird, sieht er alle diese Funktionen, aber nicht jedes Objekt hat z.B. Eigenschaften zur Steuerung und Textausgabe, etc.... und um dieses Objekt zu verwenden, wird es immer die Basisklasse heranziehen und nicht seine eigene direkt von CObject , natürlich kann es sinnvoll sein, alle Eigenschaften der Basisklasse zu erhalten, Log-Ausgabe, usw., aber dann ist es bei der Erstellung von Erben notwendig, alle Funktionen, die nicht auf die Klasse des Erben angewendet werden können, in der Zugriffsebene private zu virtualisieren und zu verstecken.
Vielleicht ist das der Trick bei deiner Implementierung, wenn ja, dann SUPER!))))))
Übrigens, vielleicht ist die Zugriffsebene protected für einige Funktionen besser geeignet als public, aber hier weiß man es natürlich besser, je nachdem, welchen Sinn man darin sieht.
2. Ja, ich habe mir Ihren Code noch einmal angesehen, Ihr Konzept des Aufbaus einer Bibliothek ist anders, da stimme ich Ihnen zu, die Hauptsache ist, dass Sie, wenn Sie höhere Ebenen von Klassen erstellen, öffentliche Funktionen virtuell erstellen, so dass andere Entwickler Ihre Lösung nutzen können, ohne direkt Bibliotheken zu bearbeiten.
3. Ich habe auch bemerkt, dass Sie String Merge mit + verwenden, in einigen Versionen des Terminals bei großen Merges und mit langen Terminal-Betrieb unvorhersehbare Situationen in einer solchen Implementierung)))
Ich verwende StringFormat und StringAdd Funktionen, die Zuverlässigkeit der Arbeit hat sich erhöht, und auch visuell der Code wird mehr lesbar.
4. Ich wollte auch über die Begrenzung der Länge der erstellten Objekte zu warnen, wenn Rendering, halten Sie es im Auge, ist es besser, einen Hash aus dem Namen zu generieren und auf seiner Grundlage ein Objekt zu erstellen, die Begrenzung hat eine Standard-Funktion, ich erinnere mich nicht genau, aber wahrscheinlich ResourceCreate....
1. Konkret meinte ich den Abschnitt, in dem der Code beginnt"Im weiteren Verlauf des Codes derKlasse werden wir Methoden für den vereinfachten Zugriff auf die Set- und Return-Eigenschaften des Objekts schreiben: ".
So wie ich das verstehe, ist dies eine Beschreibung von Funktionen in der Basisklasse, d.h. sie sind für alle Objekte erschöpfend und haben die Zugriffsebene public, wenn ein Nachfolger erstellt wird, sieht er alle diese Funktionen, aber nicht jedes Objekt hat z.B. Eigenschaften zur Steuerung und Textausgabe, etc.... und um dieses Objekt zu verwenden, wird es immer die Basisklasse heranziehen und nicht seine eigene direkt von CObject , natürlich macht es vielleicht Sinn, alle Funktionen der Basisklasse zu erhalten, Log-Ausgabe, usw., aber dann beim Erstellen von Erben ist es notwendig, alle Funktionen zu virtualisieren und zu verstecken, die nicht auf die Klasse des Erben in der Zugriffsebene private angewendet werden können.
Vielleicht ist das der Trick Ihrer Implementierung, wenn das so ist, dann SUPER!)))))))
Übrigens, vielleicht ist die Zugriffsebene protected für einige Funktionen besser geeignet als public, aber je nach Bedeutung wissen Sie das natürlich besser.
2. Ja, ich habe Ihren Code noch einmal überprüft, Ihr Konzept der Bibliothekskonstruktion ist anders, ich stimme zu, die Hauptsache ist, dass, wenn Sie obere Ebenen von Klassen erstellen, öffentliche Funktionen virtuell erstellen, so dass andere Entwickler Ihre Lösung ohne direkte Bearbeitung von Bibliotheken verwenden können.
3. Ich habe auch bemerkt, dass Sie die Kombination von Zeichenketten mit + verwenden, in einigen Versionen des Terminals bei großen Kombinationen und mit langen Terminalbetrieb unvorhersehbare Situationen in einer solchen Implementierung erhalten wurden))))
Ich verwende die Funktionen StringFormat und StringAdd, die Zuverlässigkeit der Arbeit hat sich erhöht, und auch visuell wird der Code besser lesbar
4. Ich wollte auch über die Begrenzung der Länge der erstellten Objekte zu warnen, wenn Rendering, halten Sie dies im Auge, ist es besser, einen Cache des Namens zu generieren und auf seiner Grundlage ein Objekt zu erstellen, die Begrenzung hat eine Standard-Funktion, ich erinnere mich nicht genau, aber wahrscheinlich ResourceCreate....
1. Die Bekanntheit von Methoden und ihre Redundanz ist der Preis dafür, dass man viele verschiedene Möglichkeiten für den Zugriff auf dieselben Eigenschaften haben möchte. Aber einige Methoden werden in der Tat entweder virtuell sein oder nur in Erben vorgeschrieben. Dies gilt aber wiederum nur für die Objekte der Bibliothek selbst. Wenn man von ihnen erbt, werden leider alle öffentlichen Methoden vererbt.
2. Ich werde darüber nachdenken. Aber eigentlich wird die oberste Ebene des Zugriffs ein weiterer Einstiegspunkt in die Bibliotheken sein, und es werden benutzerdefinierte Funktionen sein, die wiederum bereits implementierte Funktionen der Bibliothek wiederholen, aber für den durchschnittlichen Benutzer verständlicher sein werden - verwenden Sie einfach die Funktion, um das Ergebnis zu erhalten, und nicht, um Logik und Handler zu erfinden - all dies wird innerhalb der Bibliothek geschehen, und die Ausgabe wird Usercase-Funktionen sein, um einfach die notwendigen Informationen zu erhalten.
3. ich habe nichts optimiert (außer der Logik, die ich mir im Voraus ausgedacht habe) und habe kein Profil erstellt. Dies ist für den allerletzten Moment.
4. Ich habe es auf meine Weise überprüft. Dort ist ein langer Objektname möglich. Aber danke, ich werde das im Hinterkopf behalten und es im Auge behalten.
1. Methoden öffentlich und überflüssig zu machen, ist der Preis dafür, dass man viele verschiedene Möglichkeiten für den Zugriff auf dieselben Eigenschaften haben will. Aber einige Methoden werden in der Tat entweder virtuell sein oder nur in Vererbern vorgeschrieben. Aber auch hier gilt, dass dies nur für die Objekte der Bibliothek selbst gilt. Wenn man von ihnen erbt, werden leider alle öffentlichen Methoden vererbt.
2. Ich werde darüber nachdenken. Aber eigentlich wird die oberste Ebene des Zugriffs ein weiterer Einstiegspunkt in Bibliotheken sein, und es werden benutzerdefinierte Funktionen sein, die wiederum bereits implementierte Funktionen der Bibliothek wiederholen, aber für den durchschnittlichen Benutzer verständlicher sein werden - verwenden Sie einfach die Funktion, um das Ergebnis zu erhalten, und nicht, um Logik und Handler zu erfinden - all dies wird innerhalb der Bibliothek geschehen, und die Ausgabe wird Usercase-Funktionen sein, um einfach die notwendigen Informationen zu erhalten.
3. ich habe nichts optimiert (außer der Logik, die ich mir im Voraus ausgedacht habe) und habe kein Profil erstellt. Dies ist für den allerletzten Moment.
4. Ich habe es auf meine Weise überprüft. Dort ist ein langer Objektname möglich. Aber danke, ich behalte es im Hinterkopf und behalte es im Auge.
4. Dieser Fehler könnte behoben worden sein, aber ich bin mir nicht sicher... die Funktion scheint zu funktionieren, aber das Objekt wird nicht erstellt, das ist das Verhalten, wenn die Länge groß ist

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Grafiken in der Bibliothek DoEasy (Teil 83): Die Klasse des abstrakten grafischen Standardobjekts :
In diesem Artikel werde ich die Klasse des abstrakten grafischen Objekts erstellen. Dieses Objekt soll als Grundlage für die Erstellung der Klasse der grafischen Standardobjekte dienen. Grafische Objekte haben mehrere Eigenschaften. Daher muss ich vor der eigentlichen Erstellung der Klasse des abstrakten grafischen Objekts eine Menge Vorarbeit leisten. Dazu gehört das Festlegen der Eigenschaften in den Enumerationen der Bibliothek.
Kompilieren Sie den EA neu und starten Sie ihn.
Verschiedene grafische Objekte werden dem Chart hinzugefügt, während das Journal Meldungen über das Hinzufügen eines neuen Objekts zusammen mit einer kurzen Beschreibung anzeigt:
Wie wir sehen können, funktioniert alles wie erwartet.
Autor: Artyom Trishkin