Einzelnen Beitrag anzeigen

r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#13

AW: Referenzen auf ungültige Objekte

  Alt 15. Mär 2011, 21:47
Zitat von WM_CLOSE:
@Christian: es gibt theoretisch keine Pointer in .Net. Es gibt nur Referenzen.
Ja. Klar.

Zitat:
Auf diese Referenzen kann normalerweise nur das Framework bzw System.Object zugreifen.
Du meinst auf die Adresse, die hinter der Referenz steht. Ja.

Zitat:
Wie gesagt: Man könnte eine Klasse x und einen Record y herstellen. Record y wird sich, wenn ihm ein Wert zugewiesen wird bei der entsprechenden Instanz von x melden. Wird nun der Destruktor der Instanz aufgerufen, nilt er allen ys. eigentlich relativ einfach.
Das wären einfach die genannten Smart Pointer. Das heißt aber nicht, dass Referenzen selbst Objekte wären.

Zitat:
ein Verein verwaltet eine Liste von Mitgliedern,
Huch. Wieso das? Ich denke doch eher ein Mitglied *ist* eine Person.
Eine Person gibt es nur einmal (mit Namen, Status etc). Diese Person kann Mitglied in einem Verein sein, Spieler in einer Mannschaft, Gastspieler in einer anderen Mannschaft oder sogar Schiedsrichter usw.
Deshalb wird dort die Referenz auf eine Person genutzt.
Ja, das ist klar. Aber dann hast du keine zusätzlichen Mitglied-, Spieler- und Schiedsrichter-Klassen. Sondern der Verein hat einfach ne Liste von Personen als Mitglieder. Vielleicht ist das bei dir ja auch schon so und ich hab dich einfach falsch verstanden. Solltest du Rollen brauchen, die im Verhalten von dem normaler Personen abweisen, bietet sich das Decorator-Pattern an.

Zitat:
Ist ein Spiel beendet, wird das übergeordnete Turnier veranlasst, die Platzierungen neu zu berechnen. Das Spiel kennt sein übergeordnetes Turnier aber nicht direkt. Das wird über eine Funktion ermittelt.
Das wäre ein klarer Fall für Events. Für was ne Funktion, die erst suchen muss?

Zitat:
Das Personenobjekt wird gelöscht, wenn z.B. die Turnierveranstaltung gelöscht wird, da das Personenobjekt ein SubMember der Turnierveranstaltung ist.
Dann passiert das einfach im Destruktor.

Zitat:
Das Löschen wird durch den User veranlasst.
Und welches Objekt ist dafür zuständig? Darum geht es.

Zitat:
Das habe ich ja so realisiert. Es geht mir ja aber um die fremden Zugriffe z.B. auf ein Personenobjekt, die nicht dessen Owner sind.
Ja das ist klar. Aber hier stellt sich die Frage, was die fremden Objekte da zu suchen haben. "Don't talk to stragers".

- sind die "Fremden" weiter oben in der Hierarchie, können sie sicher sein, dass das Objekt noch exisiert. ggf. muss es über events benachrichtigt werden, aber oft ist noch nichtmal das erforderlich
- ist es niedriger in der Hierarchie, hat es das Objekt gar nicht zu kennen. Dann solltest du dein Konzept überarbeiten.
- ist es weder höher noch tiefer in der Hierarchie, sollte es entweder gar nix von dem Objekt wissen oder über Events benachrichtigt werden.

Das ist der normale Fall, so wie es alle Welt handhabt. Da etwas zu automatisieren, halte ich für gefährlich. Da werden Referenzen ungültig und ich krieg nix davon mit. Vor allem hat ein Objekt A nix an den Innereien von B zu schaffen. Das ist schon aus Prinzip eklig.

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat