<?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[Viele private Funktionen in Klasse schlechter Stil??]]></title><description><![CDATA[<p>Hallo!<br />
Mir wurde folgendes Vorgeworfen:<br />
Ich teile komplexe Funktionen natürlich in einige auf und habe immer gedacht dass der Code dadurch besser lesbar und wartbar wird.<br />
Jetzt wurde mir vorgeworfen dass dass sowas eher prodezualer C-Stil sei und kein guter C++! Angeblich sollte ich mehr Klassen verwenden!?!?!<br />
Warum das?<br />
Komplexe Aufgaben habe ich bis jetzt immer stark unterteilt - aber eigendlich immer sinnvoll!</p>
<pre><code class="language-cpp">class NASA
{
    int   m_missions_status;
    float m_verstrichene_zeit;
    int   m_anzahl_astronauten;
    int   m_verstorbene_hunde;

    void suche_astronauten();
    void bilde_astronauten_aus();
    void baue_raumfähre();
    void beseitige_maengel_recursiv();
    void schiesse_hund_zum_mond();
    bool werte_hundemangen_aus_ob_mond_aus_kaese();
    void sortiere_laktosetolerante_astronauten_aus();
    void suche_laktoseintolerante_astronauten();
    void bilde_laktoseintolerante_astronauten_aus();
    void ersetze_bereits_pensionierte_astronauten();
    void schiesse_astronauten_zum_mond();

public:
    void starte_modmission()
    {
         suche_astronauten();
         bilde_astronauten_aus();
         baue_raumfähre();
         beseitige_maengel_recursiv();
         schiesse_hund_zum_mond();
         bool kaese = werte_hundemangen_aus_ob_mond_aus_kaese();
         if( kaese )
         {
              sortiere_laktosetolerante_astronauten_aus();
              suche_laktoseintolerante_astronauten();
              bilde_laktoseintolerante_astronauten_aus();
         }
         ersetze_bereits_pensionierte_astronauten();
         schiesse_astronauten_zum_mond();
    }
};
</code></pre>
<p>Was ist daran auszusetzen?! <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="😕"
    /> <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/topic/242762/viele-private-funktionen-in-klasse-schlechter-stil</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 18:20:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242762.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Jun 2009 21:09:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:09:34 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Mir wurde folgendes Vorgeworfen:<br />
Ich teile komplexe Funktionen natürlich in einige auf und habe immer gedacht dass der Code dadurch besser lesbar und wartbar wird.<br />
Jetzt wurde mir vorgeworfen dass dass sowas eher prodezualer C-Stil sei und kein guter C++! Angeblich sollte ich mehr Klassen verwenden!?!?!<br />
Warum das?<br />
Komplexe Aufgaben habe ich bis jetzt immer stark unterteilt - aber eigendlich immer sinnvoll!</p>
<pre><code class="language-cpp">class NASA
{
    int   m_missions_status;
    float m_verstrichene_zeit;
    int   m_anzahl_astronauten;
    int   m_verstorbene_hunde;

    void suche_astronauten();
    void bilde_astronauten_aus();
    void baue_raumfähre();
    void beseitige_maengel_recursiv();
    void schiesse_hund_zum_mond();
    bool werte_hundemangen_aus_ob_mond_aus_kaese();
    void sortiere_laktosetolerante_astronauten_aus();
    void suche_laktoseintolerante_astronauten();
    void bilde_laktoseintolerante_astronauten_aus();
    void ersetze_bereits_pensionierte_astronauten();
    void schiesse_astronauten_zum_mond();

public:
    void starte_modmission()
    {
         suche_astronauten();
         bilde_astronauten_aus();
         baue_raumfähre();
         beseitige_maengel_recursiv();
         schiesse_hund_zum_mond();
         bool kaese = werte_hundemangen_aus_ob_mond_aus_kaese();
         if( kaese )
         {
              sortiere_laktosetolerante_astronauten_aus();
              suche_laktoseintolerante_astronauten();
              bilde_laktoseintolerante_astronauten_aus();
         }
         ersetze_bereits_pensionierte_astronauten();
         schiesse_astronauten_zum_mond();
    }
};
</code></pre>
<p>Was ist daran auszusetzen?! <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="😕"
    /> <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/1722989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722989</guid><dc:creator><![CDATA[Killerqueen]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:09:34 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:21:06 GMT]]></title><description><![CDATA[<p>bei dir werden nur die anzahlen der hunde und astronauten gespeichert. damit kannst du wohl die ausbildung und den hundemagen schlecht abbilden.<br />
willst du dein modell gemauer machen, wirste nicht die klassen Hund und Austronaut vermeiden können. vielleicht auch Trainingslager, Raumfähre, Mond, Magen. je nachdem, was du modellieren willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722993</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:21:06 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:25:01 GMT]]></title><description><![CDATA[<p>Hmmm ... Astronauten und Hundeklasse hätte ich wohl wirklich nicht so schnell gemacht...<br />
Wenn ich ausbildungsgrad und magenstatus einbauen wollte hätte ich wohl ein array und ein bool genommen....<br />
Ab wann ist denn eine extra Klasse empfehlenswert? <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/1722995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722995</guid><dc:creator><![CDATA[Killerqueen]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:25:01 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:32:02 GMT]]></title><description><![CDATA[<p>Killerqueen schrieb:</p>
<blockquote>
<p>Hmmm ... Astronauten und Hundeklasse hätte ich wohl wirklich nicht so schnell gemacht...<br />
Wenn ich ausbildungsgrad und magenstatus einbauen wollte hätte ich wohl ein array und ein bool genommen....<br />
Ab wann ist denn eine extra Klasse empfehlenswert? <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>
</blockquote>
<p>sofort, denn da kannst du die ausbildungsfunktion reistopfen. das macht dann die einzelnen klassen schlanger und jede ist für ihre eigenen angelegenheiten (und vor allem fehler!!!) verantwortlich. das kann die fehlersuchzeit enorm reduzieren.<br />
stell dir vor, du programmierst die NASA und Hund, Astronaut und so werden von Programmiersklaven gebaut. du versuchst, so viel wie sinnvoll noch möglich der verantwortung in die anderen klassen abzuschieben.<br />
man kann dann einzeln testen, ob astronauten wie gewünscht funktionieren. das ganze zusammenspiel der astronatenfunktionen. und die NASA muss sich nicht mehr drum kümmern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722997</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:32:02 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:37:00 GMT]]></title><description><![CDATA[<p>Das kling gut <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="🙂"
    /><br />
Und was mache ich wenn es keine logische Aufteilung gibt? Also bei Hund Astronaut etc ist es ja noch recht eindeutig .... gibt es da vielleicht Tricks? <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="😕"
    /><br />
Entschuldige meine Einfallslosigkeit! Mir fällt gerade kein passendes Beispiel ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723000</guid><dc:creator><![CDATA[Killerqueen]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:43:04 GMT]]></title><description><![CDATA[<p>Killerqueen schrieb:</p>
<blockquote>
<p>gibt es da vielleicht Tricks? <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>
</blockquote>
<p>Was mir manchmal hilft: Einfach in einem Kommentar über die Klasse schreiben, was sie macht. Wenn ein &quot;und&quot; im Kommentar vorkommt, ist's Zeit zum Aufspalten <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="🙂"
    /> Man sagt &quot;Pro Klasse eine Aufgabe&quot; (nicht zu verwechseln mit &quot;Pro Aufgabe eine Klasse&quot;) und ob sie noch mehr macht, merkt man (ok, ich zumindest) oft erst beim Erklären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723005</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:43:34 GMT]]></title><description><![CDATA[<p>Killerqueen schrieb:</p>
<blockquote>
<p>Und was mache ich wenn es keine logische Aufteilung gibt?</p>
</blockquote>
<p>Meistens ergibt sich so eine mit der Zeit. Du musst dir überlegen, was man zusammenfassen könnte, was ähnliche Funktionalität hat, was voneinander abhängig ist. Gut funktioniert es auch, wenn du in &quot;Objekten&quot; denkst (hier wären das eben z.B. &quot;Hund&quot; und &quot;Astronaut&quot;). Sobald ein &quot;Objekt&quot; einen eigenen Status hat und du merkst, mehrere Variablen zur Beschreibung dieses Zustands zu benötigen, kann sich eine Auslagerung lohnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723006</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:49:18 GMT]]></title><description><![CDATA[<p>Okay ... danke Leute <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Ich werd ein bisschen experimentieren.</p>
<p>Aber was ist der Unterschied zwischen<br />
Eine Klasse/Aufgabe<br />
Eine Aufgabe/Klasse? <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="😕"
    /> <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/1723008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723008</guid><dc:creator><![CDATA[Killerqueen]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:54:22 GMT]]></title><description><![CDATA[<p>Das ist mehr so ein Grundsatz als wirklich wörtlich gemeint.</p>
<p>Für eine Aufgabe können ruhig mehrere Klassen zuständig sein, kommt eben drauf an, wie gross die Aufgabe ist. Meistens ist es doch so, dass diese in Teilaufgaben zerlegt werden kann, für welche wiederum einzelne Klassen zuständig sind.</p>
<p>Hingegen sollte es eher nicht vorkommen, dass eine Klasse mehrere Aufgaben übernimmt, die eigentlich nichts miteinander zu tun haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723010</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:54:22 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:59:53 GMT]]></title><description><![CDATA[<p>Killerqueen schrieb:</p>
<blockquote>
<p>Das kling gut <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="🙂"
    /><br />
Und was mache ich wenn es keine logische Aufteilung gibt? Also bei Hund Astronaut etc ist es ja noch recht eindeutig .... gibt es da vielleicht Tricks? <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="😕"
    /><br />
Entschuldige meine Einfallslosigkeit! Mir fällt gerade kein passendes Beispiel ein.</p>
</blockquote>
<p>Du liest Dir die Spielregeln durch und nimmst die Begriffe raus, das werden die Klassen. Naja, so ungefähr. Es wäre gut, wenn Du es mal eine Weile lang übertreiben würdest, also zu viele zu kleine Klassen machen. Wenn DU dann beide Welten kennst, schlägst Du einen gesunden Mittelweg ein. Der wird aber &quot;Ein Zweck - eine Klasse!&quot; als wesentliches Merkmal immer behalten.</p>
<p>Ach ja, und alle Generalisierungen sind falsch. Egal, was Du beim Programmieren dogmatisch durchziehst, es wird suboptimal werden. Experimentiere rum und mach am Ende das, was zu den wenigsten Fehlern und Schreibblockaden führt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723011</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:57:13 GMT]]></title><description><![CDATA[<p>Super!<br />
Aber wenn ich so viele Klassen verwende kann es doch unter Umständen vorkommen dass diese keine member-Daten enthalten?<br />
Sind das dann schon zu viele Klassen?<br />
Ist so eine Klasse generell sinnvoll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723012</guid><dc:creator><![CDATA[Killerqueen]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:57:13 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 21:59:50 GMT]]></title><description><![CDATA[<p>Killerqueen schrieb:</p>
<blockquote>
<p>Ist so eine Klasse generell sinnvoll?</p>
</blockquote>
<p>Nein, meistens eigentlich nicht. Wenn die Klasse nur Funktionen anbietet, können diese normalerweise auch ebenso gut global sein (unter Umständen in einem Namensraum). Denn eine Instanz von so einer Klasse repräsentiert meistens nichts.</p>
<p>(Ausnahmen wie zum Beispiel in der Metaprogrammierung gibt es natürlich immer, aber die sind hier nicht gross von Bedeutung.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723014</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 07 Jun 2009 21:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 22:01:46 GMT]]></title><description><![CDATA[<blockquote>
<p>(Ausnahmen wie zum Beispiel in der Metaprogrammierung gibt es natürlich immer, aber die sind hier nicht gross von Bedeutung.)</p>
</blockquote>
<p>Es gibt nochmal eine Ausnahme, welche mir nicht unwichtig erscheint.<br />
Na, was hat Funktionen, aber keine Datenmember? - Die kennen wir doch alle.<br />
Genau. Abstrakte Basisklassen. <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>Das sind jetzt weniger Klasse im Sinne des TO's, aber imo dennoch nicht ausser Acht zu lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723015</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 07 Jun 2009 22:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Sun, 07 Jun 2009 22:02:51 GMT]]></title><description><![CDATA[<p>Stimmt, hab ich völlig vergessen, interfacemässige Klassen. Danke für den Nachtrag. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1723017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723017</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 07 Jun 2009 22:02:51 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Tue, 09 Jun 2009 15:29:21 GMT]]></title><description><![CDATA[<p>So nun noch eine konkrete Frage:<br />
Ich habe für eine member-Funktion eine Hilfsklasse definiert die 2 Zeiger managet.<br />
Meine Funktion braucht als ARgument eine Refernez vom eigenen Typ:<br />
bool raumfaehre::kollidiere(raumfaehre&amp;);<br />
Daher ist Pro raumfaehre eine Hilfsklasseninstanz nötig.</p>
<p>&lt;b&gt;Ist es sinnvoll die Funktionalität in die Klasse raumfaehre zu packen und dabei diese um 2 Zeiger schwerer zu machen, welche nur für die eine Funktion und ihrer Unterfunktionen benötigt werden?&lt;/b&gt;</p>
<p>Oder soll ich ganz auf Komfort setzen und jede Hilfsklasse per member varible auf eine raumfaehre beziehen:</p>
<p>Also statt:</p>
<pre><code class="language-cpp">bool raumfaehre::kollidiere(raumfaehre&amp; raumfaehreB)
{
   kollisionshelferA.berechne_bahn( *this );
   kollisionshelferB.berechne_bahn( raumfaehreB );

   //oder

   kollisions_helfer_t kollisionshelferA(this);
   kollisions_helfer_t kollisionshelferB(&amp;raumfaehreB);

   kollisionshelferA.berechne_bahn();
   //...
}
</code></pre>
<p>Ich brauche für die Aufgabe bestmögliche Performance!</p>
<p>Oder ist sowas eigendlich egal?!</p>
<p><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="😕"
    /> <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="😕"
    /> <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/1723940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723940</guid><dc:creator><![CDATA[Killerqueen]]></dc:creator><pubDate>Tue, 09 Jun 2009 15:29:21 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Tue, 09 Jun 2009 15:56:50 GMT]]></title><description><![CDATA[<p>Wenn bei der Kollision beide beteiligten Objekte gleich behandelt werden (es also keine Rolle spielt, ob A mit B kollidiert oder B mit A), würde ich eher eine globale Funktion als eine Memberfunktion nehmen:</p>
<pre><code class="language-cpp">void kollidiere(raumfaehre&amp; a, raumfaehre&amp; b);
</code></pre>
<p>Zu deinen Kollisionshelfern: Da glaube ich, nicht ganz alles verstanden zu haben. Sind die global oder woher kennt sie die Funktion? Ist eine Raumfähre immer an einen Kollisionshelfer (z.B. über einen Zeiger) gebunden? Oder was für eine Beziehung (auch semantisch, nicht nur technisch) gibt es da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723952</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 09 Jun 2009 15:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Tue, 09 Jun 2009 16:04:18 GMT]]></title><description><![CDATA[<p>Nun, die beiden Helfer werden innerhalb der Kollisionsfunktion lokal instanziiert.<br />
Bei der Kollision wird jedes Polygon von Fähre A mit B getestet ob sie sich schneiden/berühren.<br />
Dabei brauche ich 2 Zeiger auf die Kanten der Polygone, welche das gegnerische Polygon berührt oder schneidet..... jedenfalls muss viel mit den Zeigern hantiert werden darum habe ich eine extra Klasse dafür erstellt....</p>
<p>Gegen die globale Funktion würde ich folgendes einwenden:<br />
da sie exzessiv raumfaehren-Daten benötigt müsste ich sie als friend deklarieren was ich irgendwie hässlich finde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723958</guid><dc:creator><![CDATA[Killerqueen]]></dc:creator><pubDate>Tue, 09 Jun 2009 16:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Tue, 09 Jun 2009 16:17:13 GMT]]></title><description><![CDATA[<p>Killerqueen schrieb:</p>
<blockquote>
<p>Gegen die globale Funktion würde ich folgendes einwenden:<br />
da sie exzessiv raumfaehren-Daten benötigt müsste ich sie als friend deklarieren was ich irgendwie hässlich finde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Wahrscheinlich hast du noch keine richtige Schnittstelle für deine Raumfähren eingerichtet.</p>
<p><code>friend</code> sollte nicht nötig sein, wenn man Get-/Set-Funktionen zur Verfügung stellt. Meist ist es auch sicherer und besser wartbar, wenn von aussen über Funktionen zugegriffen wird. Zum Beispiel kannst du dann Zugriffe mitloggen.</p>
<p>Und zu den exzessiven Daten: Du musst ja nicht Dutzende von Funktionen anbieten. Eine Idee wäre eine kleine Struktur, zum Beispiel <code>CollisionData</code> , die für die Kollision wichtige Attribute zusammenfasst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723965</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 09 Jun 2009 16:17:13 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Tue, 09 Jun 2009 16:24:44 GMT]]></title><description><![CDATA[<p>Hmmm ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ... mir fällt gerade ein:<br />
Nach einer Kollision bleibt nur eine Fähre übrig also muss die zweite ohnehin deletet werden. Vielleicht ist dann eine nicht-globale Lösung besser?</p>
<p>Aber bei all dem bleibt dann noch das Problem mit meiner Hilfsklasse!!!!<br />
Diese behinhaltet nämlich jeweils 2 KANTEN eines Polygons und muss lauter für die Kollision spezifische Sachen machen .... <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/1723967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723967</guid><dc:creator><![CDATA[Killerqueen]]></dc:creator><pubDate>Tue, 09 Jun 2009 16:24:44 GMT</pubDate></item><item><title><![CDATA[Reply to Viele private Funktionen in Klasse schlechter Stil?? on Tue, 09 Jun 2009 16:39:21 GMT]]></title><description><![CDATA[<p>Killerqueen schrieb:</p>
<blockquote>
<p>Vielleicht ist dann eine nicht-globale Lösung besser?</p>
</blockquote>
<p>Nein, <code>a.kollidiere(b)</code> bleibt ja nach wie vor das Gleiche wie <code>b.kollidiere(a)</code> . Darum geht es eigentlich. Wenn die Funktion nicht symmetrisch wäre, also zum Beispiel immer die übergebene Raumfähre zerstört würde, wäre das wieder etwas anderes.</p>
<p>Du sagst ja auch nicht &quot;b wird von a kollidiert&quot;. Entweder &quot;a und b kollidieren&quot; oder &quot;a kollidiert mit b&quot;, bei letzterem könnte man aber ebenso gut &quot;b kollidiert mit a&quot; sagen. Ich habe hier natürlich vorausgesetzt, dass die Semantik wirklich gleich bleibt, wenn man die Argumente vertauscht.</p>
<p>Killerqueen schrieb:</p>
<blockquote>
<p>Aber bei all dem bleibt dann noch das Problem mit meiner Hilfsklasse!!!!<br />
Diese behinhaltet nämlich jeweils 2 KANTEN eines Polygons und muss lauter für die Kollision spezifische Sachen machen .... <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>
</blockquote>
<p>Aber eben, kannst du die Schnittstelle nicht entsprechend anpassen? Zum Beispiel so:</p>
<pre><code class="language-cpp">struct physikdaten
{
    // physikalische Dinge wie Position, Geschwindigkeit, ...
    // halt welche Eigenschaften für Kollision relevant sind.
};

class raumfaehre
{
    public:
        const physikdaten&amp; get_kollisionsdaten() const;
        void               set_kollisionsdaten(const physikdaten&amp; daten);
    private:
        physikdaten        meine_physik;
};

class kollisionshelfer
{
    public:
                           kollisionshelfer(raumfaehre&amp; bezugsobjekt);
        void               berechne_schaden();
        void               schleudere_astronauten_ins_all();

     private:
        raumfaehre&amp;        meine_faehre;
};
</code></pre>
<p>Nur so ein Vorschlag, ich weiss zu wenig Konkretes über dein Design. Intern könnte der Kollisionshelfer dann auf die Getter und Setter der Raumfähre zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1723977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1723977</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 09 Jun 2009 16:39:21 GMT</pubDate></item></channel></rss>