<?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[Geschmacksfrage: Ist ein Algorithmus eine Klasse?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe einen komplexen C++-Source von jemandem übernommen, der vom Typ her ein C-Programmierer ist. Der Source besteht aus mehreren Algorithmen, die jeweils aus zahlreichen Einzelfunktionen bestehen, die einfach hintereinander abgearbeitet werden. Eine gewissen Gruppierung wurde durch Namespaces erzielt, aber die sind nested und bis zu drei Ebenen tief. Der Code ist schwer lesbar, und ich muß ihn umorganisieren, damit er wartbar wird.</p>
<p>Ich halte es für sinnvoll, pro Algorithmus eine eigene Klasse zu machen, die dessen Einzelfunktionen gruppiert und auf natürliche Weise nach außen kapselt. Andererseits besteht nach meinem Verständnis ein Objekt aus Daten _und_ Methoden, aber nicht aus Methoden alleine. Was denkt Ihr, sollte eine zusammengehörige Ansammlung von Funktionen eine Klasse sein?</p>
<p>lg<br />
bts</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268162/geschmacksfrage-ist-ein-algorithmus-eine-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 00:14:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268162.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 05 Jun 2010 09:41:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 09:41:27 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe einen komplexen C++-Source von jemandem übernommen, der vom Typ her ein C-Programmierer ist. Der Source besteht aus mehreren Algorithmen, die jeweils aus zahlreichen Einzelfunktionen bestehen, die einfach hintereinander abgearbeitet werden. Eine gewissen Gruppierung wurde durch Namespaces erzielt, aber die sind nested und bis zu drei Ebenen tief. Der Code ist schwer lesbar, und ich muß ihn umorganisieren, damit er wartbar wird.</p>
<p>Ich halte es für sinnvoll, pro Algorithmus eine eigene Klasse zu machen, die dessen Einzelfunktionen gruppiert und auf natürliche Weise nach außen kapselt. Andererseits besteht nach meinem Verständnis ein Objekt aus Daten _und_ Methoden, aber nicht aus Methoden alleine. Was denkt Ihr, sollte eine zusammengehörige Ansammlung von Funktionen eine Klasse sein?</p>
<p>lg<br />
bts</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907166</guid><dc:creator><![CDATA[bts2]]></dc:creator><pubDate>Sat, 05 Jun 2010 09:41:27 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 09:46:09 GMT]]></title><description><![CDATA[<p>Eine Klasse muss in sich funktionieren und erhält von aussen nur bestimmte Parameter unter denen sie ihre Arbeit ausführt.<br />
Eine Ansammlung von Funktionen ist eben nur das. Eine Klasse ist ein Objekt, welches mehr oder weniger eigenständig arbeitet.</p>
<blockquote>
<p>Ich habe einen komplexen C++-Source von jemandem übernommen, der vom Typ her ein C-Programmierer ist</p>
</blockquote>
<p>Ich will jetzt nicht bashen, aber genau das is denke ich das Problem :D.<br />
rya.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907168</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 05 Jun 2010 09:46:09 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 10:10:29 GMT]]></title><description><![CDATA[<p>Du brauchst keine Klasse zu bemühen um etwas zu Gruppieren oder nach aussen zu kapseln. Ein Algorithmus ist ein Objekt, wenn er einen Zustand hat. Auch wenn Du deine Algorithmen polymorph verwenden möchtest benötigst du Klassen. In Kombination mir der STL empfiehlt es sich ausserdem manchmal eine 'Funktion' von den stl Basisklassen für Funktoren abzuleiten.</p>
<p>Wenn das alles nicht zutrifft, brauchst du keine Klasse. Implementierungen kannst du auch vor dem Anwender in der Implementierungsdatei verstecken. Im Header braucht nur die Deklaration der aufzurufenden Funktionen zu stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907187</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 05 Jun 2010 10:10:29 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 10:17:24 GMT]]></title><description><![CDATA[<p>bts2 schrieb:</p>
<blockquote>
<p>Der Source besteht aus mehreren Algorithmen, die jeweils aus zahlreichen Einzelfunktionen bestehen, die einfach hintereinander abgearbeitet werden.</p>
</blockquote>
<p>Solange keine Threads vorkommen, ist das auch in einem objektorientierten Programm der Fall <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>
<p>bts2 schrieb:</p>
<blockquote>
<p>Eine gewissen Gruppierung wurde durch Namespaces erzielt, aber die sind nested und bis zu drei Ebenen tief.</p>
</blockquote>
<p>Uh! Wie schlimm!<br />
Das ist bei mir Standard:<br />
<code>&lt;firma&gt;::&lt;library&gt;::&lt;teilbereich&gt;</code></p>
<p>bts2 schrieb:</p>
<blockquote>
<p>Der Code ist schwer lesbar, und ich muß ihn umorganisieren, damit er wartbar wird.</p>
</blockquote>
<p>Erinnert mich an irgendeinen Thread, wo es mal hiess, dass man den Code von anderen Programmierer nie für wartbar hält <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>bts2 schrieb:</p>
<blockquote>
<p>Ich halte es für sinnvoll, pro Algorithmus eine eigene Klasse zu machen, die dessen Einzelfunktionen gruppiert und auf natürliche Weise nach außen kapselt. Andererseits besteht nach meinem Verständnis ein Objekt aus Daten _und_ Methoden, aber nicht aus Methoden alleine. Was denkt Ihr, sollte eine zusammengehörige Ansammlung von Funktionen eine Klasse sein?</p>
</blockquote>
<p>Objekte müssen nicht immer reale Objekte repräsentieren und somit auch nicht immer Daten halten. Sieh dir zum Beispiel das <a href="http://en.wikipedia.org/wiki/Strategy_pattern" rel="nofollow">Strategy-Pattern</a> an.<br />
Allerdings muss auch nicht immer alles in einer Klasse stehen. Um ein paar Funktionen zu gruppieren, kann man auch Namensräume mit freien Funktionen verwenden. Mache ich des Öftern.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907194</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 05 Jun 2010 10:17:24 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 11:03:39 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Objekte müssen nicht immer reale Objekte repräsentieren und somit auch nicht immer Daten halten. Sieh dir zum Beispiel das <a href="http://en.wikipedia.org/wiki/Strategy_pattern" rel="nofollow">Strategy-Pattern</a> an.</p>
</blockquote>
<p>Nur mal eine theoretische Frage...<br />
Welchen Vorteil bietet mir das Objekt für einen Algorithmus beim Strategy-Pattern<br />
gegenüber einem Funktionszeiger? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907229</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 05 Jun 2010 11:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 11:09:29 GMT]]></title><description><![CDATA[<p>Mehr Flexibilität. Ich kann beliebige Argumente an ein Objekt &quot;binden&quot;.<br />
Kann man mit <code>function</code> oder einer eigenen Strategie Klasse machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907233</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 05 Jun 2010 11:09:29 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 11:09:44 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>Nur mal eine theoretische Frage...<br />
Welchen Vorteil bietet mir das Objekt für einen Algorithmus beim Strategy-Pattern<br />
gegenüber einem Funktionszeiger? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Einhalten der Schnittstelle. Vielleicht benötigen gewisse Algorithmen zusätzliche Daten und andere nicht. Man könnte natürlich auch alles über <code>boost::function</code> oder ähnliches lösen, aber zum Teil ist auch einfach eine Basisklasse für die verschiedenen Strategien sauberer und auch lesbarer.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907234</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 05 Jun 2010 11:09:44 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 11:14:59 GMT]]></title><description><![CDATA[<p>Stimmt allerdings...</p>
<p>thx</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907237</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 05 Jun 2010 11:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 11:30:20 GMT]]></title><description><![CDATA[<p>bts2 schrieb:</p>
<blockquote>
<p>Ich habe einen komplexen C++-Source von jemandem übernommen, der vom Typ her ein C-Programmierer ist. Der Source besteht aus mehreren Algorithmen, die jeweils aus zahlreichen Einzelfunktionen bestehen, die einfach hintereinander abgearbeitet werden. Eine gewissen Gruppierung wurde durch Namespaces erzielt, aber die sind nested und bis zu drei Ebenen tief. Der Code ist schwer lesbar, und ich muß ihn umorganisieren, damit er wartbar wird.</p>
<p>Ich halte es für sinnvoll, pro Algorithmus eine eigene Klasse zu machen, die dessen Einzelfunktionen gruppiert und auf natürliche Weise nach außen kapselt.</p>
</blockquote>
<p>Hört sich so an, als ob der &quot;C-Programmierer&quot; ein richtiger C++ Profi war und du ein Java Programmierer bist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907249</guid><dc:creator><![CDATA[sofafurz]]></dc:creator><pubDate>Sat, 05 Jun 2010 11:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 11:54:05 GMT]]></title><description><![CDATA[<p>Meistens kommt wohl nicht viel dabei heraus, wenn man sortByFoo(v) umschreibt zu Foo().sort(v). Aber es gibt Lehrbücher, die lehren die Vererbung anhand von Bubblesort:Sort, BerechneKreis:BerechneGeo und ähnlichen Albernheiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907262</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 05 Jun 2010 11:54:05 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 13:32:12 GMT]]></title><description><![CDATA[<p>bts2 schrieb:</p>
<blockquote>
<p>Ich halte es für sinnvoll, pro Algorithmus eine eigene Klasse zu machen, die dessen Einzelfunktionen gruppiert und auf natürliche Weise nach außen kapselt. Andererseits besteht nach meinem Verständnis ein Objekt aus Daten _und_ Methoden, aber nicht aus Methoden alleine. Was denkt Ihr, sollte eine zusammengehörige Ansammlung von Funktionen eine Klasse sein?</p>
</blockquote>
<p>nicht notwendigerweise</p>
<p>normalerweise würde ich das in einen namespace stecken.<br />
wenn einige der funktionen &quot;privat&quot; sein sollen, dann kommen die in ein .cpp file, in einen anonymen namespace.<br />
wenn sie in mehreren .cpp file gebraucht werden dann sind die entweder nicht &quot;privat&quot; und kommen ganz normal in den namespace, oder sie kommen in einen &quot;detail&quot; namespace.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907310</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 05 Jun 2010 13:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to Geschmacksfrage: Ist ein Algorithmus eine Klasse? on Sat, 05 Jun 2010 18:17:39 GMT]]></title><description><![CDATA[<p>brotbernd schrieb:</p>
<blockquote>
<p>Auch wenn Du deine Algorithmen polymorph verwenden möchtest benötigst du Klassen.</p>
</blockquote>
<p>Stimmt doch gar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1907438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1907438</guid><dc:creator><![CDATA[hahahahaha]]></dc:creator><pubDate>Sat, 05 Jun 2010 18:17:39 GMT</pubDate></item></channel></rss>