piero hat geschrieben:das musst du mir genauer erklären... kenne smalltalk nur vom namen her^^
Das Prinzip ist bei allen objektorientierten Sprachen dasselbe. Das geht bei C++ los - und die höheren Sprachen (also mit denen man ohne größeren Aufwand schöne grafische Oberflächen erstellen kann und die auch Datenbankanbindung via SQL haben), mit denen ich gearbeitet habe, waren: Access Basic, Visual Basic, Centura (das nennt sich auch direkt "SQL-Windows") und Smalltalk.
Und weil ich da in in HTML überall was von
lese, dachte ich ja, das wäre da genauso - war aber wohl ein typischer Fall von "Denkste"?
piero hat geschrieben:wo ist diese instanz? im programm selber in einer variable?
Das Objekt definierst du im Programm. Also jetzt schematisch (sprachenunabhängig

):
Objekt "Kunde" - Eigenschaften:
- Kundennummer
- Name
- Adresse
- Telefon
- Konto
-
-
-
Für jede dieser Eigenschaften schreibst du zwei Prozeduren (dafür erzeugt z.B. der VB-Editor schon Codegerippe): Eine Put(), die setzt die Eigenschaft auf einen Wert, den du ihr übergibst, und eine Get(), die den Wert ausliest und zurückliefert. Im Programm sieht das dann so aus - meinetwegen:
Kunde.Kundennr(4711).Put_Name("Berta") setzt die Eigenschaft "Name" einer Instanz des Objekts "Kunde" auf "Berta" (der Instanz, deren Eigenschaft "Kundennr" den Wert "4711" hat).
Das Objekt "Kunde" hast du also im Programmcode definiert, zur Laufzeit werden so viele Instanzen erzeugt, wie gebraucht werden (und deren Daten aus der Datenbank ausgelesen). Die stehen dann im Arbeitsspeicher. Also sagen wir: Wenn 200 Mitarbeiter im Netz sind, und jeder braucht die Daten von 10 Kunden gleichzeitig, macht das 2000 Instanzen des Objekts "Kunde" (wenn allerdings alle 200 sich mit ein und demselben Kunden beschäftigen, brauchen wir nur eine Instanz).
Jedes Objekt braucht natürlich z.B. auch eine Methode "Speichern" - Beispiel Objekt "Kunde":
Speichern (kundennr, name, adresse, telefon, konto)
Die bastelt dann den SQL-String mit den Werten zusammen, die ihr übergeben werden, und führt in aus:
Code: Alles auswählen
ExecuteSQL ("UPDATE kunde SET name =" & name & ", adresse =" & adresse & ", telefon = " & telefon & ", konto = " & konto & " WHERE kundennr = " & CStr(kundennr))
Bei etwas komplexeren Aktionen möchte man natürlich nach dem Transaktionsprinzip arbeiten, also eine Datenbanktransaktion wird entweder komplett ausgeführt oder gar nicht - (commit, wenn's geklappt hat, oder rollback, wenn was schiefgelaufen ist

).
piero hat geschrieben:läuft das programm 24/7 und wird nicht ständig beendet und wieder gestartet?
Muss es ja wohl. Zumindest während der Arbeitszeit der User.
Smalltalk ist ja da so komfortabel: Du kannst ein "Image" machen, das ist quasi der aktuelle Stand der "Objektsuppe" "eingefroren". Also bevor du den Server 'runterfährst oder aus sonst irgendeinem Grund das Programm mal beenden musst - meinetwegen, um eine neue Version zu starten, mit deinen Änderungen. (Ob es auch einen Absturz vorausahnt und schnell noch ein Image macht, da bin ich etwas überfragt.

)
Nachtrag:
piero hat geschrieben:hmm... die datei solle eogentlich wieder gelöscht werden... sonst hätte ich in meinem cache tausende sql dateien^^
Stimmt, hab' ich mir jetzt auch überlegt: Das ist wohl etwa so wie bei der Objektgeschichte mit der "Lebensdauer" der Instanzen im Speicher. Die müssen auch irgendwann gekillt werden, wenn sie einige Zeit nicht gebraucht werden, sonst werden es ja immer mehr. Wie das genau organisiert ist, weiß ich aus dem Hut jetzt nicht mehr, darum brauchte ich mich ja auch nie zu kümmern.