Eine Frage an die OOP-Experten. - Seite 43

 
Andrey Barinov:

Peter, ich empfehle dringend

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

Ich danke Ihnen. Ich werde versuchen, es zu bekommen und zu lesen.
 
Artyom Trishkin:
Peter. Deshalb sage ich: Kein Bedarf an sinnloser Vererbung. Klare Trennung und Klassifizierung.

Hier ist ein Beispiel:

Die Kategorie "Obst" ist das Basisobjekt.

Klassen - "Obst" und "Gemüse" sind Abkömmlinge der Klasse "Obst".

Die Klasse "Fruit" ist die Elternklasse der Klassen "Kiwi", "Mango", "Lemon" und "Orange".

Es gibt eine neue Kategorie "Zitrusfrüchte".

Legen Sie sie zwischen die Klasse "Obst" und ihre Nachfolger - Kiwi, Mango, Zitrone und Orange.

"Zitrusfrüchte sind die Eltern von Zitrone und Orange.


Als Nächstes - kreuzen wir Mango und Zitrone und erhalten - ein Lee-Mango-Objekt.

Das Objekt enthält teilweise Eigenschaften von Zitrusfrüchten und teilweise Eigenschaften von Nicht-Zitrusfrüchten. Sie hat ZWEI Eltern und diese Hierarchie kann nicht optimiert werden.

Wir haben also eine Mehrfachvererbung des Lee-Mango-Objekts und einen doppelten Pfad zum zugrunde liegenden Fruit-Objekt: über die Citrus-Kette und über die Mango-Kette.

Bei diesen Ketten müssen wir unnötige Eigenschaften von Parent umgehen, um die Persönlichkeit von "Lee-Mango" zu erhalten.

 

Peter, das nennt man: sich das Hirn zermartern - mit unüberwindbaren Schwierigkeiten aufwarten. Sie müssen die Aufgabe spezifizieren und Klassen für sie erstellen.

Warum eine Zwischenklasse mit dem Namen "Zitrusfrüchte"? Vielleicht lässt sich das Problem einfach dadurch lösen, dass die Eigenschaft "Zitrusfrüchte" in die dynamische Liste aufgenommen wird.

 
Dmitry Fedoseev:

Peter, das nennt man: sich das Hirn zermartern - mit unüberwindbaren Schwierigkeiten aufwarten. Sie müssen die Aufgabe spezifizieren und Klassen für sie erstellen.

Warum eine Zwischenklasse mit dem Namen "Zitrusfrüchte"? Vielleicht lässt sich das Problem lösen, indem man der dynamischen Liste einfach die Eigenschaft "citrus" hinzufügt.

Ich wollte gerade über die Immobilien schreiben.
Die Geschmackseigenschaft wird der Durchschnitt der Eigenschaften der beiden Früchte sein.
 

Und dies. OOP ist schließlich ein Programmierwerkzeug, kein Datenwerkzeug (wie soll ich das richtig sagen). Das Datenwerkzeug ist eine Datenbank.

Drei Tische. Eine Tabelle hat zwei Spalten: die ID der Frucht und ihren Namen. Die andere hat zwei Spalten: die ID der Eigenschaft und ihren Namen. Die dritte Spalte hat zwei Spalten: Frucht-ID, Eigenschafts-ID.

Dadurch ist es möglich, unendlich viele neue Eigenschaften hinzuzufügen, sie der Frucht zuzuordnen und so jede neue Frucht zu erhalten.

Die Mittel zur Lösung des Problems müssen der Aufgabe angemessen sein.

 
Dmitry Fedoseev:

Peter, das nennt man: sich das Hirn zermartern - mit unüberwindbaren Schwierigkeiten aufwarten. Sie müssen die Aufgabe spezifizieren und Klassen für sie erstellen.

Warum eine Zwischenklasse mit dem Namen "Zitrusfrüchte"? Vielleicht lässt sich die Aufgabe lösen, indem man der dynamischen Liste einfach die Eigenschaft "Zitrusfrüchte" hinzufügt.

So soll es sein.

Aber was ist mit der Kreuzung der Eigenschaften der beiden Objekte, die ein neues Objekt erzeugt? Das neue Objekt erbt teilweise die Eigenschaften der beiden anderen Objekte.

Wie lässt sich die "partielle" Vererbung zwischen mehreren Objekten (seinen Eltern) und dem Basisobjekt realisieren?

 
Реter Konow:

So soll es sein.

Aber was ist mit sich kreuzenden Eigenschaften von zwei Objekten, die ein neues Objekt hervorbringen? Das neue Objekt erbt teilweise Eigenschaften von zwei anderen Objekten.

Wie kann man die "teilweise" Vererbung von mehreren anderen Objekten implementieren?

Durch Anwendung eines geeigneten Algorithmus zur Lösung dieses speziellen Problems.

OOP ist ein Programmierwerkzeug, kein Mittel zur Beschreibung der Welt um uns herum, unabhängig davon, wie sie aus irgendeinem Blickwinkel miteinander korrespondiert.

 
Dmitry Fedoseev:

Und dies. OOP ist schließlich ein Programmierwerkzeug, kein Datenwerkzeug (wie soll ich das richtig sagen). Das Datenwerkzeug ist eine Datenbank.

Drei Tische. Eine Tabelle hat zwei Spalten: die ID der Frucht und ihren Namen. Die andere hat zwei Spalten: die ID der Eigenschaft und ihren Namen. Die dritte Spalte hat zwei Spalten: Frucht-ID, Eigenschafts-ID.

So ist es möglich, unendlich viele neue Eigenschaften hinzuzufügen, sie der Frucht zuzuordnen und so jede neue Frucht zu erhalten.

Die Mittel zur Lösung des Problems müssen dem Problem entsprechen.

Es geht nicht um Eigenschaften, es geht um Vererbung. Das heißt, die Verteilung von Eigenschaften und Methoden zwischen Objekten.

Neue Objekte verknüpfen Eigenschaften früherer Objekte in unterschiedlichen Kombinationen, was die Komplexität ihrer Ketten zum Basisobjekt erhöht.

 
Реter Konow:

Es geht nicht um Eigenschaften, es geht um Vererbung. Das heißt, die Verteilung von Eigenschaften und Methoden zwischen Objekten.

Neue Objekte verknüpfen Eigenschaften früherer Objekte in unterschiedlichen Kombinationen, was die Komplexität ihrer Ketten zum Basisobjekt erhöht.

Die Objekte selbst werden dies nicht tun. Wählen Sie Eigenschaften einer Frucht und Eigenschaften einer anderen Frucht aus der Datenbank aus, kombinieren Sie (lassen Sie etwas übrig, verwerfen Sie etwas) - Sie erhalten eine neue Frucht - fügen Sie sie der Datenbank hinzu.

 
Auch die Natur hat nicht unbegrenzte Möglichkeiten, Eigenschaften zu kombinieren. Es gibt eine bestimmte Anzahl von Chromosomen, und sie sind auf eine Reihe von Eigenschaften beschränkt.