Eine Frage an die OOP-Experten. - Seite 25

 
Igor Makanu:

das Konzept von OOP impliziert, dass man einfach nicht schreibt - man darf die Implementierung der Methode nicht kennen (in Ihrem Beispiel return(SymbolSelect(m_name,select))

Stellen Sie sich das anstelle dieser Zeile vor:

Sie müssen eine Menge Abfragen, verschiedene Prüfungen usw. durchführen. - Sie werden Zeit brauchen, um Ihre eigene Bibliothek zu schreiben und das Material zu studieren.

Angenommen, Ihre Aufgabe besteht darin, nur eine Methode der vorgefertigten Lösung in Form einer Klasse zu verwenden - Sie erstellen eine Instanz der Klasse (Objekt) und verwenden die vorgefertigte Methode Select(const bool select)

Wenn Sie solche Operationen nicht durchführen wollen, geben Sie Speicher frei = löschen Sie das Objekt

Angenommen, Ihre Aufgabe ist es, eine Schaltfläche anzuzeigen, durch deren Betätigung Sie das Symbol in der Marktbeobachtung aktivieren/deaktivieren ---> erstellen Sie Ihre Klasse und kapseln Sie die vorgefertigte Klasse button und die vorgefertigte Klasse CSymbolInfo - die Aufgabe ist erledigt

Das OOP-Paradigma gibt nur allgemeine Informationen darüber, was mit einer Klasse gemacht werden kann - wenn Sie CSymbolInfo nicht kapseln wollen, dann erben Sie Ihre Klasse von ihr

Ich glaube, ich verstehe es nicht und ich akzeptiere es nicht. Wenn Sie eine bestimmte Aufgabe haben, die Sie nicht ohne all diese Vorbehalte erledigen können, dann wird die "geistige Erleuchtung" und das Verständnis kommen. Aber aus meiner Sicht sind ausgefallene Gadgetsnicht immer gerechtfertigt. Nicht immer heißt nicht nie. Ich bin froh, Ctrade Klasse zu verwenden, aber ich akzeptiere es nicht, wie ich oben erwähnt. Wenn die Beschreibung der Funktion SymbolSelect in der Dokumentation nicht schwer zu finden ist, ist es in SB schon schwierig, die Beschreibung zu finden.

Igor Makanu:

HH: "auf meine Finger", das Wesen von OOP ist eine schnelle Lösung für ein gegebenes Problem ohne Kenntnis der Implementierung.

In diesem Fall muss man nicht die Implementierung kennen, sondern wissen, wie man die gewünschte Methode aufruft, wo man sie findet usw. Ist dies eine Art von Sprache in einer Programmiersprache?

Man kann verstehen, wenn ein Projekt mehrere Instanzen eines Objekts benötigt. Aber bis jetzt habe ich noch keine derartige Implementierung gesehen, abgesehen von der oben erwähnten Demonstration von Artem. In diesem Fall ist es klar, dass es besser, leichter, einfacher ist, aber ich habe es nicht ganz verstanden, gerade weil ich es nicht brauche, weil ich keine Aufgabe habe. Es macht keinen Sinn, das Objekt für eine einzige Verwendung von mql5-Funktionen zu ändern. Das ist meine Argumentation.

 
Alexey Viktorov:

In diesem Fall muss man nicht die Implementierung kennen, sondern wissen, wie man die richtige Methode aufruft, wo sie zu finden ist und so weiter. Ist dies eine Art von Sprache in einer Programmiersprache?

Schauen Sie in die Dokumentation, alles, was öffentlich zugänglich ist, wird sozusagen von Handbüchern begleitet, Ethik

es ist kein Stil, es ist ein Paradigma! - ein Konzept, Regeln der Etikette, niemand ist gezwungen, so zu schreiben, aber aus irgendeinem Grund ist es der häufigste Stil

 
Igor Makanu:

Das Wesen von OOP besteht darin, ein bestimmtes Problem schnell zu lösen, ohne die Implementierung zu kennen.

Sie können eine Funktion aufrufen, indem Sie ihr eine Struktur mit Daten übergeben, und erhalten eine ebenso schnelle Lösung, ohne die Implementierung dieser Funktion zu kennen.
 
Alexey Navoykov:
Sie können eine Funktion aufrufen und ihr eine Struktur mit Daten übergeben, und Sie erhalten eine ebenso schnelle Lösung, ohne die Implementierung der Funktion zu kennen.

Ja, aber Ihre Methode wird auf diese begrenzt werden, in OOP können Sie auch erben - auch ohne zu wissen, die Umsetzung und fügen Sie Ihre Aufgabe, das erste, was in den Sinn kommt - Button mit abgerundeten Kanten, gibt es Tonnen von Beispielen im Web

SZZ: und die Logik der Entfaltung eines Objekts durch Konstruktoren ist ziemlich praktisch.

 
Реter Konow:

Eine Klasse ist eine Beschreibung eines Objekts. Gut. Enthält die Eigenschaften und Funktionen des Objekts. Gut. All dies ist geordnet, offen oder geschützt.

Dann ist das OBJEKT selbst nicht mehr im Blickfeld. Sie steht im Zusammenhang mit dem Unterricht. Im Zusammenhang mit seinem Namen und seiner Beschreibung. Das heißt, in OOP, das Objekt, ist genau eine Reihe von Attributen (nicht nur Eigenschaften, sondern auch funktionale Elemente - Methoden), aber mehr bestellt und gekapselt, als ich habe. (Das ergibt für mich mehr Sinn).

Peter, googeln Sie endlich nach Klassen, was sie im Zusammenhang mit Speicherzuweisung und Methodenaufrufen sind, d.h. was das alles für den Compiler bedeutet. Die meisten Fragen werden sich danach von selbst erledigen.
 
Petros Shatakhtsyan:

Man muss Bücher lesen, um sie zu verstehen. Mindestens VC++ in 21 Tagen.

Ich empfehle Ihnen, die MFC zum ersten Mal zu verwenden, eine Windows-Anwendung auf der Basis von CDialog zu erstellen und alle Arten von Objekten zu erzeugen, um zu sehen, wie einfach sie verwaltet werden.

Danach werden Sie Ihr Vorhaben verwerfen. Leider.

Nun, das ist unwahrscheinlich. Der Punkt ist, dass ich sehr wenige konzeptionelle Unterschiede zwischen meinem Ansatz und OOP gefunden habe. Mein Ansatz ist ebenfalls objektorientiert. Objekte sind im Kernel gekapselt und haben eine sehr spezifische Darstellung. Sie sind durch Zeiger verbunden und bilden Komplexe - Elemente, Fenster... Wenn Sie über die Grafik hinausgehen und eine andere Form des Kerns schaffen, die mehr Vielfalt beinhaltet, wird sie genauso gut sein wie in OOP.

Der Unterschied zwischen den Ansätzen liegt in der Art, wie der Code geschrieben wird, in der Syntax und in den Methoden zur Verteilung der Funktionalität. Bei meinem Ansatz tendiert die Funktionalität dazu, zu verschmelzen, bei OOP tendiert sie dazu, sich aufzuspalten. Die Zusammenführung von Funktionen garantiert eine höhere Effizienz des Systems und eine geringere Menge an Syntax, während die Aufteilung von Funktionen die Portabilität des Codes erleichtert. Sie ermöglicht das Einstecken von Modulen. Im Allgemeinen sind dies die Unterschiede.

Natürlich verfügt mein Ansatz noch nicht über diese umfassende "Objektivität". Aber ich habe schon eine Idee, wie man das Problem lösen kann. Ein Kernel ist von einem einzigen Typ, was die in ihm gespeicherten Eigenschaften einschränkt, aber ein Kernel muss nicht zwangsläufig eine einzige Matrix sein. Es kann sich um einen Komplex von Kernen handeln. Der Hauptvorteil ist die digitale Darstellung von Objekten, die keine lange Beschreibung, keine zusätzliche Syntax und keine Fragmentierung der Funktionalität erfordert.

Aber OOP ist für mich sehr interessant. Ich werde daraus lernen.)
 
Vladimir Simakov:
Peter, schließlich google Klassen, was sie im Zusammenhang mit der Speicherzuweisung und den Methodenaufrufen sind, d.h. was der Compiler daraus macht. Die meisten Fragen werden sich danach von selbst erledigen.
Gut. Ich werde es auf jeden Fall nachschlagen.
 

Über das Konzept der OOP ist viel nachgedacht worden, und die Sache ist die:

Abstrahieren wir von der Syntax und den Fachbegriffen und belassen wir es bei den Konzepten "Klasse", "Objekt", "Eigenschaft", "Kapselung", "Polymorphismus" und "Vererbung". Ich werde die philosophische "Wurzel" des Konzepts beschreiben.

Die Realität wird vom Bewusstsein durch die Prismen "Raum", "Zeit" und "Materie" wahrgenommen (so funktionieren die Sinnesorgane), und das "Objekt" ist ein diskretes Ergebnis ihrer kontinuierlichen Interaktion.

Die Vielfalt der Interaktionsformen erzeugt eine Vielzahl von Objekten, die vom Unbewussten des Subjekts in ein bestimmtes "Gerüst" "gepflanzt" werden. Dieses Gerüst hat eine verzweigte, kaskadenartige Struktur und ist in das Unbewusste "eingebaut", es ist einer seiner "Archetypen". Der Rahmen nimmt neue und neue Objekte (Informationen über sie) auf, die über seine gesamte Struktur verteilt sind. Daher kommt das Konzept der OOP.Es handelt sich um eine bewusste Verteilung und Bindung von Objekten, die den "Algorithmus" des Unbewussten nachahmt. Wenn man die Methoden des eigenen Denkens beherrscht, kann das Subjekt dessen Arbeit im "Tracing"-Mechanismus des Gehirns - dem Computer - simulieren. Auch wenn ein Computer nur eine erbärmliche Parodie eines Gehirns ist, so nimmt der Mensch selbst doch nur Schatten der objektiven Welt wahr. Die Kaskade, der verzweigte Archetyp, ist ein "Muster" der Verteilung von Objekten, Eigenschaften, Prozessen und aller Informationen in unserem Gedächtnis im Allgemeinen. Es handelt sich um ein biologisches Werkzeug zur Vereinfachung der Realitätswahrnehmung und zur Strukturierung eines Modells der uns umgebenden Welt. Es ist uns von der Natur gegeben. Das Bewusstsein für unseren eigenen "natürlichen" (d.h. unbewussten) Informationsverarbeitungsmechanismus ist eine Ebene des Selbstbewusstseins, die für dieAnwendung von OOP notwendig ist.

Betrachten Sie diesen impliziten, biologischen, "baumartigen" Archetyp, der das Erinnern, Lernen und die Wahrnehmung erleichtert, im Zusammenhang mit seiner "künstlichen" Anwendung.In der OOP "produzieren" wir Objekte, indem wir ihre Beschreibungen in Klassen kapseln, in denen wir ihre Eigenschaften und Werte festlegen. Die Beziehungen zwischen den Objekten spiegeln sich in ihrer Klassifizierung wider und werden durch die Vererbung von Eigenschaften und Methoden von global bis privat umgesetzt. In der Praxis sieht das so aus: Jedes private Objekt ist nur ein Objekt und hat daher alle Eigenschaften eines Objekts + seine privaten Eigenschaften. Abgeleitete Objekte haben ihre privaten Eigenschaften wie ihre gemeinsamen Eigenschaften, aber sie haben auch ihre privaten Eigenschaften. Außerdem kann sich die Kette unbegrenzt verzweigen. Das Gleiche gilt für die Methoden von Objekten. Eine Methode spiegelt eine Aktion, eine Interaktion, einen Prozess, eine Veränderung von Zuständen wider. Methoden von Objekten sind wie Eigenschaften von allgemein bis privat verteilt. Wenn es einen allgemeinen Prozess gibt, wird jede diskrete Form ihre eigenen Eigenschaften haben. Und das ist Polymorphismus. Das heißt, im Gegensatz zur Überladung bietet Polymorphismus eine andere private Implementierung einer zugrunde liegenden Funktion, während der zugrunde liegende Mechanismus beibehalten wird. Dies ist die "funktionale" Vererbung.

Wie wir sehen, ist "baumartig" in der OOP allgegenwärtig; welche Schemata man sich auch immer ausdenkt, man wird immer einen "Baum" erhalten). Aber das ist richtig, denn wir kopieren nur unsere eigenen unbewussten Muster der Informationsverarbeitung.

 
Реter Konow:

Ich habe viel über das Konzept von OOP nachgedacht und das ist es:

...

Schwierig.

Peter, du musst in die Politik gehen. Solche Talente sind hier nicht gefragt - viel zu sagen, klug und unverständlich, und über nichts.

 
Artyom Trishkin:

...

Lassen Sie mich das erklären. Unterm Strich bedeutet dies, dass OOP die unbewusste Verteilung von Informationen in unserem Gedächtnis nachbildet. Die Informationen sind kaskadenförmig und baumartig angeordnet. Dies wird durch den unbewussten Archetyp (ein verborgener Mechanismus) bedingt. Die Menschen haben diesen Mechanismus "gespürt" und begonnen, ihn bei der Programmierung erfolgreich anzuwenden. OOP implementiert die Übertragung von gemeinsamen Eigenschaften und Funktionen durch Vererbungsketten nach dem gleichen Schema wie unser Unbewusstes.


Wenn wir besser verstehen, wie unser bewusster und unbewusster Verstand funktioniert, werden wir in der Lage sein, diesen Mechanismus im Computer nachzubilden. Ich habe mich einfach von den technischen Details gelöst und mich auf den Kern des Konzepts konzentriert.

Grund der Beschwerde: