A
HumeSikkins schrieb:
Ich glaube du solltest nicht versuchen die Fehlermeldung zu umgehen sondern dein Design zu verbessern.
hatte mich etwas undeutlich ausgedrückt. mit umgehen meinte ich nicht diesen fehler beseitigen. habe schon eingesehen, dass ich da von anfang an einen riesigen denkfehler gemacht habe. das ist eigentlich auch mir schon klar, dass es kompletter unfug war.
mit dem umgehen wollte ich ausdrücken, dass ich eine andere lösung, also ein redesign suche. und HumeSikkins, denke du hast schon verstanden worum es mir geht, und ich glaube ich verstehe langsam was ich noch alles machen muss, damit ich ans ziel komme.
also, um mal am anfang anzufangen:
mir liegt vor, eine wrapper klasse(n sammlung) für eine datenbankschnittstelle.
die db-api ist in c. funktional, aber nicht komfortabel.
die wrapper klasse, sehr schön! schönes stück arbeit. erweitert die api und ist in meinen augen eine höhere schicht.
da es aber noch höher gehen kann, meiner bescheidenen meinung, will ich diese wrapper klasse nochmal wrappen.
macht in meinen augen auch sinn, weil ich diese oberste schicht systemabhängig machen möchte und dann auch gleichzeitig in einer bibliothek kapseln möchte. somit würde ich dann nur die oberste schicht an ein neues system anpassen und hätte eine lösung für eine weitere platform.
zu meiner wrapper klasse kommen dann noch funktionalitäten wie z.b. ein dateilogger.
deswegen möchte ich auch eine api einfügen die zwar stark von der ersten wrapperklasse abhängig ist, die intern allerdings erweitert ist.
meine erste idee, und ich muss zugeben, ich habe da nicht sehr lange drüber nachgedacht, war: die vorhandenen klassen, die die datenbank, datensätze, und spalten repräsentieren abzuleiten. die methoden der unterklassen überschreiben und dort die methoden der oberklasse aufrufen, und dort eben den logger und später weitere funktionalitäten einbinden, der benutzer würde davon nichts merken, es würde einiges automatisch ablaufen und die typkonvertierung zu den platform-freundlichen typen würde dort auch stattfinden.
leider habe ich mich da etwas zu früh gefreut. die datenbank klasse zu wrappen war gar kein problem und war selbst mit den exceptions nach 15 minuten fertig, aber die datensätze und die spalten sind so programmiert, dass sie zwar technisch 1a sind und von der performance unschlagbar, aber für mich eben nicht zu wrappen, so wie ich gerne würde.
das zauberwort gegen meine idee heisst: zeiger.
es ist klar, dass zeiger manchmal so übergeben werden Column *pColumn. und datensätze werden auch noch so übergeben Dataset** ppDataset.
und wenn ich die klassen Column, und Dataset auch noch ableite, dann kann ich das ja nicht in den unterklassen für die aufrufe der methoden der oberklasse konvertieren, da es ja zeiger und keine objekte sind!
jetzt ist mir das klar...
ich hoffe ich habe niemandem kopfschmerzen bereitet.
aber falls jemandem ein design tipp einfällt, würde ich mich darüber sehr freuen.
ich denke, es bleibt mir aber nichts anderes übrig, als die klasse nachzubauen. informatik unterricht: aus ist-beziehung eine hat-beziehung machen