Darstellung eines Objekts in der Programmierung. - Seite 9

 
JRandomTrader #:

Wie werden die "Anhänge" geschrieben?

In Anwendungssprachen.

 

Teil 2.

Im ersten Teil haben wir über die Bestandteile des Objekts gesprochen, aber in diesem Teil werden wir ihre Beziehungen zueinander betrachten. Die Komponenten selbst werden üblicherweise als"Proto-Blöcke" bezeichnet, da sie keine vollwertigen Objekte sind, sondern einige "Bauelemente" darstellen, die Teil aller Objekte und Systeme sind. Ich möchte Sie an ihre ursprüngliche Liste erinnern:

  • Parameter - eine benannte und numerisch komprimierte Darstellung eines bestimmten Struktursatzes oder Wertes.
  • Ein Satz von Eigenschaften - die Liste der im Objekt enthaltenen Parameter.
  • Konstruktorfunktion- Ein Algorithmus, der ein Objekt auf der Grundlage einer Liste seiner Parameter reproduziert.
  • Form- Kombiniert eine Art von Mengen, die zu einem Objekt gehören, das in zwei oder drei Dimensionen existiert.
  • Zustände-signifikante "Haltepunkte" in der Existenz des Objekts, Werte von Parametern, zu denen das Objekt bei Änderung der Umgebungsbedingungen oder im Prozess der unabhängigen Ausführung eines Programms übergeht .
  • Ereignisse - bedeutsame Veränderungen im Objekt selbst oder in seiner Umgebung.
  • Prozesse - verschiedene Sequenzen von Zustandsänderungen des/der Objekte(s), die sich auswechselnden Bedingungen der äußeren Umgebung oder der unabhängigen Ausführung eines Programms ergeben.

Zusätzlich zu den parametrischen "Körpern" von Form, State, Event und Process fügen wir eine Handler-Funktion hinzu (nennen wir sie einfach Handler), deren Aufgabe es ist, Werte aus ihrem Proto-Block in den parametrischen Satz von Object zu "übersetzen". Beispiel: Ein Label hat 5 Parameter in einer Konstruktorfunktion und diese Menge ist sein parametrischer "Körper". Angenommen, wir haben einen neuen Zustand erfunden und ihn als verschiedene Werte der Anfangsparameter geschrieben, und in dem Moment, in dem wir das Etikett in einen neuen Zustand versetzen müssen, müssen wir eine Funktion aufrufen, die sie von der parametrischen Struktur des Zustands auf den parametrischen "Körper" des Etiketts überträgt. Einfach ausgedrückt, initialisiert dieser Handler die Objektparameter mit den Werten seines Proto-Blocks. Für Process und Form gilt ein ähnliches Prinzip mit der Übertragung von Werten in den Objektkörper, aber die Implementierung ist anders. Umein Ereignis zu verarbeiten, müssen wir jedoch nicht die Werte übertragen, sondern sie überprüfen, so dass eine Bedingungsanweisung als Handler ausreicht.

Es gibt viele Handler in meinem Konzept und sie verdienen eine eigene Klassifizierung, aber das würde die Darstellung zu sehr verkomplizieren, daher werde ich sie nur oberflächlich ansprechen und sie grob in mehrere Gruppen einteilen:

  • "Transporter" - Handler, die Werte von einem Proto-Block zu einem Objekt übertragen (z.B. von einem Zustand, Formular, Prozess zu den Zielparametern eines Objekts).
  • "Bound" - Handler, die Werte von gebundenen (abhängigen) Parametern im System ändern (z.B. - eine parabolische Bewegungsbahn impliziert eine synchrone Änderung von Koordinatenwerten und dies wird durch einen Bound x,y Handler implementiert). Abhängigkeiten in Parameterbeziehungen können durch Formeln ausgedrückt oder durch Bedingungen im Textkörper des Handlers definiert werden.
  • "Assembler" - Handler, die neue Proto-Blöcke "bauen", indem sie sie aus dem parametrischen Körper des Objekts "auspacken" und mit den wichtigen aktuellen Werten speichern, oder andere Proto-Blöcke "klonen", entweder teilweise oder vollständig, und die notwendigen Änderungen an den Kopien vornehmen. Dabei werden aus den Proto-Blöcken entweder tabellarische oder hierarchische Strukturen gebildet, die in speziellen "Modulen" angeordnet sind, in denen sie gespeichert werden.
  • "Modular" - Handler für verschiedene Arten von Modulen, in denen Proto-Blöcke gespeichert sind. *(Auf die "Module" der Proto-Blöcke wird noch eingegangen).

Diese Liste ist keineswegs vollständig und die Namen der Sachbearbeiter sind willkürlich, aber die Aufteilung ihrer Spezialisierung sieht im Allgemeinen wie folgt aus.


Die nächste Ergänzung des Konzepts nach den Handler-Funktionen wären die"Module". Es ist logisch anzunehmen, dass erstellte Proto-Blöcke irgendwo gespeichert und organisiert werden müssen, und es ist auch leicht zu erraten, dass es optimal wäre, die Speicherung von Proto-Blöcken verschiedener Typen zu trennen, um Verwirrung zu vermeiden und den Bearbeitern ein einfaches "Navigieren" durch den wachsenden Inhalt des Objekts zu ermöglichen. Daher erstellen wir "Speicher" oder, wie es noch schöner ist,"Module" von Proto-Blöcken. Für Zustände, Prozesse, Ereignisse und Formen des Objekts werden eigene Module erstellt, in denen sich die Proto-Blöcke befinden werden:

  1. Ordnungsgemäß aufbewahrt.
  2. Multiplizieren.
  3. Abruf durch Handler nach Bedarf.
  4. Link zu Proto-Blöcken in anderen Modulen.

Der vierte Punkt - die "Verknüpfung" von Proto-Blöcken verschiedener Typen - basiert genau auf ihrer "strukturellen Einbindung" ineinander, über die ich im ersten Teil gesprochen habe - Process includes States,... Die Veranstaltung umfasst State,... Ein Prozess umfasst Events,... Ein Staat kann ein Formular enthalten, und so weiter... Wenn wir zum Beispiel ein Ereignismodell in einem separaten Modul konstruieren, dann enthält seine Bedingungshierarchie Ereignisse, die im Modul "Ereignis" gespeichert werden, und diese Ereignisse wiederum enthalten Zustände, die im Modul "Zustände" gespeichert werden. Auf diese Weise schaffen wir nicht nur eine effiziente Art der Speicherung und Verwendung von Protoblöcken, sondern wir setzen auch ihre "strukturelle Inklusivität" um, indem wir sie einfach mit Links zwischen den Modulen miteinander verbinden. Durch willkürliches oder überlegtes Ändern von Verknüpfungen können wir neue Proto-Blöcke aus bestehenden erstellen und das Ereignis- oder Logikmodell im "Verhalten" des Objekts ändern. Eine Änderung der Beziehungen auf der Ebene des Logikmodells (das wiederum in seinem Modul gespeichert wird) kann das Programm vollständig verändern, und dabei müssen wir nichts im Code neu schreiben. Hier sehe ich die Vorteile der modularen Proto-Block-Partitionierung.

Das ist alles für den Moment. Als nächstes werde ich mich mit Ereignis- und Logikmodellen befassen und untersuchen, wie sie aufgebaut sind.

Stellen Sie Fragen, wenn etwas unklar oder interessant ist.


 
Wofür ist das Konzept?
 
Aliaksandr Hryshyn #:
Wofür ist das Konzept?

Dieses Konzept ist ein Versuch, die nächste Stufe der Programmierung zu erreichen, die meiner Meinung nach darin besteht, dass funktionale Systeme vom Computer selbst und nicht vom Menschen "gebaut" (statt geschrieben) werden. Die Software wird in der Lage sein, Programme zu erstellen.

Es gibt jetzt ein neuronales Netz, das auf Githab-Code trainiert wurde, aber das ist nicht das, was ich meine.

 
Es gibt eine Sache, die ich nicht herausfinden kann, ich setze Werte für die Trendlinie ObjectCreate(...), die Linie erscheint nicht auf dem Bildschirm. Bitte helfen Sie mir, wie man ein Objekt anzeigt?
 
Реter Konow #:

Dieses Konzept ist ein Versuch, die nächste Stufe der Programmierung zu erreichen, die meiner Meinung nach darin besteht, dass funktionale Systeme vom Computer selbst und nicht vom Menschen "gebaut" (statt geschrieben) werden. Die Software wird in der Lage sein, Programme zu erstellen.

Es gibt jetzt ein neuronales Netz, das auf Githab-Code trainiert wurde, aber das ist nicht das, was ich meine.

Hallo Peter.
Neben OOP gibt es auch DDD(Domain-driven design)
Nur um Sie auf dem Laufenden zu halten.

 
Nikolai Semko #:

Hallo Peter.
Neben OOP gibt es auch DDD(Domain-driven design)
Nur damit Sie es wissen.

Du verwechselst das Warme mit dem Weichen.

 
Andrei Trukhanovich #:

Du verwechselst das Warme mit dem Weichen.

Sie verwechseln auch heiß mit kalt
 
Vladimir Baskakov #:

Wo ist das Signal, Bruder?

 
Andrei Trukhanovich #:

Wo ist das Signal, Bruder?

Wo ist Ihrer?