Wobei das wieder nicht so wäre, wie du willst, zu dem verstehe ich nicht warum man sowas in einer globalen Klasse speichern sollte, wenn es jedes Objekt für sich selbst enthalten könnte.
Wenn das Huhn selbst das Attribut boolean lebendig hätte, könnte es diesen Parameter auch selbst ändern. D.h. es kann selbst entscheiden, ob es tot, oder lebendig sein will. Das würde dann wieder nicht der Wirklichkeit entsprechen! Klar kann das Huhn Elfi Selbstmord begehen, indem es Lebensenergie = 0 setzt und darauf wartet, dass es von Gott aus der Liste der Lebenden gestrichen wird. Aber andersrum wird es natürlich nicht wieder lebendig, wenn es Lebensenergie > 0 setzt
Daher will ich das auf diese Weise lösen...
Aber vielleicht ist mir bei meinem kreationistischen Programmieransatz auch ein kleiner Denkfehler unterlaufen: Wenn Gott über alles, was auf der Erde passiert, wacht, dann kann auch nur Gott dem Huhn erlauben, zu gackern. Demnach darf ich keinen direkten Pointer auf das Objekt Elfi setzten, sondern darf es nur über den Eintrag im BuchDesLebens ansprechen.
Mann mann, kompliziert! Gibt es Theologen unter uns, die mir erklären können, wie das mit Gott und der Schöpfung wirklich funktioniert?
Grüße,
Frezl
Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!
Der Gedanke, dass die Lebenspunkte dann nicht im Objekt selbst gespeichert werden dürfen, ist mir auch schon gekommen. Daraufhin habe ich festgestellt, dass Gott alles verwalten müsste UND DANN ist es mir wie Schuppen von den Augen gefallen: ICH BIN GOTT (Jedenfalls was mein Java-Programm betrifft). Schließlich bin ja ich der, der dem Huhn sagt, wann es gackern soll und ich bin auch der, der dem Huhn seine Lebenspunkte gibt und nimmt. Und wenn ich es will, dann kann das Huhn auch stricken 
Das ist also das Geheimnis der OOP :-O Wieder ein Mysterium gelöst.
Danke für eure Hilfe!
Grüße, Frezl
Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!
Was zum ... Das wird hier ja so langsam eine philosofische Angelegenheit xD
Warum machst du es dir so schwer? Es ist doch egal, ob ein Objekt im Nirvana ist oder nicht. Wenn du nicht mehr darauf zugreifst und alle Variablen von dem Objekt trennst (andere Referenz aufbauen oder null setzen), dann wird sich der GC schon darum kümmern. Ich hab langsam das Gefühl, dass du drauf aus bist NullPointerExceptions auszulösen, weil du Objekte killn willst, die noch Referenzen aufweisen und wenn eben so eine Referenz was ausführen will, dann wird es ein Problem geben, was nicht Sinn der Sache ist.
Man darf jetzt nicht den Fehler machen und versuchen ein lebendiges Wesen als lebendiges Wesen 1:1 abzubilden, das klappt eh nicht. Was Objekte intern machen, ist Sache der Objekte, der Zugriff von Außen aber nicht (z.B. Aktionen ausführen), das ist Sache des Controllers (Gott). Wenn ein Huhn tot ist, dann hat es das Flag tot auf true gesetzt, wenn das der Fall ist, sollten alle anderen Methoden nicht mehr ihre Aktionen ausführen. Es kann aber nicht sein, dass man auf NullPointerExceptions aus ist, um sicher zu stellen, dass ein Objekt verschwunden ist und damit Referenzen vorzeitig mit Gewalt vernichtet. Auch in C++ ist das nicht der Sinn dahinter, auch wenn es prinzipiell möglich ist. Die Destruktoren da werden eigentlich auch nicht für sowas verwendet, sondern damit beim Verwerfen des Objektes z.B. Arbeitsspeicher wieder sauber freigegeben wird etc., nicht um Pointer zu zerstören.
Mach dir einfach kein Kopf drum, was mit dem Huhn passiert, wenn es tot ist. Bau in die Methoden Abfragen ein, die prüfen, ob das Huhn tot ist und wenn ja, dann macht die Methode eben nichts. Das Huhn ist tot, na und? Wenn ein Huhn in der Realität tot ist, dann verpufft es ja nicht ins Nichts, der Körper ist immer noch da, es gackert zwar nicht mehr, aber man kann immer noch drauf zugreifen, z.B. es beerdigen. Wenn es nach dem Tot ins Nichts verschwindet, dann ginge das nicht mehr, genauso auch bei den Objekten. Es ist egal, ob das Huhn tot ist, sein Tod wird nicht am Nicht-"Vorhandensein" definiert, sondern anhand eines Flags, einer Eigenschaft, die zeigt, ob das Huhn tot ist oder nicht. In der Realität sieht das dann meist so aus, dass es sich nicht mehr bewegt (außer der Kopf wurde abgeschlagen und die Nerven spielen verückt) und Menschen sind ja schlau und sind in der Lage Schlussfolgerungen anzustellen: Huhn bewegt sich nicht (Kopf wurde zerquetscht) => muss tot sein.
Geändert von Akeshihiro (22.03.10 um 22:48 Uhr)
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)