Hallo! Ich will ein Programm zur Materialverwaltung schreiben. Nur etwas kleines. Jetzt hab ich aber das Problem, dass da auch immer wieder neue Materialarten hinzu kommen. Ich will das Programm in C++ schreiben. ich habe mir das so gedacht, dass die Materialarten von einer rein virtuellen Klasse abgeleitet werden und so über eine einheitlich Schnittstelle ansprechbar sind. Ich will aber nicht immer, wenn ein neuer Materialtyp dazu kommt, sofort das Programm neu kompilieren, sondern das irgendwie anders anstellen. Hat einer von euch eine Ahnung, wie man das machen könnte? Danke! Philipp
Abend
Ich will ein Programm zur Materialverwaltung schreiben. Nur etwas kleines. Jetzt hab ich aber das Problem, dass da auch immer wieder neue Materialarten hinzu kommen. Ich will das Programm in C++ schreiben. ich habe mir das so gedacht, dass die Materialarten von einer rein virtuellen Klasse abgeleitet werden und so über eine einheitlich Schnittstelle ansprechbar sind. Ich will aber nicht immer, wenn ein neuer Materialtyp dazu kommt, sofort das Programm neu kompilieren, sondern das irgendwie anders anstellen. Hat einer von euch eine Ahnung, wie man das machen könnte?
Wenn es nur um die Verwaltung geht und nicht fuer verschiedene Materialen auch verschiedene Funktionen zur Verfuegung stehen muessen, wieso dann fuer jedes Material eine eigene Klasse machen? Warum nicht EINE Klasse und dieser den Namen des Materials als Zeichenkette? Bye -- 1 Bodo Kaelberer 123 http://www.webkind.de/ 3 4 "A button I have made must be pushed." (ip)
Hi Phillip, Am Thursday 12 June 2003 20:13 schrieb Philipp Otte:
Ich will das Programm in C++ schreiben. ich habe mir das so gedacht, dass die Materialarten von einer rein virtuellen Klasse abgeleitet werden und so über eine einheitlich Schnittstelle ansprechbar sind. Ich will aber nicht immer, wenn ein neuer Materialtyp dazu kommt, sofort das Programm neu kompilieren, sondern das irgendwie anders anstellen. Hat einer von euch eine Ahnung, wie man das machen könnte?
Bodo hat ja den Tip mit einer Klasse gegeben, wenn die Eigenschaften immer ähnlich sind kann man das machen. Ich ziehe 'Vererbung' vor, im Endeffekt lernst Du OOP und produzierst am Ende weniger Code. Auf der arbeit haben wir in unserer Applikation ein Lagerhaltungsmodul. Wir haben nur eine "Basisklasse Artikel", alle anderen Artikel erben davon... Mit Templates könntest Du auch arbeiten. Puuh, da gibt es sooooviel .... Ciao Andre
Am Sam, 2003-06-14 um 09.05 schrieb Andre Heine:
Hi Phillip,
Bodo hat ja den Tip mit einer Klasse gegeben, wenn die Eigenschaften immer ähnlich sind kann man das machen.
Ich ziehe 'Vererbung' vor, im Endeffekt lernst Du OOP und produzierst am Ende weniger Code. Auf der arbeit haben wir in unserer Applikation ein Lagerhaltungsmodul. Wir haben nur eine "Basisklasse Artikel", alle anderen Artikel erben davon...
Mit Templates könntest Du auch arbeiten.
Puuh, da gibt es sooooviel ....
Ciao
Andre
Hi Andre! Das mit der Vererbung gefällt mir doch auch ganz gut und war auch das, was ich mir eigentlich überlegt hatte. Aber wie kann ich jetzt Klassen ableiten, ohne das Programm selbst zu verändern? Dazu wollte ich eigentlichdas mit dem Datentypen aus Bibliotheken, die zur Zeit der Entstehung noch gar nicht existieren, sondern für jedes neue Teil extra geschrieben werden. Templates will ich aber lieber nicht verwenden. Weißt jemand, wie man das erreichen kann? Philipp
Am Sam, 2003-06-14 um 10.47 schrieb Philipp Otte:
Am Sam, 2003-06-14 um 09.05 schrieb Andre Heine:
Hi Phillip,
Bodo hat ja den Tip mit einer Klasse gegeben, wenn die Eigenschaften immer ähnlich sind kann man das machen.
Ich ziehe 'Vererbung' vor, im Endeffekt lernst Du OOP und produzierst am Ende weniger Code. Auf der arbeit haben wir in unserer Applikation ein Lagerhaltungsmodul. Wir haben nur eine "Basisklasse Artikel", alle anderen Artikel erben davon...
Mit Templates könntest Du auch arbeiten.
Puuh, da gibt es sooooviel ....
Ciao
Andre
Hi Andre! Das mit der Vererbung gefällt mir doch auch ganz gut und war auch das, was ich mir eigentlich überlegt hatte. Aber wie kann ich jetzt Klassen ableiten, ohne das Programm selbst zu verändern? Dazu wollte ich eigentlichdas mit dem Datentypen aus Bibliotheken, die zur Zeit der Entstehung noch gar nicht existieren, sondern für jedes neue Teil extra geschrieben werden. Templates will ich aber lieber nicht verwenden. Weißt jemand, wie man das erreichen kann? Shared-Libraries in Verbindung mit "Factories"/"Named Constructors".
[Sollte Dir das nichts sagen; Bei google sollte sich was finden lassen: Stichworte Factory, Design Patterns] Soll heissen, Du implementierst ein Basisklasse und eine Factory-Klasse um Objektinstanzen von abgeleitete Klassen der Basisklasse zu erzeugen. All dies wird in eine Shared-Library gesteckt. Dann linkst Du deine App einmal mit einer (momentanen) Version der Shared-Lib (libmylib.so.1 -> libmylib.so.1.0.0) Erweiterst Du dann dein Lib um eine weitere, abgeleitete Klasse, wird die Library neu übersetzt und installiert. Dabei muss 100%ige Kompatibiltiät der Lib zu vorhergehenden Versionen der Lib gewährleistet sein (Neue Version libmylib.so.1 -> libmylib.so.1.0.1; Siehe auch info libtool) Ralf
Shared-Libraries in Verbindung mit "Factories"/"Named Constructors".
[Sollte Dir das nichts sagen; Bei google sollte sich was finden lassen: Stichworte Factory, Design Patterns]
Soll heissen, Du implementierst ein Basisklasse und eine Factory-Klasse um Objektinstanzen von abgeleitete Klassen der Basisklasse zu erzeugen. All dies wird in eine Shared-Library gesteckt.
Dann linkst Du deine App einmal mit einer (momentanen) Version der Shared-Lib (libmylib.so.1 -> libmylib.so.1.0.0)
Erweiterst Du dann dein Lib um eine weitere, abgeleitete Klasse, wird die Library neu übersetzt und installiert. Dabei muss 100%ige Kompatibiltiät der Lib zu vorhergehenden Versionen der Lib gewährleistet sein (Neue Version libmylib.so.1 -> libmylib.so.1.0.1; Siehe auch info libtool)
Ralf
Also Ralf! Hab ich das jetzt richtig verstanden? 1. Ich schreibe eine Factory, die in der Shared-Library libmylib.so.1 steckt. 2. Ich linke die mit meinem Programm 3. Diese Factory ruft dann die Factory in der gerade aktuellen libmylib.so.[Versionsnummer] auf 4. Eine Factory in libmylib.so.[Versionsnummer] liefert dann die Datentypen zurück Stimmt das so ungefähr? Schonmal danke! philipp
participants (4)
-
Andre Heine
-
Bodo Kaelberer
-
Philipp Otte
-
Ralf Corsepius