# Instanz unerreichbar machen



## Seyan (29. Nov 2005)

Hellas,

ich habe derzeit eine programmiertechnische Aufgabe, bei der wir eine Klasse für private Konten erstellen sollen. Soweit, so gut klappt alles wunderbar, aber es soll innerhalb der Klasse eine Methode "DeleteAccount()" geben, die die jeweilige Instanz unerreichbar macht (und zwar nur so!). Wie soll ich das anstellen? Immerhin gibt es keine Destruktoren in Java, ein "this = null" klappt sicher nicht, und ein "Instanz = null" ist ja laut Aufgabenstellung auch nicht erlaubt. 
Kann mir da vielleicht jemand weiterhelfen?

Thx
Seyan ???:L


----------



## thE_29 (29. Nov 2005)

machn new drauf, dann ist es ne andere instanz


----------



## L-ectron-X (29. Nov 2005)

Möglicherweise ist ein Singleton gemeint. Guck mal in die FAQ bei Design Patterns.


----------



## Guest (29. Nov 2005)

L-ectron-X hat gesagt.:
			
		

> Möglicherweise ist ein Singleton gemeint. Guck mal in die FAQ bei Design Patterns.



Nein, das nicht... man soll schon mehrere Instanzen erstellen können...

@thE_29: Wie soll das bitte funktionieren? "this = new OT();"? Geht doch gar nicht...


----------



## Sky (29. Nov 2005)

Seyan hat gesagt.:
			
		

> es soll innerhalb der Klasse eine Methode "DeleteAccount()" geben, die die jeweilige Instanz unerreichbar macht (und zwar nur so!).


Was heißt denn "unerreichbar macht" ? Eine Lösung wäre z.B. einen bool'schen Wert umzusetzen und bei jedem Zugriff darauf abprüfen... oder alle Membervariabeln auf 'null' setzen...




			
				Seyan hat gesagt.:
			
		

> aber es soll innerhalb der Klasse eine Methode "DeleteAccount()" geben


innerhalb welcher Klasse? Die für die private Konten ? M.E. ist das völliger Quatsch....


----------



## bygones (29. Nov 2005)

innerhalb der Kontoklasse ein deleteAccount()... mhm - wenn dann alle variablen auf null setzen..

es gibt doch bestimmt eine ManagerKlasse (also z.b. Bank), die Konten verwaltet, nur die sollte auch die möglichkeit haben konten zu löschen. Und da werden die Konten dann ja in einem Array oder in einer Collection gespeichert.....


----------



## Bleiglanz (30. Nov 2005)

du kannst die Instanz nicht "unerreichbar" machen, das einzige wäre

membervariable is_deleted als boolean

die deleteAccount setzt diese auf true

bei JEDEM Methodenaufruf kommt ein

if(this.is_deleted) throw IllegalStateException

oder sowas.

=> du hast keine Möglichkeit, existierende Referenzen auf ein Objekt zu "löschen" oder die Instanz "unerreichbar" zu machen, wenn irgendwo

X x = new X();

gemacht wurde, dann kannst du mit obiger Methode nur verhindern, dass weiterhin damit "gearbeitet" wird


----------



## Ilja (30. Nov 2005)

wenn du alle referenzen in der Bank-klasse (oder wo auch immer die konten verwaltet werden) auf das konto löschst, dann ist das konto nicht mehr erreichbar:

konto = null;

oder falls es ein vector ist, der die konten enthällt, einfach aus dem vector entfernen, dann gibts keine referenz mehr drauf => nicht erreichbar


----------



## Seyan (1. Dez 2005)

Habs jetzt mit der boolschen Membervariable gemacht. Das "konto = null" sollen wir ja explizit NICHT verwenden 
@Sky: Niemand sagt, dass die Aufgabenstellung sinnvoll ist


----------

