Wie kann ich / (was ist der beste Weg) die Zusammensetzung und Aggregation in C # implementieren?
Danke 123Developer
Das ist eine ziemlich abstrakte Frage, wenn man bedenkt, dass sowohl Komposition als auch Aggregation ist ziemlich ähnlich & amp; wirklich nur konzeptionell anders und nicht unbedingt auf Codeebene. (d. h. Sie könnten ein Auto mit einer Engine als Komposition betrachten, und ein Hund mit Flöhen als Aggregation, aber es gibt nichts, was Sie davon abhält, sie auf die gleiche Weise zu implementieren, wenn Sie sie in Code modellieren).
Wenn Sie jedoch die Differenzen & amp; versuchen & amp; gewaltsam hinzufügen Software-Design-Entscheidungen, um diese Unterschiede hervorzuheben Ich denke, Sie könnten so etwas tun ... unter ein Beispiel aus Wikipedia :
Die Aggregation unterscheidet sich von der gewöhnlichen Zusammensetzung dadurch, dass sie kein Eigentum impliziert. Wenn in der Komposition das besitzende Objekt zerstört wird, sind es auch die enthaltenen Objekte. In der Aggregation ist dies nicht unbedingt der Fall. Zum Beispiel besitzt eine Universität verschiedene Abteilungen (z.B. Chemie) und jede Abteilung hat eine Anzahl von Professoren. Wenn die Universität schließt, werden die Abteilungen nicht mehr existieren, aber die Professoren in diesen Abteilungen werden weiter existieren. Daher kann eine Universität als eine Zusammensetzung von Abteilungen gesehen werden, während Abteilungen eine Ansammlung von Professoren haben. Außerdem könnte ein Professor in mehr als einer Abteilung arbeiten, aber eine Abteilung könnte nicht Teil von mehr als einer Universität sein.
Sie können diesen Code erstellen, um ihn darzustellen (mit so vielen konstruierten Hinweisen für die Zusammensetzung / Aggregation):
%Vor%Nun, in einer Garbage-Collection-Welt, in der auf alle Objekte über Referenzen zugegriffen wird, verwischt der feine Unterschied (im Besitz) zwischen strenger Komposition und Aggregation ein wenig - so in allgemein (wenn Klassen verwendet werden) kocht auf ein Feld für das andere Objekt oder die Sammlung:
%Vor%Wenn ich den Punkt verpasst habe, bitte klar ...
Die Dinge sind bei der Diskussion von struct
s komplizierter - aber im Allgemeinen, wenn über OO-Konzepte gesprochen wird, ist die Verwendung von struct
auf Wertfelder beschränkt ...