Anonyme Objekte

Hi,

ich habe folgendes Szenario in Zusammenhang mit einer Datenbankabfrage:

class Obst {...};
...
// Variante 1
if( checkeObObstInDatenbank( new Obst( "Birnen" ) ) == FALSE )
 fügeObstInDatenbankEin( new Obst( "Birnen" ) );
 
 
// Variante 2
Obst \*tmp = new Obst( "Birnen" );
if( checkeObObstInDatenbank( tmp ) == FALSE )
 fügeObstInDatenbankEin( tmp );
delete tmp;

Da ich in diesen Abfragen das temporäre Objekt mindestens 1mal, maximal aber 2mal benötige, bin ich eher für Variante 1.
Spricht da etwas dagegen?

Ciao, Bill

Da ich in diesen Abfragen das temporäre Objekt mindestens
1mal, maximal aber 2mal benötige, bin ich eher für Variante 1.
Spricht da etwas dagegen?

Ich bin für Variante 2, weil das Objekt nur einmal erzeugt wird. Eigentlich bin ich sogar für Variante 3 (falls möglich): Kannst du das „checkeObObjektInDatenbank“ nicht irgendwie über eine ID oder einen eindeutigen Bezeichner wie z.b. „Birnen“ durchführen, also einfach den String als Parameter übergeben und das Objekt nur erzeugen wenn es auch benötigt wird.

Grüße
bruno

Hi Bruno,

Ich bin für Variante 2, weil das Objekt nur einmal erzeugt
wird.

Ok, aber ich muss es halt auch wieder löschen, daher stellt sich mir die Frage, was denn vernünftiger ist. In Variante 1 ist das Löschen ja nicht notwendig, also kann mir beim Programmieren auch kein Fehler unterlaufen, indem ich das Objekt vergesse zu vernichten …

Eigentlich bin ich sogar für Variante 3 (falls möglich):
Kannst du das „checkeObObjektInDatenbank“ nicht irgendwie über
eine ID oder einen eindeutigen Bezeichner wie z.b. „Birnen“
durchführen, also einfach den String als Parameter übergeben
und das Objekt nur erzeugen wenn es auch benötigt wird.

Da gebe ich dir Recht, doch leider ist mein Objekt komplexer aufgebaut und repräsentiert einen gesamten Datensatz, der nicht anhand einem einzigen Attribut unterschieden werden kann, außer der ID, aber die kenne ich ja beim Insert noch nicht, da AutoIncrement und so…

Danke für deine weiteren Gedanken
Bill

Ich bin für Variante 2, weil das Objekt nur einmal erzeugt
wird.

Ok, aber ich muss es halt auch wieder löschen, daher stellt
sich mir die Frage, was denn vernünftiger ist. In Variante 1
ist das Löschen ja nicht notwendig, also kann mir beim
Programmieren auch kein Fehler unterlaufen, indem ich das
Objekt vergesse zu vernichten …

Ähhh … auch wenn du es nicht getan hasst, in Variante 1 ist das löschen sehr wohl notwendig. Und du hasst es dort bereits Vergessen! Denn mit deinem
TestInDatabase(new Obst(„Brine“));
Wird eine Instance der Klasse Birne erzeugt, die nirgendwo gelöscht wird.
Variante 2 hat da doch grosse Vorteile

Ähhh … auch wenn du es nicht getan hasst, in Variante 1 ist
das löschen sehr wohl notwendig.

Anonyme Objekte werden AFAIK automatisch nach dem Aufruf in dem sie verwendet werden wieder gelöscht.

Grüße, Robert

Das dachte ich eben auch, deswegen sind es ja anonyme Objekte?!

Was trifft nun zu?

Ciao, Bill