Instanzen in Klassen

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Instanzen in Klassen

Beitrag von Manfred »

Hi,

ich versuche jetzt einmal eine Überlegung hier halbwegs verständlich zur Diskussion zu bringen.

Ich habe eine Datenbankklasse, in der ich alles habe, was ich für die Verwaltung einer DBF Datei usw. brauche. Weiterhin habe ich für jede DBF eine Klasse, die von der Klasse Datenbank erbt in der alle Daten zur jeweiligen DBF Datei stehen.

In den einzelnen Klassen der DBF Instanzen, sind Methoden, die dazugehörige DBF Dateien verknüpfen und mitführen oder was weiß ich machen. Ich habe jetzt folgendes Problem: Ich muß immer Sorge dafür tragen, dass ich alle Objekte für die dazugehörigen DBF Dateien erstelle, damit es nicht knallt, wenn ich eine Relation nachbilde, aber die entsprechende DBF, das entsprechende Objekt nicht geöffnet, oder nicht erstellt wurde.

Jetzt kam mir der Grundgedanke in jede Klasse die Objekte direkt mit einzubauen, die die entsprechenden DBF Instanzen erhalten, die ich für den weiteren Gebrauch benötige. Also nicht jede Instanz für sich und einzeln, sondern die Oberklasse der Vater DBF als Container für die anderen DBF Objekte. Somit also Objekte in Objekten. Das würde dann im Zweifelsfalle ein recht großes Objekt geben, würde mir aber garantieren, das bei der Erzeugung des Vater Objektes alle anderen automatisch mit erzeugt werden. Was natürlich passieren kann und würde, wäre der Fall, dass ein und dieselbe DBF Datei, unter verschiedenen Bereichen und Aliasnamen, mehrfach geöffnet wären.
Beispiel:

Code: Alles auswählen

dbf1 benötigt dbf2, dbf3,dbf4 -> 4 DBF je einmal geöffnet
andersherum wäre es auch möglich, dass 
dbf3 benötigt dbf2,dbf4             3 DBF je einmal geöffnet
aber durch die Verknüpfung wären 2,3,4 schon je 2x geöffnet
Da aber alle DBF unter verschiedenen Alias() geöffnet werden, kann man auch theoretisch mehrfach verknüpfen und gegeneinander.


Also nochmals meine Frage, würde dieser technisch aufgeblähte Ablauf Probleme machen? Ineinander verschachtelte Objekte usw. Von der verwaltung der Objekte für Xbase++, oder meint ihr es wäre wurscht. Hauptsache gesund und glücklich.

Ich erwarte eine heiße Diskussion......
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Instanzen in Klassen

Beitrag von brandelh »

Hi,

schau dir mal die Beziehung der Controls zum jeweiligen Parent (Clientlist) an, also in der Basisklasse eine Instanzvariable,
die zur Laufzeit die erstellten Objekte der Parts sammeln. So könntest du das auch machen.
Besser eine Datei 5 mal öffnen, als einmal und den Zugriff von 5 Tasks syncronisieren zu müssen ;-)

Grundsätzlich sollte es kein Problem darstellen eine DBF mehrfach zu öffnen, natürlich hat aber alles irgendwie Performanceauswirkungen ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Instanzen in Klassen

Beitrag von Manfred »

Auch Hi,
brandelh hat geschrieben:Hi,

schau dir mal die Beziehung der Controls zum jeweiligen Parent (Clientlist) an, also in der Basisklasse eine Instanzvariable,
die zur Laufzeit die erstellten Objekte der Parts sammeln. So könntest du das auch machen.
Den Satz verstehe ich nicht.
Besser eine Datei 5 mal öffnen, als einmal und den Zugriff von 5 Tasks syncronisieren zu müssen ;-)
das ist ein Argument, so sehe ich das auch
Grundsätzlich sollte es kein Problem darstellen eine DBF mehrfach zu öffnen, natürlich hat aber alles irgendwie Performanceauswirkungen ;-)
Das das geht, ist mir klar, eigentlich interessiert mich mehr, wie eine riesengroße Instanz reagiert. Steffen P. meinte ja mehrmals, man soll nicht alles in OOP umwandeln, was bisher oder früher in Funktionen war. Klasse hätte auch ihre Grenze, oder würde langsamer werden (meine ich so verstanden zu haben) Deshalb meine Nachfrage, ob jemand mit richtig großen und in meinem Fall verschachtelten Instanzen/Klassen gesammelt hat und dazu etwas sagen kann. ich habe keine Vorstellung, wo da die merkbaren/vernunftgesetzten Grenzen liegen. Jetzt nicht vom RAM her, sondern von der Verwaltung intern allgemein.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Instanzen in Klassen

Beitrag von Manfred »

OK,

allgemein betrachtet, wäre es mal interessant, ob man sowas machen kann/soll. Aber mir geht gerade durch den Kopf, dass es in meinem Konstrukt eine Rekursion geben wird und dann knallt es.

A benötigt b

b benötigt a und c

wenn a aufmacht, wird b mit aufgemacht.

wenn b aufgemacht wird, dann wird a ( und der macht dann wieder b auf und der macht dann wieder a auf und der macht dann wieder....) und c aufgemacht. Oder es müßte eine Logik erstellt werden, die sowas verhindert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Instanzen in Klassen

Beitrag von brandelh »

Hi,

denke an morgen und mache heute nicht alles, nur weil du es heute kannst ;-)
Halte es einfach und du verstehst es auch morgen noch :-)

So nun zu den Fragen ...

Statt z.B. in der Klasse für jede nur mögliche DBF etc. eine eigene Instanzvariable zu öffnen, solltest zu ein Array für gleiche Objekte verwenden:

statt: DB1, DB2 , DB3 bzw. dynamische Objektgenerierung
besser: :aDBFs erstellen, das entweder empty() = keine DBF offen oder DBF-Objekte enthält.
Schau dir mal eine Fensterklasse bzw. ein XbasePart an. Da wird auch jede Menge vererbt und es ist trotzdem recht schnell.
Aber z.B. bei Browser besteht dieser aus vielen Kästchen (> 100) die intern jeweils ein eigenes Fenster representieren,
noch ist das nicht das Problem, aber dann kommen noch die Dateizugriffe dazu um dieses mit Daten zu füllen und bei jeder Bewegung müssen Daten nachgeladen werden, das dauert keine Sekunde und dennoch merkt man ein zähes Flackern ...
Ich empfinde sowas dann als zu langsam um damit zu frieden zu sein.

Du redest von einer DBF Klasse die viele DBFs aufmacht ... Win32 hat keine Probleme mit Dateihandles, aber jede Festplatte
hat nur eine recht begrenzte Zugriffszeit, jede DBF die positioniert wird nimmt davon etwas in Anspruch.
Wenn du 50 DBFs offen hast, aber immer nur in einer (mit Index) suchst spielt das keine Rolle, wenn du aber
Quereffekte erzeugst A positioniert, ändert B, ändert C und D .... dann geht die Performance in den Keller.
Ganz übel wird es, wenn du dabei eine Endlosschleife produzierst :roll:

Also nochmals, halt es einfach :D
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Instanzen in Klassen

Beitrag von Manfred »

Halte es einfach!

Hm, das war ja mein Grundgedanke. Wie eine SQL Datenbank, die DB wird geöffnet und alle Tabellen stehen zur Verfügung. Ich werde es alles nochmals überdenken und schauen, ob mir nicht doch noch eine "EINRUTSCHLÖSUNG" einfällt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten