<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Beispiel für Klassenanwendung inkl. map]]></title><description><![CDATA[<p>Holla,<br />
Da ich momentan dabei bin mich in das Thema Klassen einzulesen und es irgendwie noch am Verständnis hapert, möchte ich darum bitten dass mir jemand ein Beispiel für die professionelle Anwendung einer oder mehrerer Klassen gibt.</p>
<p>Persönlich habe ich als Beispiel eine Lagerverwaltung nehmen wollen, in der ich dann z.B die Klassen 'Werkstoffe', 'Werkzeuge' und 'Hilfsmitte' verwendet hätten.</p>
<p>Allerdings stieß ich dabei auf das das Problem dass für jede Artikelnummer eine eigene Varaiable angelegt werden müsste, was mir irgendwie unverhältnismäig erscheint.</p>
<pre><code class="language-cpp">class kWerkzeug
{
public:
	string Ort ;
	int Anzahl ;

	 kWerkzeug() : Anzahl(0) 
    { 
    }

	int Hinzufuegen () ;
	int Abrufen () ;
};

kWerkzeug hammerGruen, hammerBlau, Schraubendreher_klein, Schraubendreher_groß [...]
</code></pre>
<p>edit:</p>
<p>Ich bin auf ein neues Problem gestoßen:</p>
<p>Wenn das Programm alle Waren kennt, wie lasse ich es eine gesamtübersicht ausgeben? Anders gefragt, wie lese ich alle Objekte einer Klasse ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252938/beispiel-für-klassenanwendung-inkl-map</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 04:10:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252938.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Oct 2009 17:08:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Mon, 26 Oct 2009 21:02:59 GMT]]></title><description><![CDATA[<p>Holla,<br />
Da ich momentan dabei bin mich in das Thema Klassen einzulesen und es irgendwie noch am Verständnis hapert, möchte ich darum bitten dass mir jemand ein Beispiel für die professionelle Anwendung einer oder mehrerer Klassen gibt.</p>
<p>Persönlich habe ich als Beispiel eine Lagerverwaltung nehmen wollen, in der ich dann z.B die Klassen 'Werkstoffe', 'Werkzeuge' und 'Hilfsmitte' verwendet hätten.</p>
<p>Allerdings stieß ich dabei auf das das Problem dass für jede Artikelnummer eine eigene Varaiable angelegt werden müsste, was mir irgendwie unverhältnismäig erscheint.</p>
<pre><code class="language-cpp">class kWerkzeug
{
public:
	string Ort ;
	int Anzahl ;

	 kWerkzeug() : Anzahl(0) 
    { 
    }

	int Hinzufuegen () ;
	int Abrufen () ;
};

kWerkzeug hammerGruen, hammerBlau, Schraubendreher_klein, Schraubendreher_groß [...]
</code></pre>
<p>edit:</p>
<p>Ich bin auf ein neues Problem gestoßen:</p>
<p>Wenn das Programm alle Waren kennt, wie lasse ich es eine gesamtübersicht ausgeben? Anders gefragt, wie lese ich alle Objekte einer Klasse ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798687</guid><dc:creator><![CDATA[serbud]]></dc:creator><pubDate>Mon, 26 Oct 2009 21:02:59 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Mon, 26 Oct 2009 19:26:49 GMT]]></title><description><![CDATA[<p>Ein einigermaßen sinnvolles Beispiel für Klassen und so:</p>
<pre><code class="language-cpp">class Article
{
public:

	int Id;
	std::string Name;
	int Place;
	size_t Count;

	Article()
		: Id(-1)
		, Name(&quot;unknown&quot;)
		, Place(-1)
		, Count(0)
	{
	}

	virtual ~Article() {}

	virtual void print()
	{
		cout &lt;&lt; Id &lt;&lt; &quot; [Artikel]: &quot; &lt;&lt; Name &lt;&lt; &quot;, &quot; &lt;&lt; Place &lt;&lt; &quot;, &quot; &lt;&lt; Count &lt;&lt; endl; 
	}
};

class Material : public Article
{
public:

	//Werkstoff-Eigenschaften..

	Material()
	{
	}

	void print()
	{
		cout &lt;&lt; Id &lt;&lt; &quot; [Werkstoff]: &quot; &lt;&lt; Name &lt;&lt; &quot;, &quot; &lt;&lt; Place &lt;&lt; &quot;, &quot; &lt;&lt; Count &lt;&lt; endl; 
	}
};

class Tool : public Article
{
public:

	//Werkzeug-Eigenschaften..

	Tool()
	{
	}

	void print()
	{
		cout &lt;&lt; Id &lt;&lt; &quot; [Werkzeug]: &quot; &lt;&lt; Name &lt;&lt; &quot;, &quot; &lt;&lt; Place &lt;&lt; &quot;, &quot; &lt;&lt; Count &lt;&lt; endl; 
	}
};

class Warehouse
{
public:

	std::vector&lt;Article*&gt; Articles;

	void printArticleList()
	{
		for (size_t i = 0; i &lt; Articles.size(); ++i)
		{
			Articles[i]-&gt;print();
		}
	}
};

Warehouse w;
w.Articles.push_back(new Tool());
w.printArticleList();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1798774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798774</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Mon, 26 Oct 2009 19:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Mon, 26 Oct 2009 19:55:12 GMT]]></title><description><![CDATA[<p>Ich würde die Werkzeuge auch eher abstrakt verwalten. Du brauchst ja die Werkzeuge nicht zu unterscheiden. Sondern bist nur an ein paar Daten jeweils interssiert. Also kannst du gut eine abstraktere Klasse, wie schon oben genannt &quot;Article&quot; nennen und dann da die Daten reinschreiben. (Name, Preis, Menge usw.)</p>
<p>Und dann kannst du die gewünschten Artiklen in einer Datenbank speichern (oder für den Anfang mal einfach eine Textdatei) und dann beim Programmstart diese Daten einlesen und das komplette Warenhaus erzeugen. Dann kannst du da ja die Datensätze bearbeiten, oder auslesen und dann wieder zurückspeichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1798781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1798781</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 26 Oct 2009 19:55:12 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Tue, 27 Oct 2009 13:18:30 GMT]]></title><description><![CDATA[<p>In meinen Augen macht es keinen Sinn, für jeden Artikel eine eigene Klasse zu benutzen, schliesslich benutzt du die Objekte nicht wegen ihrer Funktionalität sondern um Metadaten über die Objekte abzulegen. Daher bietet sich eine Klasse Article an, die Daten speichert, die alle Artikel gemeinsam haben (z.B. Name, Artikelnummer, vorhandene Menge, Lagerort), zusätzlich sollten eine beliebige Anzahl von Tags an den Artikel heftbar gemacht werden, um individuelle Eigenschaften des Artikels beschreiben (und danach suchen) zu können.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;vector&gt;

class Article
{
   // Artikelnummer
   std::string ID_;

   // Klartext Artikelname
   std::string Name_;

   // Anzahl der verfügbaren Artikel
   unsigned int Available_;

   // Vektor mit (einfachsten) Tags
   std::vector&lt;std::string&gt; &gt; Tags_;

   ...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1799101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799101</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 27 Oct 2009 13:18:30 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Tue, 27 Oct 2009 14:04:12 GMT]]></title><description><![CDATA[<p>Vielen Dank,</p>
<p>Ich habe nun auf eine einzige Klasse umgeformt. Da es sich aber um eine Lagerverwaltung handeln soll, müsste man die Daten natürlich irgendwie zwischenspeichern. Da ich mit Datenbanken wie SQL noch nicht umgehen kann bleibt mir nur dass ganze via Textdatei zu lösen. Dabei stoße ich aber auf das Problem dass die textdatei um ein erfolgreiches Auslesen möglich zu machen in etwa so aussehen müsste:</p>
<pre><code>Artikel_name
Artikel_id
Artikel_preis
Artikel_name
Artikel_id
[...]
</code></pre>
<p>Aißerdem muss der Nutzer selbstständig neue Objekte hinzufügen können ohne den Quelltext zu ändern, zum Beispiel wenn ein neuer Artikel zum Sortiment hinzugefügt wird. Ist das realisierbar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799125</guid><dc:creator><![CDATA[serbud]]></dc:creator><pubDate>Tue, 27 Oct 2009 14:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Tue, 27 Oct 2009 14:12:22 GMT]]></title><description><![CDATA[<p>serbud schrieb:</p>
<blockquote>
<p>Ist das realisierbar?</p>
</blockquote>
<p>Klar. Du hast doch gerade schon gesagt, wie man das machen könnte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799131</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 27 Oct 2009 14:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Tue, 27 Oct 2009 14:14:20 GMT]]></title><description><![CDATA[<p>Nunja, meine Methode wäre aber auf gut Deutsch ziemlicher Mist weil unübersichtlich.</p>
<p>Ich dachte mehr an etwas wie</p>
<pre><code>Artikel_name, Artikel_id
Artikel_name, Artikel_id
</code></pre>
<p>Da frage ich mich aber wie ich innerhalb einer Zeile verschiedene TYpen lesen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799133</guid><dc:creator><![CDATA[serbud]]></dc:creator><pubDate>Tue, 27 Oct 2009 14:14:20 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Tue, 27 Oct 2009 14:23:52 GMT]]></title><description><![CDATA[<p>Ach so, dir geht es um ein gutes Format. Das ist doch kein Problem, da ist nur ein bisschen Phantasie gefragt.</p>
<p>Wenn man formatierte Daten aus Streams lesen will, nimmt man dazu normalerweise den Operator &gt;&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799141</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 27 Oct 2009 14:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Tue, 27 Oct 2009 14:36:29 GMT]]></title><description><![CDATA[<p>Nach meiner bisherigen Annahme liest der &gt;&gt; Operator ähnlich wie getline() aber eine ganze Zeile ein und springt dann zur nächsten? Wie teile ich ihm mit dass er z.B nur bis zu einem Komma lesen soll und wenn in der Zeile keines mehr vorhanden ist in die nächste springen soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799151</guid><dc:creator><![CDATA[serbud]]></dc:creator><pubDate>Tue, 27 Oct 2009 14:36:29 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Tue, 27 Oct 2009 14:39:22 GMT]]></title><description><![CDATA[<p>Du kannst getline() als dritten Parameter den gewünschten Delimiter mitgeben:<br />
<a href="http://www.cplusplus.com/reference/string/getline/" rel="nofollow">http://www.cplusplus.com/reference/string/getline/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799152</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Tue, 27 Oct 2009 14:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to Beispiel für Klassenanwendung inkl. map on Tue, 27 Oct 2009 14:47:28 GMT]]></title><description><![CDATA[<p>serbud schrieb:</p>
<blockquote>
<p>Nach meiner bisherigen Annahme liest der &gt;&gt; Operator ähnlich wie getline() aber eine ganze Zeile ein und springt dann zur nächsten? Wie teile ich ihm mit dass er z.B nur bis zu einem Komma lesen soll und wenn in der Zeile keines mehr vorhanden ist in die nächste springen soll?</p>
</blockquote>
<p>Deine Annahme ist (zumindest für std::string) falsch. Das genaue Verhalten liegt natürlich an der Definition des Operators (den man für eigene Klassen auch selber definieren kann) für die eingebauten Datentypen und die Typen aus der Standardbibliothek wird üblicherweise bis zum nächsten whitespace gelesen<sup>*</sup>.</p>
<p>In deinem Fall bietet sich natürlich eine Überladung des &gt;&gt; Operators für deine Klasse an, die dann intern mehrmals &quot;istream &gt;&gt; string&quot; benutzt.</p>
<p><sup>*</sup>: Dieses Verhalten kann man übrigens mit entsprechenden Flags ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799156</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 27 Oct 2009 14:47:28 GMT</pubDate></item></channel></rss>