Klassenverwendung
-
Hi.
Ich möchte gerne ein Programm schreiben dass eine Lagerverwaltungs- und Verkaufssoftware simuliert. Um die Informationen über die verschiedenen waren speichern zu können verwende ich die Klasse Ware:
class Ware { public: int anzahl, id ; float verk_preis, eink_preis ; string bezeichnung, lieferant ; void Ankauf(); void Verkauf(); [...] };Nun habe ich 2 Fragen:
Ist es effizienter nun beispielsweise 100 Subklassen zu erstellen die vom Nutzer dann "gefüllt" werden:
class Ware01 : public Ware { public: Ware01() { anzahl = 0 ; id = 1000 ; verk_preis = 0 ; [...} } };Meine zweite Frage:
Sollte ich für das bestimmen der Anzahl einer Ware besser einen vektor benutzen oder eine simple integer-Variable?
Vielen Dank.
oder sollte ich es eher auf diese Weise lösen:
if (neueWare) { new Ware ; }
-
Entschuldigung, da ist etwas verrutscht. Der unterste Codeblock gehört natürlich zur ersten Frage.
-
Hallo,
Für ein solches Program benutzt du am Besten eine Datenbank, wie zum Beispiel MYSQL.
-
narfd schrieb:
Ist es effizienter nun beispielsweise 100 Subklassen zu erstellen die vom Nutzer dann "gefüllt" werden:
Effizienter als was? Was möchtest du überhaupt erreichen? Grundsätzlich glaube ich nicht, dass 100 Subklassen eine Lösung sind.
narfd schrieb:
Sollte ich für das bestimmen der Anzahl einer Ware besser einen vektor benutzen oder eine simple integer-Variable?
Schon wieder so eine Frage, bei der man nur raten kann. Ich glaube, du hast das Konzept der STL-Container nicht ganz verstanden: Diese sind da, um mehrere Elemente gleichen Typs zu speichern. Wenn du also nur zählen willst, nimmst du eine Integer-Variable, wenn du auch noch Elemente speichern willst, einen Container. Aber beschreib doch bitte dein Problem etwas genauer.
narfd schrieb:
oder sollte ich es eher auf diese Weise lösen:
if (neueWare) { new Ware; }Ja, am besten Speicher anfordern, den man weder ansprechen noch jemals freigeben kann. Natürlich nicht!
-
Wenn der Nutzer eine neue Ware in das Sortiment aufnehmen möchte, muss für diese Ware ja eine neue Instanz der Klasse "Ware" erstellt werden. Wie ist das zu lösen?
Dabei gehe ich davon aus das zum Zeitpunkt der Prgorammierung nicht bekannt ist wieviele waren welcher Art vorhanden sind.
-
class Ware { public: Ware (int anzahl, float verkaufs_preis, float einkaufs_preis ...) // nennt sich Konstruktor : anzahl_ ( anzahl ), // nennt sich Initialisierungsliste id_ ( /* irgendwie an eine id kommen */ ), verkaufspreis_ ( verkaufs_preis ), einkaufs_preis_ ( einkaufs_preis ), ... { } void Verkauf (); private: int anzahl_; int id_; float verkaufs_preis_; float einkaus_preis_; std::string bezeichnung_; std::string lieferant_; }; int main () { std::list<Ware> waren; waren.push_back ( Ware (2,1.10,2.20,...) ); waren.push_back ( Waren (5,5.50,6.42,...) ); ... }Du kannst so einfach einen abstrakten Typen Ware schaffen und dann jede Ware da einfach über die Parameter im Konstruktor definieren. Natürlich kommen da oben dann noch Funktionen zum ändern, und abfragen der Werte hinzu. Aber das ist alles grundlage von OOP. Da solltest du mal ein gutes Buch konsultieren.