Eine Frage an die OOP-Experten. - Seite 42

 
Artyom Trishkin:
Klare Klassifizierung. Wenn wir sehen, dass mehrere Objekte die gleichen Eigenschaften haben, ist es logisch, diese Eigenschaften in einem übergeordneten Objekt zu beschreiben.
Wenn ein untergeordnetes Objekt eine Eigenschaft eines übergeordneten Objekts mit demselben Namen außer Kraft setzt, muss diese Eigenschaft virtuell sein.

Was ist, wenn das Objekt Eigenschaften und Methoden von verschiedenen Klassen erbt?

Wenn es sich um eine wachsende und sich dynamisch neu aufbauende Datenstruktur (Wissensdatenbank) handelt, müssen wir "geerbtes Material" von bereits vorbereiteten Objekten verwenden, um neue Objekte zu erstellen. In diesem Fall werden die Objekte durch Mehrfachvererbung synthetisiert, wobei zusätzliches vererbtes Material aufgenommen wird. Und wird daher nicht richtig funktionieren. Das heißt, wir werden zu degenerierten Objekten kommen, sobald die Mehrfachvererbung beginnt. Das ist das Problem...

 
Реter Konow:

Was ist, wenn ein Objekt Eigenschaften und Methoden von verschiedenen Klassen erbt?

Wenn wir es mit einer wachsenden und sich dynamisch rekonstruierenden Datenstruktur (Wissensdatenbank) zu tun haben, müssen wir "geerbtes Material" von bereits vorbereiteten Objekten verwenden, um neue zu erstellen. In diesem Fall werden die Objekte durch Mehrfachvererbung synthetisiert, wobei zusätzliches vererbtes Material aufgenommen wird. Und wird daher nicht richtig funktionieren. Das heißt, wir werden zu degenerierten Objekten kommen, sobald die Mehrfachvererbung beginnt. Das ist das Problem...

Verwenden Sie in einem neuen Objekt nicht die Eigenschaften von "übrig gebliebenen" Eltern. Ich sehe allerdings, dass Sie etwas missverstanden haben. Warum sollte man ein Objekt von jemandem "gebären", dessen Eigenschaften nicht benötigt werden?
 
fxsaber:

Das entsprechende Instrumentarium wird bereitgestellt. Niemand außer dem Autor braucht sie.

Und es gibt auch einen Bedarf dafür. Aber es wird auch niemand brauchen.

Dasselbe gilt für KB, Artikel usw.


Die Entwickler haben benutzerdefinierte Zeichen, Dienste, Ticks, Caches, Pips, .... eingeführt. Ich bin überrascht, dass sie das getan haben, denn es sind nur wenige, wenn überhaupt, die es brauchen.

Nehmen wir den neuen Pips-Modus des Testers. Wer braucht sie? -In der Tat niemand! Es wurde als Vision einer signifikanten algorithmischen Optimierung des Testers seitens seiner Entwickler geboren. Wer hat seinen Nutzen verstanden? -Niemand! Und so in allem.

Jetzt wird der Tester erheblich verändert. Aber diese Änderungen nützen niemandem. Nun, es gibt Geeks, die das zu schätzen wissen. In seiner jetzigen Form ist MT5-Tester cooler als alle seine Konkurrenten. Aber aus irgendeinem Grund wollen sie es noch cooler machen. Niemand ist in der Lage, die gegenwärtigen oder gar die zukünftigen Merkmale zu beurteilen. Die Entwickler sind ihren Nutzern um einiges voraus. Und die Motivation für die Veränderungen im Tester ist eindeutig nicht die Monetarisierung (das kann es einfach nicht sein, wenn es niemand versteht), sondern der innere Wunsch, etwas noch nie Dagewesenes zu tun.

+
 
Artyom Trishkin:
Verwenden Sie im neuen Objekt keine Eigenschaften von "übrig gebliebenen" Eltern. Ich sehe allerdings ein Missverständnis bei Ihnen. Warum sollte man ein Objekt "gebären", dessen Eigenschaften nicht benötigt werden?

Notwendig, aber nicht vollständig. Das neue Objekt verwendet 3 Eigenschaften der Klasse A, 5 Eigenschaften der Klasse B und 3 Methoden von drei anderen Klassen.

Was soll sie mit den restlichen Eigenschaften dieser Klassen machen? Wie kann man es ihnen verwehren?

 
Реter Konow:

Notwendig, aber nicht vollständig. Das neue Objekt verwendet 3 Eigenschaften der Klasse A, 5 Eigenschaften der Klasse B und 3 Methoden von drei anderen Klassen.

Was soll sie mit den restlichen Eigenschaften dieser Klassen machen? Wie kann man es ihnen verwehren?

Packen Sie 3 Eigenschaften der Klasse A in ein Objekt. Vererben Sie von ihm. Oder Sie können nicht erben und das Objekt mit drei Eigenschaften zu einer Eigenschaft des gewünschten Objekts machen.
Es gibt ein Kreislaufsystem - ein Objekt mit mehreren Objekten. Es gibt ein Herzobjekt als Teil des Kreislaufsystems.
Wenn für ein neues Objekt ein Herz benötigt wird, dann erbt es vom Herz-Objekt, nicht vom Kreislaufsystem.
 
Artyom Trishkin:
Es gibt ein Kreislaufsystem - ein Objekt mit vielen Objekten. Es gibt ein Herzobjekt als Teil des Kreislaufsystems.
Wenn für ein neues Objekt ein Herz benötigt wird, dann erbt es vom Herz-Objekt, nicht vom Kreislaufsystem.

Wenn ein neues Objekt ein Herz benötigt, muss es nicht von einem Herz erben. Das Herz sollte Teil des neuen Objekts werden, als Mitglied.

Vererben, wenn das neue Objekt ein Vorgängerobjekt ist. Und verwenden Sie Inklusion, wenn das neue Objekt MIT dem anderen ist.

 
Artyom Trishkin:
Packe 3 Eigenschaften der Klasse A in ein Objekt. Vererben Sie von ihm. Oder Sie können nicht erben, sondern ein Objekt mit drei Eigenschaften zu einer Eigenschaft des gewünschten Objekts machen.

Drei Eigenschaften, die zu einem Objekt kombiniert und zu einer Eigenschaft eines neuen Objekts gemacht werden können? Das ist etwas, worüber man nachdenken sollte...

Die Vererbung über viele lange Ketten führt jedoch bei jedem Schritt zu ähnlichen Problemen. Je länger und vielfältiger die Vererbungsketten sind, desto mehr "Vermischung" von Eigenschaften und Methoden werden die letzten Generationen von Objekten erhalten und desto schwieriger wird es, ihre individuelle Kette zum Basisobjekt abzuleiten.

Wenn nicht geerbt wird, gibt es keinen Zugriff auf das Basisobjekt. Bei der Vererbung verhindert die mehrfache "Elternschaft" von Objekten die Rückverfolgbarkeit ihrer direkten Kette zum Basisobjekt.

Es wird immer schwieriger, ihre eigenen Eigenschaften und Methoden von anderen Klassen zu isolieren.

 
Реter Konow:

Drei Eigenschaften, die zu einem Objekt kombiniert und zu einer Eigenschaft eines neuen Objekts gemacht werden können? Das ist etwas, worüber man nachdenken sollte...

Die Vererbung über viele lange Ketten führt jedoch bei jedem Schritt zu ähnlichen Problemen. Je länger und vielfältiger die Vererbungsketten sind, desto mehr "Vermischung" von Eigenschaften und Methoden werden die letzten Generationen von Objekten erhalten und desto schwieriger wird es, ihre individuelle Kette zum Basisobjekt abzuleiten.

Wenn nicht geerbt wird, gibt es keinen Zugriff auf das Basisobjekt. Bei der Vererbung verhindert die mehrfache "Elternschaft" von Objekten die Rückverfolgbarkeit ihrer direkten Kette zum Basisobjekt.

Es wird immer schwieriger, ihre eigenen Eigenschaften und Methoden aus anderen Klassen zu extrahieren.

Peter, ich empfehle Ihnen dringend

https://en.wikipedia.org/wiki/Code_Complete

Code Complete - Wikipedia
Code Complete - Wikipedia
  • en.wikipedia.org
Code Complete
 
Andrey Barinov:

Wenn das Herz in dem neuen Objekt benötigt wird, ist es nicht notwendig, von dem Herz zu erben. Das Herz sollte Teil des neuen Objekts werden, wie ein Mitglied.

Vererben, wenn das neue Objekt das Vorgängerobjekt ist. Und verwenden Sie Inklusion, wenn das neue Objekt ein anderes BINDET.

Das ist nicht das, was ich meinte. Sie wissen, was ich meine. Wenn Sie ein modifiziertes Herz mit den Eigenschaften des Elternteils wünschen.
 
Реter Konow:

Drei Eigenschaften, die zu einem Objekt kombiniert und zu einer Eigenschaft eines neuen Objekts gemacht werden können? Das ist etwas, worüber man nachdenken sollte...

Die Vererbung über viele lange Ketten führt jedoch bei jedem Schritt zu ähnlichen Problemen. Je länger und vielfältiger die Vererbungsketten sind, desto mehr "Vermischung" von Eigenschaften und Methoden werden die letzten Generationen von Objekten erhalten und desto schwieriger wird es, ihre individuelle Kette zum Basisobjekt abzuleiten.

Wenn nicht geerbt wird, gibt es keinen Zugriff auf das Basisobjekt. Bei der Vererbung verhindert die mehrfache "Elternschaft" von Objekten die Rückverfolgbarkeit ihrer direkten Kette zum Basisobjekt.

Es wird immer schwieriger, ihre eigenen Eigenschaften und Methoden von anderen Klassen zu isolieren.

Peter. Deshalb sage ich: keine sinnlose Vererbung. Eine klare Trennung und Klassifizierung.