Re(3): Delphi-Programm mit Klassen!
Geizhals » Forum » Programmierung » Delphi-Programm mit Klassen! (17 Beiträge, 219 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Delphi-Programm mit Klassen!
05.10.2007, 14:20:57
Hallo!

Wir haben jetzt in der Schule mit dem objektorientierten Programmieren begonnen (Klassenkonzept, ...., mit Delphi)! Nun hab ich meine erste Hausübung zu dem Thema bekommen, und ich hab mir auch schon eine Lösung für das gestellte Problem überlegt, nur will ich vorher fragen, ob das so funktionieren könnte:

Also, folgende Aufgabe:

Es gibt genau 1 Formular, auf diesem Formular kann eine neue Firma angelegt werden (Name, Telefon, Anschrift). Desweiteren müssen zu der neuen Firma Mitarbeiter hinzugefügt werden(das wird auf dem selben Formular gemacht). Es gibt dazu eine Listbox mit allen verfügbaren Mitarbeitern, aus diesen Mitarbeitern kann man auswählen, die ausgewählten MA werden dann in eine andere Listbox geschoben (Listbox: Ausgewählte Mitarbeiter)

Wenn man auf einen ausgewählten Mitarbeiter klickt, dann kommen 2 Textfelder, wo man den Namen und die Adresse des in der Listbox "Ausgewählte Mitarbeiter" Mitarbeiters eingeben kann.

Abschließend soll, nach Betätigen des Buttons "Speichern", die neue Firma +ausgewählte Mitarbeiter + Mitarbeiterdaten in eine Datenbank gespeichert werden.

Nun meine Lösung:

Eine Klasse Firma mit den Membervariablen Id,Name, Telefon, Anschrift, und einer Liste "Mitarbeiter" (in dieser Liste sollen dann alle Objekte vom Typ Mitarbeiter gespeichert werden)

Eine Klasse Mitarbeiter mit den Membervariablen Id, Name, Anschrift, FirmaId


Ist es nun möglich, dass ich nach betätigen des Speichern-Buttons ein neues Objekt vom Typ "Firma" anlege, und alle Firmendaten in die Membervariablen der Klasse speichere! Das selbe will ich dann mit den Mitarbeitern machen. Ist es überhaupt möglich, dass ich in eine Liste mehrere Objekte vom Typ "Mitarbeiter" speichere (diese Liste befindet sich in der Klasse Firma |denn eine Firma kann mehrere Mitarbeiter haben, darum ne Liste von Objekten), und wie soll ich das dann alles in die DB speichern, da muss ich theoretisch die ganze Liste von Mitarbeiterobjekten durchlaufen, oder?

Als nächstes soll dann eine bestehende Firma verändert werden können (z.B. neue Mitarbeiter hinzu, Mitarbeiter wegnehmen), wie kann ich da mit den Klassen drauf zugreifen


Ich hoffe ihr könnt mir helfen, sorry das ich soviel geschrieben habe, aber ich kenn mich mit dieser Thematik noch nicht so aus, und will nur wissen, ob mein Lösungsvorgang so halbwegs OK ist

Hier noch ein (Paint)-Bild meiner Form: http://bildupload.sro.at/a/images/Formular.JPG


danke







Antworten PM Alle Chronologisch
 
Melden nicht möglich
.  Re: Delphi-Programm mit Klassen!  (Somnatic am 05.10.2007, 18:36:11)
..  Re(2): Delphi-Programm mit Klassen!  (Guugl am 06.10.2007, 15:20:19)
...
Re(3): Delphi-Programm mit Klassen!
06.10.2007, 18:11:34
wie du genau ein Firmenobjekt findest ist Delphi - spezifisch zu implementieren. Ich kann dir sagen wie ich sowas in C# machen würde.

Zu einer ListBox (in C#) kannst du Objekte vom Typ object hinzufügen. Das ist sozusagen die Basisklasse aller anderen Objekte. Sprich: Du kannst jedes beliebige Objekt hinzufügen. Um eine sinnvolle Anzeige zu erhalten, kennt die Klasse object die Methode ToString(). Diese liefert ohne dass sie für die Klasse überschrieben wurde einfach nur irgendeinen Hash Wert der das Objekt identifiziert. Nun kannst du für dein Objekt Firma jedoch diese Methode überschreiben. In C# würde das so aussehen:
public override string ToString() { return this.name; }
In dieser Methode kannst du natürlich auf sämtliche Membervariablen zugreifen (z.b. auf den Firmennamen (name). Die Methode ToStirng() liefert jetzt keinen Hash Wert mehr sondern eine aussagekräftigen Namen der Firma.
Wenn nun ein Benutzer das entsprechende Objekt auswählt, kannst du ja das ausgewählte Objekt abfragen. Dieses IST dann zwar ovm Typ object, kann aber in den Typ Firma gecastet werden - somit hast du genau das Objekt das du suchst.

Ein anderes Beispiel:
Das Control ListView in C# akzeptiert als Elemente Elemente vom Typ ListViewItem. ListViewItem bietet eine Property namens Tag, die ein Objekt vom Typ object aufnehmen kann. Weiters bietet das ListViewItem eine Eigenschaft namens Text. Diese eigenschaft würde dann z.b. die Bezeichnung aufnehmen. Der Rest würde analog wie oben funktionieren. Du würdest ein Objekt vom Typ ListViewItem als "ausgewählt" erkennen und dann anhang von der Tag Eigenschaft auf das Firmenobjekt zurückschliessen können.

Das ist jedoch in C# so, in Delphi wird es ähnliche Methoden geben, schau dir einfahc mal an was die Listbox denn so zur Verfügung stellt, vielleicht gibt es ähnliche Ansätze.

Und wie meinst du das mit der globalen Liste, wo soll ich die denn
anlegen/speichern, und wie kann ich in dieser Liste auf eine bestimmte Firma
zugreifen bzw. woher weiss ich, welches Objekt welche Firma ist?

Ähm, ich meinte damit nur eine Liste namens firmen, die eine Liste von Firma Objekten enthält. Die Listbox könntest du dann mit dieser Liste füttern, indem du die Liste durchiterierst.

Und wie lange bleiben denn diese Objekte bestehen, solange bis ich die Form
beende, oder bis ich das gesamte Programm beende.

Sobald es keine Referenz mehr auf ein Objekt gibt, wird es gelöscht. Wenn du also alle Firmen Objekte beim Starten aus der DB ausliest und sie dann in einer Liste speicherst, dann existieren sie solange es diese Liste gibt.
Es wäre nett, wenn du mir sagen/beschreiben könntest, welche Klassen du machen
würdest, und vorallem WIE du diese machen würdest!


Abgesehen von den graphischen Klassen hast du es eh schon mehr oder weniger beantwortet. Und wie diese Aussehen, bleibt dir überlassen :)

Übrigens: Es wäre eigentlich besser, wenn ich es irgendwie ohne
Objektorientierung lösen könnte, falls das überhaupt geht

Sorry, aber das Beispiel impliziert fast schon eine objektorientierte Lösung ... da jetzt zurück zum prozeduralen zu gehen wäre nicht wirklich sinnvoll :)

life is not measured by the
number of breaths we take
but by the number of moments
that take our breath away

Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
.  Re: Delphi-Programm mit Klassen!  (user40015 am 06.10.2007, 13:58:20)
.  Re: Delphi-Programm mit Klassen!  (Robert Craven am 06.10.2007, 16:01:48)
..  Re(2): Delphi-Programm mit Klassen!  (Guugl am 06.10.2007, 16:16:21)
...  Re(3): Delphi-Programm mit Klassen!  (Robert Craven am 06.10.2007, 16:30:53)
....  Re(4): Delphi-Programm mit Klassen!  (Guugl am 06.10.2007, 16:35:22)
.....  Re(5): Delphi-Programm mit Klassen!  (Robert Craven am 06.10.2007, 16:51:00)
......  Re(6): Delphi-Programm mit Klassen!  (Guugl am 06.10.2007, 17:43:37)
.......  Re(7): Delphi-Programm mit Klassen!  (Robert Craven am 06.10.2007, 17:45:26)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung