<?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[Programmstruktur]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin leicht am Verzweifeln was meine Programmstruktur angeht (wahrscheinlich ist der ein oder andere jetzt schon am durchdrehen ^^ ich bin Neuling und würde mich über jede Hilfe freuen). Ich versuche es euch möglichst einfach zu beschreiben.</p>
<p>Ich besitze 3 Klassen, welche jeweils Rechenfunktionen einer 4. Klasse nutzen. Das Problem ist folgendes: Die 4. Klasse sollte nur einmal initialisiert werden und diese Parameter von den 3 Klassen bei Nutzung der 4. Klasse genutzt werden. Deshalb übergebe ich an die 3 Klassen dasselbe Objekt an derer Konstruktoren.</p>
<p>Die Nutzung der Funktionen der 4. Klasse gestaltet sich meiner Ansicht nach als sehr kompliziert, deshalb suche ich nach einer Alternative.</p>
<p>Macht hier static einen Sinn? Mir fehlt wahrscheinlich die Erfahrung, aber ich hoffe hierdurch dazulernen zu können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Vielen Dank und Grüße<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/310609/programmstruktur</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 13:19:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/310609.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Nov 2012 11:05:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 11:05:28 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin leicht am Verzweifeln was meine Programmstruktur angeht (wahrscheinlich ist der ein oder andere jetzt schon am durchdrehen ^^ ich bin Neuling und würde mich über jede Hilfe freuen). Ich versuche es euch möglichst einfach zu beschreiben.</p>
<p>Ich besitze 3 Klassen, welche jeweils Rechenfunktionen einer 4. Klasse nutzen. Das Problem ist folgendes: Die 4. Klasse sollte nur einmal initialisiert werden und diese Parameter von den 3 Klassen bei Nutzung der 4. Klasse genutzt werden. Deshalb übergebe ich an die 3 Klassen dasselbe Objekt an derer Konstruktoren.</p>
<p>Die Nutzung der Funktionen der 4. Klasse gestaltet sich meiner Ansicht nach als sehr kompliziert, deshalb suche ich nach einer Alternative.</p>
<p>Macht hier static einen Sinn? Mir fehlt wahrscheinlich die Erfahrung, aber ich hoffe hierdurch dazulernen zu können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Vielen Dank und Grüße<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271409</guid><dc:creator><![CDATA[thomas0815]]></dc:creator><pubDate>Fri, 16 Nov 2012 11:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 11:17:32 GMT]]></title><description><![CDATA[<p>Kannst du das mal in (Pseudo-)code präsentieren, wie du es jetzt hast? Das klingt so, als wärst du der &quot;alles muss eine Klasse sein&quot;-Krankheit verfallen, aber ich bin mir nicht sicher, ob die Diagnose stimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271415</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 16 Nov 2012 11:17:32 GMT</pubDate></item><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 11:55:46 GMT]]></title><description><![CDATA[<p>Klasse 1 stellt Basis(Rechen-)Funktionen bereit, welche alle anderen Klassen nutzen. Wie bereits erwähnt, soll eine Initialisierung (aufgrund des hohen Rechenaufwands) nur einmal erfolgen - die Funktionen mit den initialisierten Variablen sollen dann von allen anderen Klassen genutzt werden können. Bisher habe ich diese Funktionen ohne Klasse zur Verfügung gestellt und musste demnach die Variablen mit jedem Zugriff neu initialisieren - dieser Rechenaufwand soll nun entfallen.</p>
<p>Klasse 2-4 stellen alle anderen Klassen dar, welche die Funktionen in Klasse 1 auf unterschiedliche Arten verwenden.</p>
<p>Klasse 5 ist ein Logger, der ähnlich wie Klasse 1, nur einmal initialisiert und dann von Klasse 1-4 verwendet werden kann. Das habe ich bisher mit static realisiert, bin aber nicht so ganz glücklich darüber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271426</guid><dc:creator><![CDATA[thomas0815]]></dc:creator><pubDate>Fri, 16 Nov 2012 11:55:46 GMT</pubDate></item><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 12:07:56 GMT]]></title><description><![CDATA[<p>Kannst du das mal in (Pseudo-)code präsentieren, wie du es jetzt hast? Das klingt so, als wärst du der &quot;alles muss eine Klasse sein&quot;-Krankheit verfallen, <s>aber</s> ich bin mir <s>nicht</s> sicher, <s>ob</s> dass die Diagnose stimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271428</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 16 Nov 2012 12:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 12:15:07 GMT]]></title><description><![CDATA[<p>hmm, hört sich für mich nach einer möglichkeit für ein singleton an.</p>
<pre><code>#ifndef TSINGLETON
#define TSINGLETON

template &lt;class T&gt;
class TSingleton
{
protected:
    static T *m_pSingleton;

public:
    inline static T* Get()
    {
        if (!m_pSingleton)
            m_pSingleton = new T;

        return m_pSingleton;
    }

    void Del()
    {
        if (m_pSingleton)
        {
            delete (m_pSingleton);
            m_pSingleton = NULL;
        }
    }
};
template &lt;class T&gt;
T* TSingleton&lt;T&gt;::m_pSingleton = 0;
#endif
</code></pre>
<p>lässt klasse 1 und 5 jeweils von singleton erben</p>
<pre><code>class Logger : public TSingleton&lt;Logger&gt;
{
...
};

void foo()
{
   Logger *pLogger = Logger::Get(); // der erste &quot;Get&quot; aufruft erstellt das object
}
</code></pre>
<p>Du darfst nur nicht vergessen, wenn du den kram nicht mehr brauchst, &quot;Del()&quot; aufzurufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271429</guid><dc:creator><![CDATA[DNKpp]]></dc:creator><pubDate>Fri, 16 Nov 2012 12:15:07 GMT</pubDate></item><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 12:17:34 GMT]]></title><description><![CDATA[<p>Ein Vogel zwitscherte mir mal das Singletons das pure böse sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271432</guid><dc:creator><![CDATA[Flutscherino]]></dc:creator><pubDate>Fri, 16 Nov 2012 12:17:34 GMT</pubDate></item><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 12:22:01 GMT]]></title><description><![CDATA[<p>warum begründen hier eigentlich so wenige leute ihre aussagen/behauptungen.<br />
was soll ich jetzt deiner meinung nach machen? direkt nie wieder ansehen, weil dir &quot;ein vogel was gezwitschert&quot; hat?<br />
also meiner meinung nach wäre hier ein &quot;warum&quot; echt hilfreich... (ich mein, ich beteilige mich hier nicht grundlos an manchen diskussionen. irgendwas will ich daraus mitnehmen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271436</guid><dc:creator><![CDATA[DNKpp]]></dc:creator><pubDate>Fri, 16 Nov 2012 12:22:01 GMT</pubDate></item><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 12:26:34 GMT]]></title><description><![CDATA[<p>Flutscherino schrieb:</p>
<blockquote>
<p>Ein Vogel zwitscherte mir mal das Singletons das pure böse sind.</p>
</blockquote>
<p>Ja, weil es nichts anderes als eine globale Variabel ist. Trotzdem hat auch dieses Design Pattern seine Anwendungsfälle. Nämlich dann, wenn es nur eine Instanz geben kann bzw. soll.</p>
<p>Das trifft auf begrenzt vorhandene Ressourcen und auch auf Logging-Klassen durchaus zu.</p>
<p>Ob man Get und Del natürlich genau so implementiert ist Problemabhängig, aber es geht ja um ein Konzept.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271440</guid><dc:creator><![CDATA[vbnvbn]]></dc:creator><pubDate>Fri, 16 Nov 2012 12:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to Programmstruktur on Fri, 16 Nov 2012 17:25:06 GMT]]></title><description><![CDATA[<p>anti-freak schrieb:</p>
<blockquote>
<p>hmm, hört sich für mich nach einer möglichkeit für ein singleton an.</p>
</blockquote>
<p>Ne überhaupt nicht!</p>
<p>Außerdem sollte man <strong>nie von einem Singleton erben</strong>, damit schränkt das Design noch mehr ein.</p>
<p>Zurück zum Ausgangsproblem:</p>
<p>Die Klasse, von der es aus kostengründen nur ein Objekt geben soll, via Constructor an die nutzenden Objekte zu geben ist sinnvoll.<br />
Das nennt sich übrigens <strong>dependency injection</strong>.</p>
<p>Vermutlich besteht das Problem darin zu entscheiden, welche Funktion in KlasseA gehört und welche in KlasseB, C, D.</p>
<p>Wir kennen deine Anforderungen leider nicht genau genug, aber folgende Mutmaßungen stelle ich jetzt mal an.</p>
<p>Klassen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B-D"
      alt="😎"
    /> sind im Grunde genommen Stratgien -&gt; siehe Strategie-Pattern, da könnte man für die <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B-D"
      alt="😎"
    /> eine gemeinesame Basis-Klasse schaffen, und die benutzt KlasseA</p>
<p>und/oder</p>
<p>Klassen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B-D"
      alt="😎"
    /> können ersetzt werden durch Policy-Based Design, d.h.<br />
KlasseB erhält im Constructor den A-Pointer und ihre &quot;Aufgabe&quot;, bspw. eine freie Funktion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2271522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2271522</guid><dc:creator><![CDATA[nurf]]></dc:creator><pubDate>Fri, 16 Nov 2012 17:25:06 GMT</pubDate></item></channel></rss>