<?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[designfrage]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>ich habe eine oberklasse für dienste, welche von allen diensten in meinen system implementiert wird. diese stellt zwei methoden bereit:</p>
<pre><code class="language-cpp">send(MessageTypA &amp; msg, Addr &amp; addr);
send(BaseMessageTyp &amp; msg, Addr &amp; addr);
</code></pre>
<p>nun wird von einer unterklasse U die methode send(MessageTypA, Addr addr); als dienst implementiert. in dieser methode soll die nachricht letztlich über send(BaseMessageTyp, Addr addr); versendet werden. nun muß ich doch in der send methode der klasse U beim aufruf von sent die MessageTypA zu BaseMessagTyp casten, damit dies richtig erfolgt. ist das so ok, oder gibt es da was eleganteres?</p>
<p>sven.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316764/designfrage</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 17:15:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316764.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 15 May 2013 14:41:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to designfrage on Wed, 15 May 2013 14:41:11 GMT]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>ich habe eine oberklasse für dienste, welche von allen diensten in meinen system implementiert wird. diese stellt zwei methoden bereit:</p>
<pre><code class="language-cpp">send(MessageTypA &amp; msg, Addr &amp; addr);
send(BaseMessageTyp &amp; msg, Addr &amp; addr);
</code></pre>
<p>nun wird von einer unterklasse U die methode send(MessageTypA, Addr addr); als dienst implementiert. in dieser methode soll die nachricht letztlich über send(BaseMessageTyp, Addr addr); versendet werden. nun muß ich doch in der send methode der klasse U beim aufruf von sent die MessageTypA zu BaseMessagTyp casten, damit dies richtig erfolgt. ist das so ok, oder gibt es da was eleganteres?</p>
<p>sven.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323563</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Wed, 15 May 2013 14:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to designfrage on Wed, 15 May 2013 15:32:40 GMT]]></title><description><![CDATA[<p>sven_ schrieb:</p>
<blockquote>
<p>nun muß ich doch in der send methode der klasse U beim aufruf von sent die MessageTypA zu BaseMessagTyp casten, damit dies richtig erfolgt.</p>
</blockquote>
<p>Nein, Upcasts funktionieren implizit.</p>
<p>&lt;<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    />&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323574</guid><dc:creator><![CDATA[glühbirne]]></dc:creator><pubDate>Wed, 15 May 2013 15:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to designfrage on Wed, 15 May 2013 15:43:47 GMT]]></title><description><![CDATA[<p>Wie soll dies gehen? Die Oberklasse hat beide Methoden, wenn ich den Cast wegnehme (habs probiert), bekomme ich eine Endlosrekursion, da die abgeleitete Klasse ja nicht weiß, das die Oberklasse in dieser Methode auf die abgeleitete Klasse zeigt. Dachte halt, da gibt es nen schöneres Pattern oder so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323579</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Wed, 15 May 2013 15:43:47 GMT</pubDate></item><item><title><![CDATA[Reply to designfrage on Wed, 15 May 2013 15:57:37 GMT]]></title><description><![CDATA[<p>Zeig mal etwas mehr Code.</p>
<p>Vorallem die Deklarationen der beiden Methoden in Deinen Klassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323584</guid><dc:creator><![CDATA[MichelRT]]></dc:creator><pubDate>Wed, 15 May 2013 15:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to designfrage on Thu, 16 May 2013 09:40:07 GMT]]></title><description><![CDATA[<p>sven_ schrieb:</p>
<blockquote>
<p>Wie soll dies gehen? Die Oberklasse hat beide Methoden, wenn ich den Cast wegnehme (habs probiert), bekomme ich eine Endlosrekursion, da die abgeleitete Klasse ja nicht weiß, das die Oberklasse in dieser Methode auf die abgeleitete Klasse zeigt. Dachte halt, da gibt es nen schöneres Pattern oder so.</p>
</blockquote>
<p>Und, ist die Oberklasse wenigstens abstrakt?<br />
Casts auf Zeiger/Referenzen/Funktionen/Methoden/Klassen sind Scheiße und garantiert kein brauchbares Pattern.<br />
Implementiere send an den Messagetypen direkt oder an Vertreterklassen der Messagetypen, die du evtl. wegen des Interface/Kapselungsgedankens implementiert hast.<br />
Das kommt einer OOP eher näher, da du Objekte in den Vordergrund beim Design stellst und eben nicht die Funktionalität.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323683</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Thu, 16 May 2013 09:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to designfrage on Thu, 16 May 2013 10:23:55 GMT]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>ich muß gerade feststellen, dass mein Design generell etwas blöd ist, da es leicht falsch verwendet werden kann. Daher will ich an dieser Stelle mal genereller Fragen, wie ihr folgendes Problem lösen würdet. Es gibt eine Oberklasse Service, von der alle anderen Dienste ableiten. Jeder Dienst soll einfach eine Nachricht definieren können, welche vom NachrichtenTypA ableitet, und diesen dann über die send(NachrichtenTypA msg, Address addr) versenden.</p>
<p>Nun gibt es halt noch einen Dienst, der genau den Transportservice für diesen NachrichtenTypA anbietet. Dieser soll also durch send() automatisch aufgerufen werden.</p>
<p>Neben diesen Diensten, soll allerdings jeder Dienst noch ein eigenes Transportprotokoll implementieren können. Dazu stellt die Oberklasse Service auch noch eine send Methode bereit, welche den BasisNachrichtenTyp akzeptiert. NachrichtenTypA ist genau vom BasisNachrichtenTyp abgeleitet.</p>
<p>Wie würdet ihr dies modellieren??? Verständlich überhaupt was ich meine?</p>
<p>Gruß</p>
<p>sven_</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323703</guid><dc:creator><![CDATA[sven_]]></dc:creator><pubDate>Thu, 16 May 2013 10:23:55 GMT</pubDate></item><item><title><![CDATA[Reply to designfrage on Thu, 16 May 2013 10:32:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Es gibt eine Oberklasse Service, von der alle anderen Dienste ableiten ...</p>
</blockquote>
<p>Das ist keine Problembeschreibung, du legst nur deinen Ansatz dar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323704</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Thu, 16 May 2013 10:32:22 GMT</pubDate></item></channel></rss>