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
Ich schaute durch mein neues Prisma, eine Mischung aus OOP und Kernel, auf die in den Programmen beschriebenen Objektsysteme und mir platzte fast das Gehirn. Zunächst einmal habe ich mir meine GUI-Systeme neu angesehen. Durch all diese Objekt-Parameter, Objekt-Zustände, Objekt-Ereignisse und Handler. Da mir die grafische Benutzeroberfläche und die Technologie vertraut sind, erschien mir alles ziemlich klar, aber das System ist sehr komplex. Eine Vielzahl von Parametern, Zuordnungen und Bearbeitern. Ich bin zu dem Schluss gekommen, dass solche Systeme nicht von selbst entstehen können. Und die natürliche Auslese hat hier keine Macht.
Hier ist der Grund dafür:
Jeder Parameter kann eine Anzahl von n abgeleiteten Parametern haben. Nehmen wir an, eine Änderung von X kann unendlich viele abgeleitete Parameter aus den Werten von X zu einem bestimmten Zeitpunkt erzeugen.
Jeder abgeleitete Parameter muss einen Handler und einen Link zu anderen Parametern haben. Kein Parameter existiert für sich allein. Der Link ist obligatorisch.
Die Kopplung kann unterschiedlich sein, und folglich kann eine Vielzahl von Bearbeitern - Filter, Umwerter, Wandler - auftreten.
Es gibt unendlich viele Ereignisse, die für die Systeme als bedeutsam angesehen werden können. Jede hat ihre eigenen Eigenschaften, Links und Handler. Es gibt zahllose Varianten.
Ohne ein Konzept kann also kein System entstehen. (Höchstwahrscheinlich).
Es ist nur unklar, wie das Leben auf der Erde entstanden ist...
Hier ein weiteres Beispiel:
Betrachten Sie ein System zum Verschieben eines Fensters mit Steuerelementen in einem Diagramm.
Mit diesem System können wir also die Koordinaten eines Fensters und seiner Objekte ändern, wenn der Cursor den Griff des Fensters ergreift. Um das alles zu bewegen, müssen wir es mit den ObjectSetInteger-Handler-Funktionen verknüpfen, die die Position des MT-Objekts im Diagramm ändern.
Es handelt sich um die Implementierung einer einzigen GUI-Funktion durch die Verknüpfung spezieller Systemblöcke - Objektparameter, Objekthandler usw...
Ein solches System im Kernel zu bauen, ist kein bisschen einfacher (oder vielleicht sogar schwieriger) als normalen Code zu schreiben, ohne alles in ein Objekt zu verwandeln. Aber ich werde weiter graben...
ZS: Ich habe vergessen, hinzuzufügen, dass wir, um das Fenster zu verschieben, auch ein Ereignisobjekt "basteln" müssen, das den Fenstergriff und die Cursorbewegung sperrt. Und dieses Ereignis-Objekt, verbinden Sie es mit dem Objekt-Handler von Cursor x,y-Werte (das schreibt die Differenz in abgeleitete Parameter), und es würde nur auf Signal dieses Ereignisses zu arbeiten.
Und für jedes Ereignisobjekt müssen Sie einen Objekthandler erstellen und ihn an das Objekt binden.
Jeder Object-Handler hat seine eigenen Eigenschaften, und seine Werte werden von ihm verwendet, wenn er mit Parametern oder Ereignissen arbeitet. Deshalb muss es eine Vorlage geben, sonst verzettelt man sich bei der Erstellung.)
Hier ein weiteres Beispiel:
Betrachten Sie ein System zum Verschieben eines Fensters mit Steuerelementen in einem Diagramm.
Mit diesem System können wir also die Koordinaten eines Fensters und seiner Objekte ändern, wenn der Cursor den Griff des Fensters ergreift. Um das alles zu bewegen, müssen wir es mit den ObjectSetInteger-Handler-Funktionen verknüpfen, die die Position des MT-Objekts im Diagramm ändern.
Es handelt sich um die Implementierung einer einzigen GUI-Funktion durch die Verknüpfung spezieller Systemblöcke - Objektparameter, Objekthandler usw...
Ein solches System im Kernel zu bauen, ist kein bisschen einfacher (oder vielleicht sogar schwieriger) als normalen Code zu schreiben, ohne alles in ein Objekt zu verwandeln. Aber ich werde weiter graben...
ZS: Ich habe vergessen, hinzuzufügen, dass wir, um das Fenster zu verschieben, auch ein Event-Objekt "basteln" müssen, das den Fenstergriff und die Bewegung des Cursors sperrt. Und dieses Ereignis-Objekt, verbinden Sie es mit dem Objekt-Handler von Cursor x,y-Werte (das schreibt die Differenz in abgeleitete Parameter), und es würde nur auf Signal dieses Ereignisses zu arbeiten.
Und für jedes Ereignisobjekt müssen Sie einen Objekthandler erstellen und ihn an das Objekt binden.
Jeder Object-Handler hat seine eigenen Eigenschaften, und seine Werte werden von ihm verwendet, wenn er mit Parametern oder Ereignissen arbeitet. Deshalb muss es eine Vorlage geben, sonst verzettelt man sich bei der Erstellung).
Kompliziert. Ungerechtfertigt kompliziert.
Das ist richtig.
Die Bindung zwischen abgeleiteten Parametern, die die x,y-Differenz des Cursors enthalten, und Formularobjekten (die sich in der Kette befinden) hat einen Handler in der Mitte, der eine serielle Verbindung zu den x,y-Parametern jedes Formularobjekts herstellen kann. Das heißt, die Bindung von Parametern über den Serial Connection Handler ermöglicht es, die Bindung jedes Formularobjekts durch abgeleitete Parameter zu ersetzen, die Werte der Differenz x,y übergeben. Ich habe auch darüber nachgedacht.
In meiner GUI ist das Verschieben von Fenstern in einer Funktion implementiert, die folgendes tut:
(1) Ereignisprüfer für Fensterhandle-Klickereignis
(2) Ereignis "Cursor bewegen
(3) Berechnung der Differenz zwischen den aktuellen Cursor-Koordinaten und den früheren Koordinaten des Cursors
(4) Durchlaufen der Fensterobjekte und Ändern ihrer Koordinaten durch Anpassen der Differenz der Cursorposition.
(5) Aufruf des ObjectSetInteger, um das МТ-Objekt des Fensterformulars (Canvas) entlang des Diagramms um den angegebenen Abstand zu verschieben.
Die Umsetzung innerhalb der Funktion ist also korrekt. Die Implementierung durch Object Handlers, Object Parameters und Object Bindings wirkt vor diesem Hintergrund unbeholfen. Aber gehen wir der Sache auf den Grund...
Das ist richtig.
Die Zuordnung zwischen den abgeleiteten Parametern, die die x,y-Differenz des Cursors enthalten, und den Formularobjekten (die sich in der Kette befinden) hat einen Handler in der Mitte, der eine serielle Verbindung zu den x,y-Parametern der einzelnen Formularobjekte herstellen kann. Das heißt, die Bindung von Parametern über den Serial Connection Handler ermöglicht es, die Bindung jedes Formularobjekts durch abgeleitete Parameter zu ersetzen, die Werte der Differenz x,y übergeben. Ich habe auch darüber nachgedacht.
In meiner GUI ist das Verschieben von Fenstern in einer Funktion implementiert, die folgendes tut:
(1) Ereignisprüfer für Fensterhandle-Klickereignis
(2) Ereignis "Cursor bewegen
(3) Berechnung der Differenz zwischen den aktuellen Cursorkoordinaten und den früheren Koordinaten des Cursors
(4) Durchlaufen der Fensterobjekte und Ändern ihrer Koordinaten durch Anpassen der Differenz der Cursorposition.
(5) Aufruf des ObjectSetInteger, um das МТ-Objekt des Fensterformulars (Canvas) entlang des Diagramms um den angegebenen Abstand zu verschieben.
Die Umsetzung innerhalb der Funktion ist also korrekt. Die Implementierung durch Objekt-Handler, Objekt-Parameter und Objekt-Bindings sieht vor diesem Hintergrund unbeholfen aus. Aber gehen wir der Sache auf den Grund...
Ja, denn Sie brauchen diese Handler nicht vom Objekt zu trennen. Die Klasse, die die Cursor-Koordinaten zurückgibt, kann statisch gemacht werden - sie wird jeder Klasse im Programm zur Verfügung stehen, und das Abrufen der Koordinaten und die Reaktion darauf sollte in jedem Objekt implementiert werden. Aber nur das Hauptformularobjekt sollte diese Handler aufrufen. Für alle anderen Formularobjekte reicht es dann aus, neue Koordinaten anzugeben und neu zu zeichnen. Innerhalb des Formularobjekts befindet sich eine Liste mit allen Objekten. Das Formularobjekt hat eine Änderung seiner Koordinaten definiert - es setzt neue Werte für seine Koordinaten, geht seine Liste von Objekten durch und ruft Methoden auf, um die Koordinaten jedes Objekts in seiner Liste zu setzen. Gleichzeitig tut jedes nachfolgende Objekt dasselbe, wenn sich seine Koordinaten ändern - es durchsucht seine Liste von Objekten und befiehlt ihnen, ihre Koordinaten zu ändern. Die Objekte in den Listen werden in der Reihenfolge angeordnet, in der sie gezeichnet werden (Z-Reihenfolge). Mit anderen Worten, jedes Objekt hat seine eigene Methode, um die Koordinaten zu ändern, aber sie ist auf die gleiche Weise implementiert - sie durchsucht die Liste aller "freundlichen" Objekte und ruft für jedes von ihnen die gleiche Methode auf. Indem wir diese Methode einmal für das Hauptformularobjekt aufrufen, starten wir automatisch einen Koordinatenwechsel für alle Objekte im Formular. Wenn die Liste der "freundlichen" Objekte des Formularobjekts abgearbeitet ist, ruft es seine Methode zum Neuzeichnen des Diagramms auf, die für alle geänderten Objekte dieselbe ist.
...
Dies ist die Standard-OOP-Ansicht des Fensterbewegungsmechanismus. Ich zeige Ihnen eine andere. Um dies zu tun, machen Sie Ihren Kopf für eine Sekunde frei und folgen Sie einfach meinen Gedanken.
Das ist das Ende der Geschichte...
Wir sahen uns die Matrix von außen an und staunten! "Wir haben ein Objektsystem geschaffen!")
ZS. Beachten Sie, dass alles in einer Array-Matrix erstellt werden kann. Und die Array-Matrix ist der Kern. Und Entitäten darin - die echten Objekte. Und Parameter, und Ereignisse, und Bindungen, und Eigenschaften, und Handler. Es gibt unzählige Systeme, die im Kernel aus diesen Basisdingen konstruiert werden können.
Eine Scheinfortsetzung...
11. Irgendwie haben die erstgeborenen Parameter beschlossen, einer Mode zu folgen. Sie fanden heraus, dass es irgendwo in der Matrix eine Eigenschaftsmesse gibt, und einen bestimmten Platz in der Neuheit. Es soll drei Eigenschaften haben. "Dimensionen" werden genannt. Diese Eigenschaften haben einen vermeintlich unendlichen Wertebereich, und als Bonus verraten sie eine weitere "Parameterzeit". Die Parameter kamen zur Messe und nahmen die Eigenschaften x,y,x_size,y_size an. Sie sagen, sie wollen eine Muschel im Weltraum bauen. Und sie haben auch Farbe genommen. Sie kehrten zurück und begannen damit, die neuen Häuser einzurichten. Sie modellierten und modellierten einige räumliche Umhüllungen, bis sie es leid waren. Sie wuchsen enorm, dann brachen sie zusammen... Dann färbten sie sich ein und entspannten sich. Sie begannen zu überlegen, was sie als nächstes tun sollten. Und dann haben sie sich die Zeit-Eigenschafts-Box angesehen. Mal sehen, was es ist... Sie öffneten es, hängten es an sich, aber sie berechneten die Werte nicht, und in einem Augenblick löste es sich ins Leere auf. Schließlich ist die Zeit ein Parameter, mit dem man sehr vorsichtig umgehen muss...
Eine Scheinfortsetzung...
11. Irgendwie haben die erstgeborenen Parameter beschlossen, einer Mode zu folgen. Sie fanden heraus, dass es irgendwo in der Matrix eine Eigenschaftsmesse gibt, und einen bestimmten Platz in der Neuheit. Es soll drei Eigenschaften haben. "Dimensionen" werden genannt. Diese Eigenschaften haben einen vermeintlich unendlichen Wertebereich, und als Bonus verraten sie eine weitere "Parameterzeit". Die Parameter kamen zur Messe und nahmen die Eigenschaften x,y,x_size,y_size an. Sie sagen, sie wollen eine Muschel im Weltraum bauen. Und sie nahmen Farbe an. Sie kehrten zurück und begannen damit, die neuen Häuser einzurichten. Sie modellierten und modellierten einige räumliche Umhüllungen, bis sie es leid waren. Sie wuchsen enorm, dann brachen sie zusammen... Dann färbten sie sich ein und entspannten sich. Sie begannen zu überlegen, was sie als nächstes tun sollten. Und dann haben sie sich die Zeit-Eigenschafts-Box angesehen. Mal sehen, was es ist... Sie öffneten es, hängten es an sich, aber sie berechneten die Werte nicht, und in einem Augenblick löste es sich ins Leere auf. Schließlich ist die Zeit ein Parameter, mit dem man sehr vorsichtig umgehen muss...
Und die ersten zehn waren nicht seriös?
Ich für meinen Teil kann nicht lesen, ohne zu lachen.
...
Diese ganze "Objektivität" ist sehr verwirrend, finden Sie nicht auch... Damit muss man vorsichtig sein. Nikolai Semko hatte Recht, was die Nähe von Genie und Schizophrenie angeht. Es ist möglich, "durchzudrehen". Es gibt einige Dinge, die man besser nicht versteht. Manche Türen müssen für unser Bewusstsein immer verschlossen bleiben. Wie es in einem Film heißt: "Der gefährlichste Parasit ist eine Idee. Wenn es einmal im Gehirn ist, ist es unmöglich, es wieder herauszubekommen." Die Matrix, von der ich gesprochen habe, ist gefährlich für den Geist. Es ist leicht, sich darin zu verlieren und für immer verloren zu gehen. Seien wir vorsichtig.)))